Résoudre les problèmes liés aux fonctionnalités Kro - Amazon EKS

Aidez à améliorer cette page

Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.

Pour contribuer à ce guide de l'utilisateur, cliquez sur le GitHub lien Modifier cette page sur qui se trouve dans le volet droit de chaque page.

Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.

Résoudre les problèmes liés aux fonctionnalités Kro

Cette rubrique fournit des conseils de dépannage relatifs à la fonctionnalité EKS pour kro, notamment les vérifications de l'état des fonctionnalités, les autorisations RBAC, les erreurs d'expression CEL et les problèmes de composition des ressources.

Note

Les fonctionnalités EKS sont entièrement gérées et exécutées en dehors de votre cluster. Vous n'avez pas accès aux journaux du contrôleur ni à l'espace de kro-system noms. Le dépannage se concentre sur l'état des capacités, la configuration RBAC et l'état des ressources.

La fonctionnalité est ACTIVE mais ResourceGraphDefinitions ne fonctionne pas

Si votre capacité Kro affiche un ACTIVE état mais ResourceGraphDefinitions ne crée pas de ressources sous-jacentes, vérifiez l'état de la fonctionnalité, les autorisations RBAC et l'état des ressources.

Vérifiez l'état de santé des capacités :

Vous pouvez consulter les problèmes liés à l'état et à l'état des fonctionnalités dans la console EKS ou à l'aide de la AWS CLI.

Console :

  1. Ouvrez la console Amazon EKS à l'adresse https://console.aws.amazon.com/eks/home#/clusters.

  2. Sélectionnez le nom de votre cluster.

  3. Sélectionnez l’onglet Observabilité.

  4. Sélectionnez Surveiller le cluster.

  5. Choisissez l'onglet Fonctionnalités pour afficher l'état et l'état de toutes les fonctionnalités.

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

Causes courantes :

  • Permissions RBAC manquantes : kro n'a pas les autorisations nécessaires pour créer des ressources Kubernetes sous-jacentes

  • Expressions CEL non valides : erreurs de syntaxe dans ResourceGraphDefinition

  • Dépendances des ressources : les ressources dépendantes ne sont pas prêtes

  • Validation du schéma : l'instance ne répond pas aux exigences du schéma RGD

Vérifiez les autorisations RBAC :

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

Si la fonctionnalité ne dispose pas des autorisations requises, associez-la à l'AmazonEKSClusterAdminPolicyentrée d'accès de la fonctionnalité kro ou créez des politiques RBAC plus restrictives pour une utilisation en production. Consultez Configurer les autorisations Kro pour plus de détails.

Vérifier ResourceGraphDefinition le statut :

# 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 ont trois conditions de statut clés :

  • ResourceGraphAccepted- Si le RGD a réussi la validation (syntaxe CEL, vérification de type, existence du champ)

  • KindReady- Si le CRD de votre API personnalisée a été généré et enregistré

  • ControllerReady- Si kro surveille activement les instances de votre API personnalisée

Si tel ResourceGraphAccepted est le casFalse, vérifiez que le message de condition ne contient pas d'erreurs de validation, telles que des champs inconnus, des incohérences de type ou des dépendances circulaires.

Instances créées mais les ressources sous-jacentes n'apparaissent pas

Si des instances de ressources personnalisées existent mais que les ressources Kubernetes sous-jacentes (déploiements, services ConfigMaps) ne sont pas créées, vérifiez que kro dispose des autorisations nécessaires et vérifiez qu'il n'y a pas d'erreurs de composition.

Vérifiez l'état de l'instance :

# 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}'

Les instances possèdent un state champ indiquant un statut élevé :

  • ACTIVE- L'instance est en cours d'exécution avec succès

  • IN_PROGRESS- L'instance est en cours de traitement ou de réconciliation

  • FAILED- L'instance n'a pas pu être réconciliée

  • DELETING- L'instance est en cours de suppression

  • ERROR- Une erreur s'est produite lors du traitement

Les instances sont également soumises à quatre conditions de statut :

  • InstanceManaged- Les finaliseurs et les étiquettes sont correctement définis

  • GraphResolved- Graphe d'exécution créé et ressources résolues

  • ResourcesReady- Toutes les ressources créées et prêtes

  • Ready- Santé globale de l'instance (elle ne l'est que True lorsque toutes les sous-conditions le sontTrue)

Concentrez-vous sur la Ready condition pour déterminer l'état de santé de l'instance. Si tel Ready est le casFalse, vérifiez les sous-conditions pour identifier la phase qui a échoué.

Vérifiez les autorisations RBAC :

La fonctionnalité Kro nécessite des autorisations pour créer les ressources Kubernetes sous-jacentes définies dans votre. ResourceGraphDefinitions

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

Si des autorisations sont manquantes, AmazonEKSClusterAdminPolicy associez-les à l'entrée d'accès de la fonctionnalité kro ou créez des politiques RBAC plus restrictives pour une utilisation en production. Consultez Configurer les autorisations Kro pour plus de détails.

Erreurs d'expression CEL

Les erreurs d'expression CEL sont détectées au moment de ResourceGraphDefinition la création, et non lors de la création des instances. kro valide toute la syntaxe des CEL, vérifie le type des expressions par rapport aux schémas Kubernetes et vérifie l'existence des champs lorsque vous créez le RGD.

Erreurs de validation CEL courantes :

  • Référence de champ non définie : référence à un champ qui n'existe pas dans le schéma ou dans la ressource

  • Incompatibilité de type : l'expression renvoie un type incorrect (par exemple, une chaîne où un entier est attendu)

  • Syntaxe non valide : crochets, guillemets ou opérateurs manquants dans l'expression CEL

  • Type de ressource inconnu : Référencement d'un CRD qui n'existe pas dans le cluster

Vérifiez l'état de validation du 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

Si tel ResourceGraphAccepted est le casFalse, le message de condition contient l'erreur de validation.

Exemples d'expressions CEL valides :

# 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}

Les dépendances des ressources ne sont pas résolues

kro déduit automatiquement les dépendances à partir des expressions CEL et crée les ressources dans le bon ordre. Si les ressources ne sont pas créées comme prévu, vérifiez l'ordre des dépendances et l'état de préparation des ressources.

Afficher l'ordre de création calculé :

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

Cela montre l'ordre calculé en fonction des références d'expression CEL entre les ressources.

Vérifiez l'état de préparation des ressources :

# 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}'

Vérifiez les conditions ReadyWhen (si elles sont utilisées) :

Le champ readyWhen est facultatif. Si elles ne sont pas spécifiées, les ressources sont considérées comme prêtes immédiatement après leur création. Si vous avez défini readyWhen des conditions, vérifiez qu'elles vérifient correctement l'état de préparation des ressources :

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

Vérifiez les événements liés aux ressources :

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

Défaillances de validation du schéma

Si les instances ne sont pas créées en raison d'erreurs de validation du schéma, vérifiez que l'instance répond aux exigences du schéma RGD.

Vérifiez les erreurs de validation :

# 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"

Problèmes de validation courants :

  • Champs obligatoires manquants : l'instance ne fournit pas tous les champs de schéma obligatoires

  • Incompatibilité de type : fourniture d'une chaîne où un entier est attendu

  • Valeur d'énumération non valide : utilisation d'une valeur ne figurant pas dans la liste autorisée

  • Incompatibilité du modèle : la chaîne ne correspond pas au modèle regex

Passez en revue le schéma RGD :

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

Assurez-vous que votre instance fournit tous les champs obligatoires avec les types corrects.

Étapes suivantes