New user sign up using AWS Builder ID
New user sign up using AWS Builder ID is currently unavailable on re:Post. To sign up, please use the AWS Management Console instead.
Comment résoudre les erreurs ErrImagePull et ImagePullBackoff relatives à l'état du pod dans Amazon EKS ?
L'état de mon pod Amazon Elastic Kubernetes Service (Amazon EKS) est ErrImagePull ou ImagePullBackoff.
Brève description
Si vous exécutez la commande kubectl get pods et que vos pods sont à l’état ImagePullBackOff, cela indique qu'ils ne fonctionnent pas correctement. L'état ImagePullBackOff signifie qu'un conteneur n'a pas démarré car une image n'a pas pu être récupérée ou extraite. Pour résoudre ce problème, utilisez les solutions suivantes.
Pour en savoir plus, consultez la page Les pods du connecteur Amazon EKS sont à l'état ImagePullBackOff.
Résolution
Confirmez les informations de l'image
Procédez comme suit pour confirmer le message d'erreur relatif à l'état du pod et vérifier que le nom de l'image, la balise et l'algorithme de hachage sécurisé (SHA) sont corrects :
-
Pour obtenir l'état du pod, exécutez la commande suivante :
$ kubectl get pods -n defaultNAME READY STATUS RESTARTS AGE nginx-7cdbb5f49f-2p6p2 0/1 ImagePullBackOff 0 86s
-
Pour obtenir plus de détails sur l’échec du pod, exécutez la commande suivante :
$ kubectl describe pod nginx-7cdbb5f49f-2p6p2 ... Events: Type Reason Age From Message ---- ------ ---- ---- ------- Normal Scheduled 4m23s default-scheduler Successfully assigned default/nginx-7cdbb5f49f-2p6p2 to ip-192-168-149-143.us-east-2.compute.internal Normal Pulling 2m44s (x4 over 4m9s) kubelet Pulling image "nginxx:latest" Warning Failed 2m43s (x4 over 4m9s) kubelet Failed to pull image "nginxx:latest": rpc error: code = Unknown desc = Error response from daemon: pull access denied for nginxx, repository does not exist or may require 'docker login': denied: requested access to the resource is denied Warning Failed 2m43s (x4 over 4m9s) kubelet Error: ErrImagePull Warning Failed 2m32s (x6 over 4m8s) kubelet Error: ImagePullBackOff Normal BackOff 2m17s (x7 over 4m8s) kubelet Back-off pulling image "nginxx:latest"
-
Vérifiez que la balise et le nom de votre image existent et qu'ils sont corrects.
-
Si le registre d'images nécessite une authentification, vérifiez que vous disposez bien des autorisations nécessaires pour y accéder. Pour vérifier que l'image utilisée dans le pod est correcte, exécutez la commande suivante :
$ kubectl get pods nginx-7cdbb5f49f-2p6p2 -o jsonpath="{.spec.containers[*].image}" | \sort nginx:latest
Pour comprendre les valeurs liées à l'état des pods, consultez la page Pod phase sur le site Web de Kubernetes, ainsi que la page Comment résoudre les problèmes liés à l’état d’un pod dans Amazon EKS ?
Résolution de problèmes liés aux registres privés
Si vous récupérez des images depuis un registre privé avec Amazon EKS, il est possible qu’une configuration supplémentaire soit nécessaire. Utilisez l’option imagePullSecrets du manifeste de charge de travail pour spécifier les informations d'identification. Ces informations d'identification s'authentifient auprès du registre privé. Cela permet au pod d'extraire des images du référentiel privé spécifié.
Pour afficher le contenu du secret, utilisez la commande suivante pour l'afficher au format YAML :
kubectl get secret <secret_name> --output=yaml
Dans l'exemple suivant, le pod doit accéder aux informations d'identification de votre registre Docker dans regcred :
apiVersion: v1 kind: Pod metadata: name: private-reg spec: containers: - name: private-reg-container image: your-private-image imagePullSecrets: - name: regcred
Remplacez your-private-image par le chemin d'accès à une image dans un registre privé comme dans l’exemple suivant :
your.private.registry.example.com/bob/bob-private:v1
Pour pouvoir extraire l'image du registre privé, Kubernetes doit disposer des informations d'identification. Le champ imagePullSecrets du fichier de configuration indique que Kubernetes doit récupérer les informations d'identification d’un secret nommé regcred.
Pour en savoir plus, consultez la page Récupération d'une image d'un registre privé sur le site Web de Kubernetes.
Résolution d'autres problèmes de registre
Erreur « Failed to pull image »
L'erreur « Failed to pull image... » signifie que kubelet a tenté de se connecter au point de terminaison du registre privé et a échoué en raison d'un délai de connexion.
Dans l'exemple suivant, le registre est inaccessible car kubelet ne parvient pas à atteindre le point de terminaison du registre privé :
$ kubectl describe pods nginx-9cc69448d-vgm4m ... Events: Type Reason Age From Message ---- ------ ---- ---- ------- Normal Scheduled 16m default-scheduler Successfully assigned default/nginx-9cc69448d-vgm4m to ip-192-168-149-143.us-east-2.compute.internal Normal Pulling 15m (x3 over 16m) kubelet Pulling image "nginx:stable" Warning Failed 15m (x3 over 16m) kubelet Failed to pull image "nginx:stable": rpc error: code = Unknown desc = Error response from daemon: Get "https://registry-1.docker.io/v2/": net/http: request canceled while waiting for connection (Client.Timeout exceeded while awaiting headers) Warning Failed 15m (x3 over 16m) kubelet Error: ErrImagePull Normal BackOff 14m (x4 over 16m) kubelet Back-off pulling image "nginx:stable" Warning Failed 14m (x4 over 16m) kubelet Error: ImagePullBackOff
Pour résoudre cette erreur, vérifiez votre sous-réseau, vos groupes de sécurité et votre ACL réseau qui autorisent la communication avec le point de terminaison du registre.
Limite de débit de registre dépassée
Dans l'exemple suivant, la limite de débit de registre a été dépassée :
$ kubectl describe pod nginx-6bf9f7cf5d-22q48 ... Events: Type Reason Age From Message ---- ------ ---- ---- ------- Normal Scheduled 3m54s default-scheduler Successfully assigned default/nginx-6bf9f7cf5d-22q48 to ip-192-168-153-54.us-east-2.compute.internal Warning FailedCreatePodSandBox 3m33s kubelet Failed to create pod sandbox: rpc error: code = Unknown desc = failed to set up sandbox container "82065dea585e8428eaf9df89936653b5ef12b53bef7f83baddb22edc59cd562a" network for pod "nginx-6bf9f7cf5d-22q48": networkPlugin cni failed to set up pod "nginx-6bf9f7cf5d-22q48_default" network: add cmd: failed to assign an IP address to container Warning FailedCreatePodSandBox 2m53s kubelet Failed to create pod sandbox: rpc error: code = Unknown desc = failed to set up sandbox container "20f2e27ba6d813ffc754a12a1444aa20d552cc9d665f4fe5506b02a4fb53db36" network for pod "nginx-6bf9f7cf5d-22q48": networkPlugin cni failed to set up pod "nginx-6bf9f7cf5d-22q48_default" network: add cmd: failed to assign an IP address to container Warning FailedCreatePodSandBox 2m35s kubelet Failed to create pod sandbox: rpc error: code = Unknown desc = failed to set up sandbox container "d9b7e98187e84fed907ff882279bf16223bf5ed0176b03dff3b860ca9a7d5e03" network for pod "nginx-6bf9f7cf5d-22q48": networkPlugin cni failed to set up pod "nginx-6bf9f7cf5d-22q48_default" network: add cmd: failed to assign an IP address to container Warning FailedCreatePodSandBox 2m kubelet Failed to create pod sandbox: rpc error: code = Unknown desc = failed to set up sandbox container "c02c8b65d7d49c94aadd396cb57031d6df5e718ab629237cdea63d2185dbbfb0" network for pod "nginx-6bf9f7cf5d-22q48": networkPlugin cni failed to set up pod "nginx-6bf9f7cf5d-22q48_default" network: add cmd: failed to assign an IP address to container Normal SandboxChanged 119s (x4 over 3m13s) kubelet Pod sandbox changed, it will be killed and re-created. Normal Pulling 56s (x3 over 99s) kubelet Pulling image "httpd:latest" Warning Failed 56s (x3 over 99s) kubelet Failed to pull image "httpd:latest": rpc error: code = Unknown desc = Error response from daemon: toomanyrequests: You have reached your pull rate limit. You may increase the limit by authenticating and upgrading: https://www.docker.com/increase-rate-limit Warning Failed 56s (x3 over 99s) kubelet Error: ErrImagePull Normal BackOff 43s (x4 over 98s) kubelet Back-off pulling image "httpd:latest"
Toute tentative d'extraction d’une image du référentiel public Docker Hub sera interrompue si vous avez atteint la limite de taux d'extraction. Pour en savoir plus, consultez la page Docker Hub rate limit sur le site Web de Docker Hub.

Contenus pertinents
- demandé il y a 3 moislg...
- Réponse acceptéedemandé il y a 3 moislg...
- demandé il y a 10 moislg...
- demandé il y a 3 moislg...
- AWS OFFICIELA mis à jour il y a un an
- AWS OFFICIELA mis à jour il y a 2 ans
- AWS OFFICIELA mis à jour il y a un an
- AWS OFFICIELA mis à jour il y a 8 mois