Résoudre les problèmes liés aux fonctionnalités ACK - 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 ACK

Cette rubrique fournit des conseils de dépannage relatifs à la fonctionnalité EKS pour ACK, notamment les vérifications de l'état des fonctionnalités, la vérification de l'état des ressources et les problèmes d'autorisation IAM.

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 ni aux espaces de noms des contrôleurs. Le dépannage se concentre sur l'état des capacités, l'état des ressources et la configuration IAM.

La capacité est ACTIVE mais les ressources ne sont pas créées

Si votre fonctionnalité ACK affiche un ACTIVE état mais que les ressources n'y sont pas créées AWS, vérifiez l'état de la fonctionnalité, l'état des ressources et les autorisations IAM.

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 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-ack # Look for issues in the health section

Causes courantes :

  • Autorisations IAM manquantes : le rôle de capacité ne dispose pas d'autorisations pour le service AWS

  • Mauvais espace de noms : ressources créées dans l'espace de noms sans sélecteur approprié IAMRole

  • Spécification de ressource non valide : vérifiez les conditions d'état des ressources pour détecter les erreurs de validation

  • Limitation de l'API : les limites de débit des AWS API sont atteintes

  • Webhooks d'admission : webhooks d'admission empêchant le contrôleur de corriger le statut des ressources

Vérifiez l'état des ressources :

# Describe the resource to see conditions and events kubectl describe bucket my-bucket -n default # Look for status conditions kubectl get bucket my-bucket -n default -o jsonpath='{.status.conditions}' # View resource events kubectl get events --field-selector involvedObject.name=my-bucket -n default

Vérifiez les autorisations IAM :

# View the Capability Role's policies aws iam list-attached-role-policies --role-name my-ack-capability-role aws iam list-role-policies --role-name my-ack-capability-role # Get specific policy details aws iam get-role-policy --role-name my-ack-capability-role --policy-name policy-name

Ressources créées dans Kubernetes AWS mais non affichées

ACK suit uniquement les ressources qu'il crée via les manifestes Kubernetes. Pour gérer les AWS ressources existantes avec ACK, utilisez la fonctionnalité d'adoption.

apiVersion: s3.services.k8s.aws/v1alpha1 kind: Bucket metadata: name: existing-bucket annotations: services.k8s.aws/adoption-policy: "adopt-or-create" spec: name: my-existing-bucket-name

Pour en savoir plus sur l'adoption des ressources, voirConcepts d'ACK.

Les ressources entre comptes ne sont pas créées

Si aucune ressource n'est créée dans un AWS compte cible lors de l'utilisation des sélecteurs de rôle IAM, vérifiez la relation de confiance et la configuration du IAMRole sélecteur.

Vérifiez la relation de confiance :

# Check the trust policy in the target account role aws iam get-role --role-name cross-account-ack-role --query 'Role.AssumeRolePolicyDocument'

La politique de confiance doit permettre au rôle de capacité du compte source de l'assumer.

Confirmez la configuration IAMRole du sélecteur :

# List IAMRoleSelectors (cluster-scoped) kubectl get iamroleselector # Describe specific selector kubectl describe iamroleselector my-selector

Vérifiez l'alignement de l'espace de noms :

IAMRoleLes sélecteurs sont des ressources limitées à un cluster mais ciblent des espaces de noms spécifiques. Assurez-vous que vos ressources ACK se trouvent dans un espace de noms qui correspond au IAMRole sélecteur d'espace de noms du sélecteur :

# Check resource namespace kubectl get bucket my-cross-account-bucket -n production # List all IAMRoleSelectors (cluster-scoped) kubectl get iamroleselector # Check which namespace the selector targets kubectl get iamroleselector my-selector -o jsonpath='{.spec.namespaceSelector}'

Vérifiez la condition IAMRole sélectionnée :

Vérifiez que le IAMRole sélecteur a bien été mis en correspondance avec votre ressource en vérifiant la ACK.IAMRoleSelected condition suivante :

# Check if IAMRoleSelector was matched kubectl get bucket my-cross-account-bucket -n production -o jsonpath='{.status.conditions[?(@.type=="ACK.IAMRoleSelected")]}'

Si la condition est False ou absente, le IAMRole sélecteur d'espace de noms du sélecteur ne correspond pas à l'espace de noms de la ressource. Vérifiez que le sélecteur namespaceSelector correspond aux libellés d'espace de noms de votre ressource.

Vérifiez les autorisations relatives aux rôles de capacité :

Le rôle de capacité nécessite une sts:AssumeRole autorisation pour le rôle de compte cible :

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": "sts:AssumeRole", "Resource": "arn:aws:iam::[.replaceable]`444455556666`:role/[.replaceable]`cross-account-ack-role`" } ] }

Pour une configuration détaillée entre comptes, voirConfigurer les autorisations ACK.

Étapes suivantes