web-dev-qa-db-fra.com

Comment déboguer "ImagePullBackOff"?

Tout à coup, je ne peux pas déployer des images qui pourraient être déployées auparavant. J'ai le statut de pod suivant:

[root@webdev2 Origin]# oc get pods 
NAME                      READY     STATUS             RESTARTS   AGE 
arix-3-yjq9w              0/1       ImagePullBackOff   0          10m 
docker-registry-2-vqstm   1/1       Running            0          2d 
router-1-kvjxq            1/1       Running            0          2d 

L'application ne démarre tout simplement pas. La nacelle n'essaie pas de lancer le conteneur. De la page de l'événement, j'ai Back-off pulling image "172.30.84.25:5000/default/arix@sha256:d326. J'ai vérifié que je pouvais extraire l'image avec la balise avec docker pull.

J'ai également vérifié le journal du dernier conteneur. C'était fermé pour une raison quelconque. Je pense que le pod devrait au moins essayer de le redémarrer.

Je suis à court d'idées pour résoudre les problèmes. Que puis-je vérifier de plus?

60

Vous pouvez utiliser la syntaxe ') '

Pour OpenShift, utilisez:

oc describe pod <pod-id>  

Pour les Kubernetes à la vanille:

kubectl describe pod <pod-id>  

Examinez les événements de la sortie. Dans mon cas, cela montre en tirant l'image coredns/coredns en arrière-plan: latest

Dans ce cas, l’image coredns/coredns: la dernière ne peut pas être extraite d’Internet.

Events:
  FirstSeen LastSeen    Count   From                SubObjectPath           Type        Reason      Message
  --------- --------    -----   ----                -------------           --------    ------      -------
  5m        5m      1   {default-scheduler }                        Normal      Scheduled   Successfully assigned coredns-4224169331-9nhxj to 192.168.122.190
  5m        1m      4   {kubelet 192.168.122.190}   spec.containers{coredns}    Normal      Pulling     pulling image "coredns/coredns:latest"
  4m        26s     4   {kubelet 192.168.122.190}   spec.containers{coredns}    Warning     Failed      Failed to pull image "coredns/coredns:latest": Network timed out while trying to connect to https://index.docker.io/v1/repositories/coredns/coredns/images. You may want to check your internet connection or if you are behind a proxy.
  4m        26s     4   {kubelet 192.168.122.190}                   Warning     FailedSync  Error syncing pod, skipping: failed to "StartContainer" for "coredns" with ErrImagePull: "Network timed out while trying to connect to https://index.docker.io/v1/repositories/coredns/coredns/images. You may want to check your Internet connection or if you are behind a proxy."

  4m    2s  7   {kubelet 192.168.122.190}   spec.containers{coredns}    Normal  BackOff     Back-off pulling image "coredns/coredns:latest"
  4m    2s  7   {kubelet 192.168.122.190}                   Warning FailedSync  Error syncing pod, skipping: failed to "StartContainer" for "coredns" with ImagePullBackOff: "Back-off pulling image \"coredns/coredns:latest\""

Étapes de débogage supplémentaires

  1. Identifiez le nœud en effectuant une opération 'kubectl/oc get pods -o wide'
  2. sSH dans le noeud qui ne peut pas tirer l'image du menu fixe
  3. vérifiez que le nœud peut résoudre le DNS du registre de docker en effectuant un ping.
  4. essayez de tirer manuellement l'image du menu fixe sur le noeud
  5. Si vous utilisez un registre privé, vérifiez que votre secret existe et que le secret est correct. Votre secret devrait également être dans le même espace de noms. Merci swenzel
  6. Essayez de tirer l'image localement
62
rjdkolb

Avez-vous essayé de modifier pour voir ce qui ne va pas (j'ai eu le mauvais emplacement de l'image)

kubectl edit pods arix-3-yjq9w

ou même supprimer votre pod?

kubectl delete arix-3-yjq9w
2
Clemens Tolboom

J'ai oublié de transférer l'image balisée 1.0.8 vers la caisse enregistreuse électronique (AWS) (hub d'images AWS) ... Si vous utilisez Helm et effectuez une mise à niveau par:

mise à niveau de la barre minta-user ./src/services/user/helm-chart

assurez-vous que la balise d'image à l'intérieur de values.yaml est poussée (vers ECR ou Docker Hub, etc.), par exemple: (c'est mon helm-chart/values.yaml)

replicaCount: 1

image:
   repository:dkr.ecr.us-east-1.amazonaws.com/minta-user
   tag: 1.0.8

vous devez vous assurer que l'image: 1.0.8 est poussée!

0
dang