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 auf, 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
Dieses Thema enthält Anleitungen zur Fehlerbehebung für die EKS-Funktion für KRO, einschließlich Funktionsprüfungen, RBAC-Berechtigungen, CEL-Ausdrucksfehler und Probleme bei der Ressourcenzusammensetzung.
Anmerkung
EKS-Funktionen werden vollständig verwaltet und außerhalb Ihres Clusters ausgeführt. Sie haben keinen Zugriff auf Controller-Logs oder den kro-system Namespace. Die Fehlerbehebung konzentriert sich auf den Funktionsstatus, die RBAC-Konfiguration und den Ressourcenstatus.
Die Funktion ist AKTIV, funktioniert aber ResourceGraphDefinitions nicht
Wenn Ihre Kro-Fähigkeit ACTIVE den Status anzeigt, aber ResourceGraphDefinitions keine zugrunde liegenden Ressourcen erstellt werden, überprüfen Sie den Zustand der Fähigkeit, die RBAC-Berechtigungen und den Ressourcenstatus.
Überprüfen Sie den Zustand der Fähigkeit:
Sie können Funktionszustands- und Statusprobleme in der EKS-Konsole oder über die AWS CLI anzeigen.
Konsole:
-
Öffnen Sie die Amazon EKS-Konsole unter https://console.aws.amazon.com/eks/home#/clusters
. -
Wählen Sie Ihren Clusternamen 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 hat keine Berechtigungen, um zugrunde liegende Kubernetes-Ressourcen zu erstellen
-
Ungültige CEL-Ausdrücke: Syntaxfehler in ResourceGraphDefinition
-
Ressourcenabhängigkeiten: Abhängige 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 Funktion nicht über die erforderlichen Berechtigungen verfügt, verknüpfen Sie sie 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.
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 des Felds) -
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üfen Sie die Zustandsmeldung auf Validierungsfehler wie unbekannte Felder, nicht übereinstimmende Typen 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 die erforderlichen Berechtigungen verfügt, und überprüfen Sie, ob Kompositionsfehler vorliegen.
Überprüfen Sie den Instanzstatus:
# Describe the instance (replace with your custom resource kind and name) kubectl describecustom-kindmy-instance# View instance events kubectl get events --field-selector involvedObject.name=my-instance# Check instance status conditions kubectl getcustom-kindmy-instance-o jsonpath='{.status.conditions}' # Check instance state kubectl getcustom-kindmy-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
Instanzen haben außerdem vier Statusbedingungen:
-
InstanceManaged- Finalizer und Labels sind richtig gesetzt -
GraphResolved- Laufzeitdiagramm erstellt und Ressourcen aufgelöst -
ResourcesReady- Alle Ressourcen wurden erstellt und sind bereit -
Ready- Allgemeiner Zustand der Instanz (wird nur erreichtTrue, wenn alle Unterbedingungen erfüllt sindTrue)
Konzentrieren Sie sich auf den Ready Zustand, um den Zustand der Instanz zu bestimmen. Falls Ready jaFalse, überprüfen Sie anhand der Unterbedingungen, welche Phase fehlgeschlagen ist.
Überprüfen Sie die RBAC-Berechtigungen:
Für die Kro-Funktion sind Berechtigungen erforderlich, 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 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.
Fehler bei CEL-Ausdrücken
Fehler bei CEL-Ausdrücken werden bei der ResourceGraphDefinition Erstellung erkannt, nicht bei der Erstellung von Instances. Kro validiert die gesamte CEL-Syntax, überprüft Ausdrücke anhand von Kubernetes-Schemas und überprüft das Vorhandensein von Feldern, wenn Sie die RGD erstellen.
Häufige Fehler bei der CEL-Validierung:
-
Undefinierter Feldverweis: Verweisen auf ein Feld, das im Schema oder in der Ressource nicht vorhanden ist
-
Typkonflikt: Der Ausdruck gibt einen falschen Typ zurück (z. B. eine Zeichenfolge, bei der eine Ganzzahl erwartet wurde)
-
Ungültige Syntax: Fehlende Klammern, Anführungszeichen oder Operatoren im CEL-Ausdruck
-
Unbekannter Ressourcentyp: Verweist auf eine CRD, die im Cluster nicht vorhanden ist
Ü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
Falls 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 Verfügbarkeit der Ressourcen.
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-Ausdrucksverweisen zwischen Ressourcen.
Überprüfen Sie die Verfügbarkeit der Ressourcen:
# View instance status to see which resources are ready kubectl getcustom-kindmy-instance-o jsonpath='{.status}' # Check specific resource status kubectl get deploymentmy-deployment-o jsonpath='{.status.conditions}'
Überprüfen Sie die ReadyWhen-Bedingungen (falls verwendet):
Das Feld readyWhen ist optional. Wenn nicht angegeben, gelten Ressourcen unmittelbar nach der Erstellung als bereit. Wenn Sie readyWhen Bedingungen definiert haben, stellen Sie sicher, dass diese korrekt prüfen, ob die Ressourcen bereit sind:
resources: - id: deployment readyWhen: - ${deployment.status.availableReplicas == deployment.spec.replicas}
Überprüfen Sie die Ressourcenereignisse:
# View events for the underlying resources kubectl get events -nnamespace--sort-by='.lastTimestamp'
Fehler bei der Schemavalidierung
Wenn Instanzen aufgrund von Fehlern bei der Schemavalidierung nicht erstellt werden können, überprüfen Sie, ob die Instanz die RGD-Schemaanforderungen erfüllt.
Überprüfen Sie die Validierungsfehler:
# Attempt to create instance and view error kubectl apply -f instance.yaml # View existing instance validation status kubectl describecustom-kindmy-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 bereitgestellt, bei der eine Ganzzahl erwartet wird
-
Ungültiger Aufzählungswert: Es wird ein Wert verwendet, der nicht in der Liste der zulässigen Werte steht
-
Musterkonflikt: Die Zeichenfolge stimmt nicht mit dem Regex-Muster überein
RGD-Schema überprüfen:
# View the schema definition kubectl get resourcegraphdefinitionmy-rgd-o jsonpath='{.spec.schema}'
Stellen Sie sicher, dass Ihre Instanz alle erforderlichen Felder mit den richtigen Typen bereitstellt.
Nächste Schritte
-
Überlegungen zu Kro für EKS- Überlegungen und bewährte Methoden zu KRO
-
Kro-Berechtigungen konfigurieren- Konfigurieren Sie RBAC für Plattform- und Anwendungsteams
-
Kro-Konzepte- Verstehen Sie die KRO-Konzepte und den Ressourcenlebenszyklus
-
Problembehebung bei EKS-Funktionen- Allgemeine Hinweise zur Problembehebung