Résolution des problèmes dans Amazon EKS Connector - Amazon EKS

Aidez à améliorer cette page

Vous souhaitez contribuer à ce guide de l'utilisateur ? Faites défiler cette page vers le bas et sélectionnez Modifier cette page sur GitHub. Vos contributions aideront à améliorer notre guide de l'utilisateur pour tout le monde.

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ésolution des problèmes dans Amazon EKS Connector

Cette rubrique couvre certaines des erreurs les plus courantes que vous pouvez rencontrer lors de l'utilisation d'Amazon EKS Connector, y compris des instructions sur la façon de les résoudre et des solutions de contournement.

Dépannage de base

Cette section décrit les étapes à suivre pour diagnostiquer le problème s'il n'est pas clair.

Vérifier le statut d'Amazon EKS Connector

Vérifiez le statut d'Amazon EKS Connector.

kubectl get pods -n eks-connector

Inspecter les journaux d'Amazon EKS Connector

Le Pod Amazon EKS Connector se compose de trois conteneurs. Pour récupérer les journaux complets de tous ces conteneurs afin que vous puissiez les inspecter, exécutez les commandes suivantes :

  • connector-init

    kubectl logs eks-connector-0 --container connector-init -n eks-connector kubectl logs eks-connector-1 --container connector-init -n eks-connector
  • connector-proxy

    kubectl logs eks-connector-0 --container connector-proxy -n eks-connector kubectl logs eks-connector-1 --container connector-proxy -n eks-connector
  • connector-agent

    kubectl exec eks-connector-0 --container connector-agent -n eks-connector -- cat /var/log/amazon/ssm/amazon-ssm-agent.log kubectl exec eks-connector-1 --container connector-agent -n eks-connector -- cat /var/log/amazon/ssm/amazon-ssm-agent.log

Obtenir le nom effectif du cluster

Les clusters Amazon EKS sont identifiés de manière unique par clusterName dans un seul compte AWS et une seule Région AWS. Si vous avez plusieurs clusters connectés dans Amazon EKS, vous pouvez confirmer auprès de quel cluster Amazon EKS le cluster Kubernetes actuel est enregistré. Pour ce faire, saisissez la commande suivante pour connaître le clusterName du cluster actuel.

kubectl exec eks-connector-0 --container connector-agent -n eks-connector \ -- cat /var/log/amazon/ssm/amazon-ssm-agent.log | grep -m1 -oE "eks_c:[a-zA-Z0-9_-]+" | sed -E "s/^.*eks_c:([a-zA-Z0-9_-]+)_[a-zA-Z0-9]+.*$/\1/" kubectl exec eks-connector-1 --container connector-agent -n eks-connector \ -- cat /var/log/amazon/ssm/amazon-ssm-agent.log | grep -m1 -oE "eks_c:[a-zA-Z0-9_-]+" | sed -E "s/^.*eks_c:([a-zA-Z0-9_-]+)_[a-zA-Z0-9]+.*$/\1/"

Commandes diverses

Les commandes suivantes sont utiles pour récupérer les informations dont vous avez besoin pour résoudre les problèmes.

  • Utilisez la commande suivante pour collecter des images utilisées par les Pods dans Amazon EKS Connector.

    kubectl get pods -n eks-connector -o jsonpath="{.items[*].spec.containers[*].image}" | tr -s '[[:space:]]' '\n'
  • Utilisez la commande suivante pour rassembler les noms des nœuds sur lesquels Amazon EKS Connector est exécuté.

    kubectl get pods -n eks-connector -o jsonpath="{.items[*].spec.nodeName}" | tr -s '[[:space:]]' '\n'
  • Exécutez la commande suivante pour obtenir les versions de votre client et serveur Kubernetes.

    kubectl version
  • Exécutez la commande suivante pour obtenir des informations sur vos nœuds.

    kubectl get nodes -o wide --show-labels

Problème Helm : 403 Forbidden

Si vous avez reçu le message d'erreur suivant lors de l'exécution des commandes d'installation de Helm :

Error: INSTALLATION FAILED: unexpected status from HEAD request to https://public.ecr.aws/v2/eks-connector/eks-connector-chart/manifests/0.0.6: 403 Forbidden

Vous pouvez exécuter la ligne suivante pour y remédier :

docker logout public.ecr.aws

Erreur de console : le cluster est bloqué dans l'état En attente

Si le cluster reste bloqué dans son Pending état sur la console Amazon EKS une fois que vous l'avez enregistré, cela peut être dû au fait que le connecteur Amazon EKS n'a pas AWS encore réussi à connecter le cluster au cluster. Pour un cluster enregistré, l'état Pending indique que la connexion n'a pas encore été établie avec succès. Pour résoudre ce problème, assurez-vous d'avoir appliqué le manifeste au cluster Kubernetes cible. Si vous l'avez appliqué au cluster mais que celui-ci est toujours à l'état Pending, il est fort probable que le statefulset eks-connector ne soit pas sain. Pour résoudre ce problème, consultez Les Pods du connecteur Amazon EKS plantent et redémarrent, indéfiniment dans cette rubrique.

Erreur de console : User “system:serviceaccount:eks-connector:eks-connector” can't impersonate resource “users” in API group “” au niveau du cluster

Amazon EKS Connector utilise l'emprunt d'identité de l'utilisateur de Kubernetes pour effectuer des opérations au nom des principaux IAM depuis la AWS Management Console. Chaque principal qui accède à l'KubernetesAPI depuis le compte de AWS eks-connector service doit être autorisé à se faire passer pour l'Kubernetesutilisateur correspondant avec un ARN IAM comme nom d'utilisateur. Kubernetes Dans les exemples suivants, l'ARN IAM est mappé à un utilisateur Kubernetes.

  • L'utilisateur IAM john du AWS compte 111122223333 est mappé à un Kubernetes utilisateur. Les bonnes pratiques IAM recommandent d'accorder des autorisations à des rôles plutôt qu'à des utilisateurs.

    arn:aws:iam::111122223333:user/john
  • Le rôle IAM admin du AWS compte 111122223333 est mappé à un Kubernetes utilisateur :

    arn:aws:iam::111122223333:role/admin

    Le résultat est un ARN de rôle IAM, au lieu de l'ARN de AWS STS session.

Pour savoir comment configurer ClusterRole et ClusterRoleBinding afin d'accorder au compte de service eks-connector le privilège de compte de service pour usurper l'identité de l'utilisateur mappé, consultez Octroi d'un accès à un principal IAM pour afficher les ressources Kubernetes sur un cluster. Assurez-vous que, dans le modèle, %IAM_ARN% est remplacé par l'ARN IAM du principal IAM de la AWS Management Console .

Erreur de console : [...] is forbidden: User [...] cannot list resource “[...] in API group” au niveau du cluster

Considérons le problème suivant. Le connecteur Amazon EKS s'est fait passer pour le principal AWS Management Console IAM demandeur dans le cluster cible. Kubernetes Toutefois, le principal ne dispose d'aucune autorisation RBAC pour les opérations d'API Kubernetes.

Pour résoudre ce problème, il existe deux méthodes pour accorder des autorisations à des utilisateurs supplémentaires. Si vous avez déjà installé eks-connector via les charts de Helm, vous pouvez facilement accorder l'accès aux utilisateurs en exécutant la commande suivante. Remplacez les userARN1 et userARN2 avec une liste des ARN des rôles IAM pour donner accès à la consultation des ressources Kubernetes :

helm upgrade eks-connector oci://public.ecr.aws/eks-connector/eks-connector-chart \ --reuse-values \ --set 'authentication.allowedUserARNs={userARN1,userARN2}'

Ou, en tant qu'administrateur du cluster, accordez le niveau approprié de privilèges RBAC aux différents utilisateurs Kubernetes. Pour plus d’informations et d’exemples, consultez Octroi d'un accès à un principal IAM pour afficher les ressources Kubernetes sur un cluster.

Erreur de console : Amazon EKS ne peut pas communiquer avec le serveur d’API de votre cluster Kubernetes. Le cluster doit être dans un état ACTIF pour que la connexion soit réussie. Veuillez réessayer dans quelques minutes.

Si le service Amazon EKS ne peut pas communiquer avec Amazon EKS Connector dans le cluster cible, cela peut être dû à l'une des raisons suivantes :

  • Amazon EKS Connector dans le cluster cible n'est pas sain.

  • Une connectivité médiocre ou une connexion interrompue entre le cluster cible et la Région AWS.

Pour résoudre ce problème, consultez les journaux d’Amazon EKS Connector. Si vous ne voyez pas d'erreur sur Amazon EKS Connector, réessayez la connexion après quelques minutes. Si vous êtes régulièrement confronté à une latence élevée ou à une connectivité intermittente pour le cluster cible, envisagez de le réenregistrer dans un Région AWS cluster situé plus près de chez vous.

Les Pods du connecteur Amazon EKS plantent et redémarrent, indéfiniment

De nombreuses raisons peuvent amener un Pod Amazon EKS Connector à passer à l'état CrashLoopBackOff. Ce problème concerne probablement le conteneur connector-init. Vérifiez l'état du Pod Amazon EKS Connector.

kubectl get pods -n eks-connector

L'exemple qui suit illustre un résultat.

NAME READY STATUS RESTARTS AGE eks-connector-0 0/2 Init:CrashLoopBackOff 1 7s

Si votre sortie est similaire à la sortie précédente, consultez la section Inspecter les journaux d'Amazon EKS Connector pour résoudre le problème.

Failed to initiate eks-connector: InvalidActivation

Lorsque vous démarrez Amazon EKS Connector pour la première fois, il enregistre un activationId et activationCode avec Amazon Web Services. L'enregistrement peut échouer, ce qui peut provoquer le crash du conteneur connector-init avec une erreur similaire à la suivante.

F1116 20:30:47.261469       1 init.go:43] failed to initiate eks-connector: InvalidActivation:

Pour résoudre ce problème, tenez compte des causes suivantes et des correctifs recommandés :

  • L'enregistrement a peut-être échoué car activationId et activationCode ne se trouvent pas dans votre fichier manifeste. Si c'est le cas, assurez-vous qu'il s'agit des valeurs correctes renvoyées par l'opération d'API RegisterCluster et que activationCode se trouve dans le fichier manifeste. activationCode est ajouté aux secrets Kubernetes, il doit donc être codé au format base64. Pour plus d’informations, consultez Étape 1 : Enregistrement du cluster.

  • L'enregistrement a peut-être échoué car votre activation a expiré. En effet, pour des raisons de sécurité, vous devez activer Amazon EKS Connector dans les trois jours suivant l'enregistrement du cluster. Pour résoudre ce problème, assurez-vous que le manifeste Amazon EKS Connector est appliqué au cluster Kubernetes cible avant la date et l'heure d'expiration. Pour confirmer la date d'expiration de votre activation, exécutez un appel à l'opération API DescribeCluster.

    aws eks describe-cluster --name my-cluster

    Dans l'exemple de réponse suivant, la date et l'heure d'expiration sont enregistrées sous la forme 2021-11-12T22:28:51.101000-08:00.

    { "cluster": { "name": "my-cluster", "arn": "arn:aws:eks:region:111122223333:cluster/my-cluster", "createdAt": "2021-11-09T22:28:51.449000-08:00", "status": "FAILED", "tags": { }, "connectorConfig": { "activationId": "00000000-0000-0000-0000-000000000000", "activationExpiry": "2021-11-12T22:28:51.101000-08:00", "provider": "OTHER", "roleArn": "arn:aws:iam::111122223333:role/my-connector-role" } } }

    Si l'activationExpiry est passée, désenregistrez le cluster et enregistrez-le à nouveau. Cela génère une nouvelle activation.

Le nœud du cluster manque de connectivité sortante

Pour fonctionner correctement, Amazon EKS Connector nécessite une connectivité sortante à plusieurs points de terminaison AWS . Vous ne pouvez pas connecter un cluster privé sans connectivité sortante à une Région AWS cible. Pour résoudre ce problème, vous devez ajouter la connectivité sortante nécessaire. Pour plus d'informations sur les exigences de connecteur, consultez Considérations relatives à Amazon EKS Connector.

Les Pods Amazon EKS Connector sont dans l'état ImagePullBackOff

Si vous exécutez la commande get pods et que les Pods sont dans l'état ImagePullBackOff, ils ne peuvent pas fonctionner correctement. Si les Pods Amazon EKS Connector sont dans l'état ImagePullBackOff, ils ne peuvent pas fonctionner correctement. Vérifiez l'état de vos Pods Amazon EKS Connector.

kubectl get pods -n eks-connector

L'exemple qui suit illustre un résultat.

NAME READY STATUS RESTARTS AGE eks-connector-0 0/2 Init:ImagePullBackOff 0 4s

Le fichier manifeste Amazon EKS Connector par défaut fait référence aux images de la galerie publique Amazon ECR. Il est possible que le cluster Kubernetes cible ne puisse pas extraire les images de la galerie publique Amazon ECR. Veuillez soit résoudre le problème d'extraction d'images de la galerie publique Amazon ECR, soit envisager la mise en miroir des images dans le registre de conteneurs privé de votre choix.