Risolvi i problemi relativi alle funzionalità kro - Amazon EKS

Contribuisci a migliorare questa pagina

Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.

Per contribuire a questa guida per l'utente, scegli il GitHub link Modifica questa pagina nel riquadro destro di ogni pagina.

Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.

Risolvi i problemi relativi alle funzionalità kro

Questo argomento fornisce linee guida per la risoluzione dei problemi di EKS Capability for kro, compresi i controlli dello stato delle capacità, le autorizzazioni RBAC, gli errori di espressione CEL e i problemi di composizione delle risorse.

Nota

Le funzionalità EKS sono completamente gestite ed eseguite all'esterno del cluster. Non hai accesso ai log dei controller o al kro-system namespace. La risoluzione dei problemi si concentra sullo stato delle funzionalità, sulla configurazione RBAC e sullo stato delle risorse.

Le funzionalità sono ATTIVE ma ResourceGraphDefinitions non funzionano

Se la tua funzionalità kro mostra ACTIVE lo stato ma ResourceGraphDefinitions non stai creando risorse sottostanti, controlla lo stato della capacità, le autorizzazioni RBAC e lo stato delle risorse.

Verifica lo stato delle capacità:

È possibile visualizzare i problemi relativi allo stato e allo stato delle funzionalità nella console EKS o utilizzando la AWS CLI.

Console:

  1. Apri la console Amazon EKS a https://console.aws.amazon.com/eks/home#/clusters.

  2. Seleziona il nome del cluster.

  3. Scegli la scheda Osservabilità.

  4. Scegli Monitora cluster.

  5. Scegli la scheda Capacità per visualizzare lo stato e lo stato di tutte le funzionalità.

AWS CLI:

# View capability status and health aws eks describe-capability \ --region region-code \ --cluster-name my-cluster \ --capability-name my-kro # Look for issues in the health section

Cause comuni:

  • Autorizzazioni RBAC mancanti: kro non dispone delle autorizzazioni per creare le risorse Kubernetes sottostanti

  • Espressioni CEL non valide: errori di sintassi in ResourceGraphDefinition

  • Dipendenze dalle risorse: risorse dipendenti non pronte

  • Convalida dello schema: l'istanza non soddisfa i requisiti dello schema RGD

Verifica le autorizzazioni RBAC:

# Check if capability has cluster admin policy kubectl get accessentry -A | grep kro

Se la funzionalità non dispone delle autorizzazioni richieste, associala alla voce di accesso della AmazonEKSClusterAdminPolicy funzionalità kro o crea politiche RBAC più restrittive per l'uso in produzione. Per informazioni dettagliate, vedi Configura le autorizzazioni kro.

Verifica lo stato: ResourceGraphDefinition

# List all RGDs kubectl get resourcegraphdefinition # Describe specific RGD kubectl describe resourcegraphdefinition my-rgd # Check for validation errors kubectl get resourcegraphdefinition my-rgd -o jsonpath='{.status.conditions}'

ResourceGraphDefinitions hanno tre condizioni di stato chiave:

  • ResourceGraphAccepted- Se l'RGD ha superato la convalida (sintassi CEL, controllo del tipo, esistenza del campo)

  • KindReady- Se il CRD per l'API personalizzata è stato generato e registrato

  • ControllerReady- Se kro sta monitorando attivamente le istanze della tua API personalizzata

In caso ResourceGraphAccepted affermativoFalse, controllate il messaggio relativo alla condizione per eventuali errori di convalida, ad esempio campi sconosciuti, mancate corrispondenze tra i tipi o dipendenze circolari.

Istanze create ma le risorse sottostanti non vengono visualizzate

Se esistono istanze di risorse personalizzate ma le risorse Kubernetes sottostanti (Deployments, Services ConfigMaps) non vengono create, verifica che kro disponga delle autorizzazioni e verifica la presenza di errori di composizione.

Controlla lo stato dell'istanza:

# Describe the instance (replace with your custom resource kind and name) kubectl describe custom-kind my-instance # View instance events kubectl get events --field-selector involvedObject.name=my-instance # Check instance status conditions kubectl get custom-kind my-instance -o jsonpath='{.status.conditions}' # Check instance state kubectl get custom-kind my-instance -o jsonpath='{.status.state}'

Le istanze hanno un state campo che mostra lo stato di alto livello:

  • ACTIVE- L'istanza viene eseguita correttamente

  • IN_PROGRESS- L'istanza è in fase di elaborazione o riconciliazione

  • FAILED- Impossibile riconciliare l'istanza

  • DELETING- L'istanza viene eliminata

  • ERROR- Si è verificato un errore durante l'elaborazione

Le istanze hanno anche quattro condizioni di stato:

  • InstanceManaged- I finalizzatori e le etichette sono impostati correttamente

  • GraphResolved- Grafico di runtime creato e risorse risolte

  • ResourcesReady- Tutte le risorse create e pronte

  • Ready- Stato generale dell'istanza (lo diventa solo True quando tutte le condizioni secondarie lo sonoTrue)

Concentrati sulla Ready condizione per determinare lo stato dell'istanza. In caso Ready False affermativo, controlla le condizioni secondarie per identificare quale fase non è riuscita.

Verifica le autorizzazioni RBAC:

La funzionalità kro richiede le autorizzazioni per creare le risorse Kubernetes sottostanti definite nel tuo. ResourceGraphDefinitions

# Check if the capability has the AmazonEKSClusterAdminPolicy kubectl get accessentry -A | grep kro

Se mancano le autorizzazioni, associale alla voce di accesso della AmazonEKSClusterAdminPolicy funzionalità kro o crea politiche RBAC più restrittive per l'uso in produzione. Per informazioni dettagliate, vedi Configura le autorizzazioni kro.

Errori di espressione CEL

Gli errori delle espressioni CEL vengono rilevati al momento ResourceGraphDefinition della creazione, non al momento della creazione delle istanze. kro convalida tutta la sintassi CEL, controlla i tipi delle espressioni rispetto agli schemi Kubernetes e verifica l'esistenza dei campi quando crei l'RGD.

Errori comuni di convalida CEL:

  • Riferimento al campo non definito: riferimento a un campo che non esiste nello schema o nella risorsa

  • Mancata corrispondenza del tipo: l'espressione restituisce un tipo errato (ad esempio, stringa in cui è previsto un numero intero)

  • Sintassi non valida: parentesi, virgolette o operatori mancanti nell'espressione CEL

  • Tipo di risorsa sconosciuto: riferimento a un CRD che non esiste nel cluster

Verifica lo stato di convalida RGD:

# Check if RGD was accepted kubectl get resourcegraphdefinition my-rgd -o jsonpath='{.status.conditions[?(@.type=="ResourceGraphAccepted")]}' # View detailed validation errors kubectl describe resourcegraphdefinition my-rgd

In caso ResourceGraphAccepted False affermativo, il messaggio di condizione contiene l'errore di convalida.

Esempi di espressioni CEL valide:

# Reference schema field ${schema.spec.appName} # Conditional expression ${schema.spec.replicas > 1} # String template (expressions must return strings) name: "${schema.spec.appName}-service" # Standalone expression (can be any type) replicas: ${schema.spec.replicaCount} # Resource reference ${deployment.status.availableReplicas} # Optional field access (returns null if field doesn't exist) ${configmap.data.?DATABASE_URL}

Le dipendenze delle risorse non si risolvono

kro deduce automaticamente le dipendenze dalle espressioni CEL e crea le risorse nell'ordine corretto. Se le risorse non vengono create come previsto, controlla l'ordine di dipendenza e la disponibilità delle risorse.

Visualizza l'ordine di creazione calcolato:

# See the order kro will create resources kubectl get resourcegraphdefinition my-rgd -o jsonpath='{.status.topologicalOrder}'

Questo mostra l'ordine calcolato in base ai riferimenti delle espressioni CEL tra le risorse.

Verifica la disponibilità delle risorse:

# View instance status to see which resources are ready kubectl get custom-kind my-instance -o jsonpath='{.status}' # Check specific resource status kubectl get deployment my-deployment -o jsonpath='{.status.conditions}'

Verifica le condizioni ReadyWhen (se utilizzate):

Il campo readyWhen è facoltativo. Se non specificato, le risorse sono considerate pronte immediatamente dopo la creazione. Se hai definito readyWhen delle condizioni, verifica che controllino correttamente la disponibilità delle risorse:

resources: - id: deployment readyWhen: - ${deployment.status.availableReplicas == deployment.spec.replicas}

Controlla gli eventi relativi alle risorse:

# View events for the underlying resources kubectl get events -n namespace --sort-by='.lastTimestamp'

Errori di convalida dello schema

Se le istanze non vengono create a causa di errori di convalida dello schema, verifica che l'istanza soddisfi i requisiti dello schema RGD.

Controlla gli errori di convalida:

# Attempt to create instance and view error kubectl apply -f instance.yaml # View existing instance validation status kubectl describe custom-kind my-instance | grep -A 5 "Validation"

Problemi di convalida comuni:

  • Campi obbligatori mancanti: l'istanza non fornisce tutti i campi dello schema obbligatori

  • Mancata corrispondenza del tipo: fornisce una stringa dove è previsto un numero intero

  • Valore enum non valido: utilizzo di un valore non presente nell'elenco consentito

  • Mancata corrispondenza del modello: la stringa non corrisponde al modello regex

Rivedi lo schema RGD:

# View the schema definition kubectl get resourcegraphdefinition my-rgd -o jsonpath='{.spec.schema}'

Assicurati che l'istanza fornisca tutti i campi obbligatori con i tipi corretti.

Fasi successive