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 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
Note
Les fonctionnalités EKS sont entièrement gérées et exécutées en dehors de votre cluster. Vous n'avez pas d'accès direct aux espaces de noms des contrôleurs. Vous pouvez configurer la livraison du journal du contrôleur pour avoir une visibilité sur le comportement du contrôleur. Consultez Accédez aux journaux du contrôleur EKS Capabilities. Le dépannage se concentre sur l'état des fonctionnalités, la configuration RBAC et l'état des ressources.
La fonctionnalité est ACTIVE mais ResourceGraphDefinitions ne fonctionne pas
Si votre fonctionnalité KRO affiche un ACTIVE statut 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 des capacités :
Vous pouvez consulter les problèmes d'état et d'état des fonctionnalités dans la console EKS ou à l'aide de l' AWS interface de ligne de commande.
Console :
-
Ouvrez la console Amazon EKS à l'adresse https://console.aws.amazon.com/eks/home #/clusters.
-
Sélectionnez le nom de votre cluster.
-
Sélectionnez l’onglet Observabilité.
-
Sélectionnez Surveiller le cluster.
-
Cliquez sur l'onglet Capacité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 :
-
Autorisations 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 en matière de ressources : ressources dépendantes non prêtes
-
Validation du schéma : l'instance ne correspond 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.
ResourceGraphDefinition État de la vérification :
# 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 avoir trois conditions de statut clés :
-
ResourceGraphAccepted- Si le RGD a réussi la validation (syntaxe CEL, vérification de type, existence de champs) -
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 ResourceGraphAccepted c'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
S'il existe des instances de ressources personnalisées 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 les erreurs de composition.
Vérifiez l'état de l'instance :
# 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}'
Les instances disposent d'un state champ indiquant l'état de haut niveau :
-
ACTIVE- L'instance s'exécute correctement -
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 ont également 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- État général de l'instance (uniquementTruelorsque toutes les sous-conditions le sontTrue)
Concentrez-vous sur l'Readyétat pour déterminer l'état de santé de l'instance. Si Ready c'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, associez-les à 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.
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 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 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 resourcegraphdefinitionmy-rgd-o jsonpath='{.status.conditions[?(@.type=="ResourceGraphAccepted")]}' # View detailed validation errors kubectl describe resourcegraphdefinitionmy-rgd
Si ResourceGraphAccepted c'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 aux 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 de dépendance et l'état de préparation des ressources.
Afficher l'ordre de création calculé :
# See the order kro will create resources kubectl get resourcegraphdefinitionmy-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 getcustom-kind my-instance-o jsonpath='{.status}' # Check specific resource status kubectl get deploymentmy-deployment-o jsonpath='{.status.conditions}'
Vérifiez les conditions ReadyWhen (si elles sont utilisées) :
Le champ readyWhen est facultatif. Si ce n'est pas spécifié, 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 -nnamespace--sort-by='.lastTimestamp'
Échecs 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 describecustom-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 qui ne figure pas dans la liste autorisée
-
Incompatibilité de motif : la chaîne ne correspond pas au modèle regex
Révisez le schéma RGD :
# View the schema definition kubectl get resourcegraphdefinitionmy-rgd-o jsonpath='{.spec.schema}'
Assurez-vous que votre instance fournit tous les champs obligatoires avec les types corrects.
Étapes suivantes
-
considérations relatives à Kro pour EKS- considérations relatives au KRO et meilleures pratiques
-
Configurer les autorisations Kro- Configurer le RBAC pour les équipes chargées de la plateforme et de l'application
-
concepts kro- Comprendre les concepts KRO et le cycle de vie des ressources
-
Dépannage des fonctionnalités EKS- Conseils généraux pour résoudre les problèmes liés aux fonctionnalités