Unterstützung für die Verbesserung dieser Seite beitragen
Die vorliegende Übersetzung wurde maschinell erstellt. Im Falle eines Konflikts oder eines Widerspruchs zwischen dieser übersetzten Fassung und der englischen Fassung (einschließlich infolge von Verzögerungen bei der Übersetzung) ist die englische Fassung maßgeblich.
Um zu diesem Benutzerhandbuch beizutragen, wählen Sie den GitHub Link Diese Seite bearbeiten unter, der sich im rechten Bereich jeder Seite befindet.
Die vorliegende Übersetzung wurde maschinell erstellt. Im Falle eines Konflikts oder eines Widerspruchs zwischen dieser übersetzten Fassung und der englischen Fassung (einschließlich infolge von Verzögerungen bei der Übersetzung) ist die englische Fassung maßgeblich.
Probleme mit Kro-Funktionen beheben
Anmerkung
Die EKS-Funktionen werden vollständig verwaltet und außerhalb Ihres Clusters ausgeführt. Sie haben keinen direkten Zugriff auf Controller-Namespaces. Sie können die Controller-Protokollübermittlung konfigurieren, um Einblick in das Controller-Verhalten zu erhalten. Siehe Zugriff auf EKS Capabilities Controller-Protokolle. Die Problembehandlung konzentriert sich auf den Zustand der Funktionen, die RBAC-Konfiguration und den Ressourcenstatus.
Die Funktion ist AKTIV, funktioniert aber ResourceGraphDefinitions nicht
Wenn für Ihre Kro-Funktion ein ACTIVE Status angezeigt wird, aber ResourceGraphDefinitions keine zugrunde liegenden Ressourcen erstellt werden, überprüfen Sie den Status der Fähigkeit, die RBAC-Berechtigungen und den Ressourcenstatus.
Überprüfe den Zustand der Fähigkeiten:
Sie können Probleme mit dem Status und dem Status von Fähigkeiten in der EKS-Konsole oder mithilfe der AWS CLI anzeigen.
Konsole:
-
Öffnen Sie die Amazon EKS-Konsole unter https://console.aws.amazon.com/eks/home #/clusters.
-
Wählen Sie Ihren Cluster-Namen aus.
-
Wählen Sie den Registerkarte Beobachtbarkeit.
-
Wählen Sie Cluster überwachen aus.
-
Wählen Sie die Registerkarte „Funktionen“, um den Zustand und den Status aller Funktionen anzuzeigen.
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
Häufige Ursachen:
-
RBAC-Berechtigungen fehlen: Kro fehlen die Berechtigungen, um die zugrunde liegenden Kubernetes-Ressourcen zu erstellen
-
Ungültige CEL-Ausdrücke: Syntaxfehler in ResourceGraphDefinition
-
Ressourcenabhängigkeiten: Die abhängigen Ressourcen sind nicht bereit
-
Schemavalidierung: Die Instanz entspricht nicht den RGD-Schemaanforderungen
Überprüfen Sie die RBAC-Berechtigungen:
# Check if capability has cluster admin policy kubectl get accessentry -A | grep kro
Wenn die Fähigkeit nicht über die erforderlichen Berechtigungen verfügt, verknüpfen Sie sie AmazonEKSClusterAdminPolicy mit dem Zugriffseintrag der Kro-Fähigkeit, oder erstellen Sie restriktivere RBAC-Richtlinien für den Produktionsgebrauch. Details dazu finden Sie unter Kro-Berechtigungen konfigurieren.
Status überprüfen: 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 haben drei wichtige Statusbedingungen:
-
ResourceGraphAccepted- Ob das RGD die Validierung bestanden hat (CEL-Syntax, Typprüfung, Existenz von Feldern) -
KindReady- Ob die CRD für Ihre benutzerdefinierte API generiert und registriert wurde -
ControllerReady- Ob kro aktiv nach Instanzen Ihrer benutzerdefinierten API Ausschau hält
Falls ja ResourceGraphAcceptedFalse, überprüfe die Bedingungsmeldung auf Validierungsfehler wie unbekannte Felder, Typkonflikte oder zirkuläre Abhängigkeiten.
Instanzen wurden erstellt, aber die zugrunde liegenden Ressourcen werden nicht angezeigt
Wenn benutzerdefinierte Ressourceninstanzen existieren, die zugrunde liegenden Kubernetes-Ressourcen (Bereitstellungen, Dienste ConfigMaps) jedoch nicht erstellt werden, überprüfen Sie, ob Kro über Berechtigungen verfügt, und suchen Sie nach Kompositionsfehlern.
Überprüfen Sie den Instanzstatus:
# Describe the instance (replace with your custom resource kind and name) kubectl describecustom-kind my-instance# View instance events kubectl get events --field-selector involvedObject.name=my-instance# Check instance status conditions kubectl getcustom-kind my-instance-o jsonpath='{.status.conditions}' # Check instance state kubectl getcustom-kind my-instance-o jsonpath='{.status.state}'
Instanzen haben ein state Feld, das den Status auf hoher Ebene anzeigt:
-
ACTIVE- Die Instanz wird erfolgreich ausgeführt -
IN_PROGRESS- Die Instanz wird verarbeitet oder abgeglichen -
FAILED- Die Instanz konnte nicht abgeglichen werden -
DELETING- Die Instanz wird gelöscht -
ERROR- Bei der Verarbeitung ist ein Fehler aufgetreten
Für Instanzen gelten außerdem vier Statusbedingungen:
-
InstanceManaged- Finalizer und Labels sind richtig eingestellt -
GraphResolved- Das Laufzeitdiagramm wurde erstellt und die Ressourcen wurden aufgelöst -
ResourcesReady- Alle Ressourcen wurden erstellt und sind bereit -
Ready— Gesamtzustand der Instanz (wird erst erreichtTrue, wenn alle Unterbedingungen erfüllt sindTrue)
Konzentrieren Sie sich auf den Ready Zustand, um den Zustand der Instanz zu ermitteln. ReadyIst dies der False Fall, überprüfen Sie die Unterbedingungen, um festzustellen, welche Phase fehlgeschlagen ist.
Überprüfen Sie die RBAC-Berechtigungen:
Die Kro-Funktion benötigt Berechtigungen, um die zugrunde liegenden Kubernetes-Ressourcen zu erstellen, die in Ihrem definiert sind. ResourceGraphDefinitions
# Check if the capability has the AmazonEKSClusterAdminPolicy kubectl get accessentry -A | grep kro
Wenn Berechtigungen fehlen, verknüpfen Sie diese AmazonEKSClusterAdminPolicy mit dem Zugriffseintrag der Kro-Funktion oder erstellen Sie restriktivere RBAC-Richtlinien für den Produktionsgebrauch. Details dazu finden Sie unter Kro-Berechtigungen konfigurieren.
Fehler beim CEL-Ausdruck
CEL-Ausdrucksfehler werden bei der ResourceGraphDefinition Erstellung erkannt, nicht bei der Erstellung von Instanzen. kro validiert die gesamte CEL-Syntax, überprüft Ausdrücke anhand von Kubernetes-Schemas und überprüft die Existenz von Feldern, wenn Sie das RGD erstellen.
Häufige CEL-Validierungsfehler:
-
Undefinierter Feldverweis: Verweis auf ein Feld, das im Schema oder in der Ressource nicht existiert
-
Typkonflikt: Der Ausdruck gibt einen falschen Typ zurück (z. B. eine Zeichenfolge, bei der eine Ganzzahl erwartet wird)
-
Ungültige Syntax: Fehlende Klammern, Anführungszeichen oder Operatoren im CEL-Ausdruck
-
Unbekannter Ressourcentyp: Verweist auf eine CRD, die im Cluster nicht existiert
Überprüfen Sie den RGD-Validierungsstatus:
# Check if RGD was accepted kubectl get resourcegraphdefinitionmy-rgd-o jsonpath='{.status.conditions[?(@.type=="ResourceGraphAccepted")]}' # View detailed validation errors kubectl describe resourcegraphdefinitionmy-rgd
Wenn ja ResourceGraphAcceptedFalse, enthält die Zustandsmeldung den Validierungsfehler.
Beispiel für gültige CEL-Ausdrücke:
# 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}
Ressourcenabhängigkeiten werden nicht aufgelöst
kro leitet automatisch Abhängigkeiten aus CEL-Ausdrücken ab und erstellt Ressourcen in der richtigen Reihenfolge. Wenn Ressourcen nicht wie erwartet erstellt werden, überprüfen Sie die Reihenfolge der Abhängigkeiten und die Ressourcenbereitschaft.
Berechnete Erstellungsreihenfolge anzeigen:
# See the order kro will create resources kubectl get resourcegraphdefinitionmy-rgd-o jsonpath='{.status.topologicalOrder}'
Dies zeigt die berechnete Reihenfolge auf der Grundlage von CEL-Ausdrücken zwischen Ressourcen.
Überprüfen Sie die Ressourcenbereitschaft:
# View instance status to see which resources are ready kubectl getcustom-kind my-instance-o jsonpath='{.status}' # Check specific resource status kubectl get deploymentmy-deployment-o jsonpath='{.status.conditions}'
ReadyWenn-Bedingungen überprüfen (falls verwendet):
Das Feld readyWhen ist optional. Wenn nicht angegeben, werden Ressourcen sofort nach der Erstellung als bereit betrachtet. Wenn Sie readyWhen Bedingungen definiert haben, stellen Sie sicher, dass diese die Ressourcenbereitschaft korrekt überprüfen:
resources: - id: deployment readyWhen: - ${deployment.status.availableReplicas == deployment.spec.replicas}
Überprüfen Sie die Ereignisse in Bezug auf Ressourcen:
# View events for the underlying resources kubectl get events -nnamespace--sort-by='.lastTimestamp'
Fehler bei der Schemaüberprüfung
Wenn Instanzen aufgrund von Fehlern bei der Schemaüberprüfung nicht erstellt werden können, stellen Sie sicher, dass die Instanz den RGD-Schemaanforderungen entspricht.
Überprüfen Sie die Validierungsfehler:
# Attempt to create instance and view error kubectl apply -f instance.yaml # View existing instance validation status kubectl describecustom-kind my-instance| grep -A 5 "Validation"
Häufige Probleme bei der Validierung:
-
Erforderliche Felder fehlen: Die Instanz stellt nicht alle erforderlichen Schemafelder bereit
-
Typkonflikt: Es wird eine Zeichenfolge angegeben, bei der eine Ganzzahl erwartet wird
-
Ungültiger Enum-Wert: Es wird ein Wert verwendet, der nicht in der Liste der zulässigen Werte enthalten ist
-
Musterkonflikt: Die Zeichenfolge entspricht nicht dem Regex-Muster
Überprüfen Sie das RGD-Schema:
# View the schema definition kubectl get resourcegraphdefinitionmy-rgd-o jsonpath='{.spec.schema}'
Stellen Sie sicher, dass Ihre Instance alle erforderlichen Felder mit den richtigen Typen bereitstellt.
Nächste Schritte
-
Überlegungen zu Kro für EKS— Überlegungen und bewährte Verfahren im Bereich Kro
-
Kro-Berechtigungen konfigurieren- Konfigurieren Sie RBAC für Plattform- und Anwendungsteams
-
Kro-Konzepte- Verstehen Sie die Kro-Konzepte und den Ressourcenlebenszyklus
-
Fehlerbehebung bei EKS-Funktionen- Allgemeine Hinweise zur Problembehebung bei Fähigkeiten