Comment puis-je 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 présentent le statut ImagePullbackoff, cela signifie qu'ils ne fonctionnent pas correctement. Le statut ImagePullBackOff signifie qu'un conteneur n'a pas pu démarrer, car une image n'a pas pu être récupérée ou extraite. Pour plus d'informations, consultez la section Les connecteurs Amazon EKS ont le statut ImagePullbackOff.
Vous pouvez recevoir une erreur ImagePull si :
- Le nom, la balise ou le résumé d'une image sont incorrects.
- Les images nécessitent des informations d'identification pour être authentifiées.
- Le registre n'est pas accessible.
Résolution
1. Vérifiez le statut du pod, le message d'erreur et vérifiez que le nom, la balise et le SHA de l'image sont corrects
Pour obtenir le statut d'un pod, exécutez la commande kubectl****get pods :
$ kubectl get pods -n default NAME READY STATUS RESTARTS AGE nginx-7cdbb5f49f-2p6p2 0/1 ImagePullBackOff 0 86s
Pour obtenir les détails d'un message d'erreur relatif à un pod, exécutez la commande kubectl****describe pod :
$ 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"
$ kubectl décrit le pod nginx-55d75d5f56-qrqmp... Events: Type Reason Age From Message ---- ------ ---- ---- ------- Normal Scheduled 2m20s default-scheduler Successfully assigned default/nginx-55d75d5f56-qrqmp to ip-192-168-149-143.us-east-2.compute.internal Normal Pulling 40s (x4 over 2m6s) kubelet Pulling image "nginx:latestttt" Warning Failed 39s (x4 over 2m5s) kubelet Failed to pull image "nginx:latestttt": rpc error: code = Unknown desc = Error response from daemon: manifest for nginx:latestttt not found: manifest unknown: manifest unknown Warning Failed 39s (x4 over 2m5s) kubelet Error: ErrImagePull Warning Failed 26s (x6 over 2m5s) kubelet Error: ImagePullBackOff Normal BackOff 11s (x7 over 2m5s) kubelet Back-off pulling image "nginx:latestttt" Assurez-vous que la balise et le nom de votre image existent et sont corrects. Si le registre d'images nécessite une authentification, assurez-vous que vous êtes autorisé à 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 nginxx:latest
Pour comprendre les valeurs d'état du pod, consultez la section Phase du pod sur le site Web de Kubernetes.
Pour plus d'informations, consultez l'article Comment résoudre les problèmes liés à l'état du pod dans Amazon EKS ?
2. Images Amazon Elastic Container Registry (Amazon ECR)
Si vous essayez d'extraire des images d'Amazon ECR à l'aide d'Amazon EKS, une configuration supplémentaire peut être requise. Si votre image est stockée dans un registre privé Amazon ECR, assurez-vous de spécifier les informations d'identification ImagePullSecrets sur le pod. Ces informations d'identification sont utilisées pour s'authentifier auprès du registre privé.
Créez un Secret nommé itregcred :
kubectl create secret docker-registry regcred --docker-server=<your-registry-server> --docker-username=<your-name> --docker-password=<your-pword> --docker-email=<your-email>
Assurez-vous de remplacer les informations d’identification suivantes :
- <your-registry-server> est le FQDN de votre registre Docker privé. Utilisez https://index.docker.io/v1/ pour DockerHub.
- <your-name> est votre nom d'utilisateur Docker.
- <your-pword> est votre mot de passe Docker.
- <your-email> est votre adresse e-mail Docker.
Vous avez correctement défini vos informations d'identification Docker dans le cluster en tant que secret nommé regcred.
Pour comprendre le contenu du secret regcred, visualisez le secret au format YAML :
kubectl get secret regcred --output=yaml
Dans l'exemple suivant, un pod doit accéder à vos informations d'identification 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.registry.example par le chemin d'accès à une image dans un registre privé similaire au suivant :
your.private.registry.example.com/bob/bob-private:v1
Pour extraire l'image du registre privé, Kubernetes a besoin des informations d'identification. Le champ ImagePullSecrets du fichier de configuration indique que Kubernetes doit obtenir les informations d'identification à partir d'un secret nommé regcred.
Pour plus d'options concernant la création d'un secret, consultez la section Création d'un pod utilisant un secret pour extraire une image sur le site Web de Kubernetes.
3. Résolution des problèmes de registre
Dans l'exemple suivant, le registre est inaccessible en raison d'un problème de connectivité réseau car kubelet n'est pas en mesure d'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
L'erreur «Failed to pull image... » signifie que kubelet a essayé de se connecter au point de terminaison du registre Docker et a échoué en raison d'un délai de connexion expiré.
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 de registre spécifié.
Dans l'exemple suivant, la limite de débit du 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" Warning Failed 43s (x4 over 98s) kubelet Error: ImagePullBackOff
La limite du débit du registre Docker est de 100 demandes d'images de conteneur par six heures pour une utilisation anonyme et de 200 pour les comptes Docker. Les demandes d'images dépassant ces limites se voient refuser l'accès jusqu'à l'expiration de la fenêtre de six heures. Pour gérer l'utilisation et comprendre les limites de débit du registre, consultez la section Comprendre la limite de débit de votre Docker Hub sur le site Web de Docker.
Informations connexes
Résolution des erreurs Amazon EKS
Comment puis-je dépanner les problèmes d'Amazon ECR avec Amazon EKS ?

Contenus pertinents
- demandé il y a un moislg...
- demandé il y a 2 moislg...
- demandé il y a 2 moislg...
- demandé il y a 4 moislg...
- demandé il y a un moislg...
- AWS OFFICIELA mis à jour il y a un an
- AWS OFFICIELA mis à jour il y a 8 mois
- AWS OFFICIELA mis à jour il y a un an