¿Cómo depurar "ImagePullBackOff"?

121

De repente, no puedo implementar algunas imágenes que se podrían implementar antes. Obtuve el siguiente estado de pod:

[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 

La aplicación simplemente no se inicia. El pod no está intentando ejecutar el contenedor. Desde la página del evento, tengo Back-off pulling image "172.30.84.25:5000/default/arix@sha256:d326. He verificado que puedo tirar de la imagen con la etiqueta con docker pull.

También he comprobado el registro del último contenedor. Estaba cerrado por alguna razón. Creo que el pod debería al menos intentar reiniciarlo.

Me he quedado sin ideas para depurar los problemas. ¿Qué puedo comprobar más?

Xiao Peng - ZenUML.com
fuente
¿Es esta una configuración de varias máquinas? Si es así, verifique que puede extraer de todos los nodos. De lo contrario, suba el registro a --loglevel = 5 en el nodo y reinicie; debería ver la información impresa que describe el intento de extraer la imagen y los errores incluidos.
Clayton
¿Qué salió después de reiniciar con loglevel = 5?
lvthillo
2
¿Resolviste el problema? ¿Alguien puede explicar este problema de 'ImagePullBackOff'? (las imágenes existen en mis 'imágenes de la
ventana
Obtuve esto al usar la región incorrecta para mi repositorio. Olvidé agregar eu. to --image = eu.gcr.io / $ PROJECT_ID / ...
Clemens Tolboom
En mi caso, era el nombre de etiqueta incorrecto para la imagen que se estaba pasando. Cambié el nombre de TAG que resolvió el problema.
Tara Prasad Gurung

Respuestas:

118

Puede utilizar la sintaxis ' describir pod '

Para uso de OpenShift:

oc describe pod <pod-id>  

Para Kubernetes vainilla:

kubectl describe pod <pod-id>  

Examine los eventos de la salida. En mi caso, muestra Back-off extrayendo imágenes coredns / coredns: último

En este caso, la imagen coredns / coredns: latest no se puede extraer de 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\""

Pasos de depuración adicionales

  1. intente extraer la imagen de la ventana acoplable y etiquetar manualmente en su computadora
  2. Identifique el nodo haciendo un 'kubectl / oc get pods -o wide'
  3. ssh en el nodo (si puede) que no puede extraer la imagen de la ventana acoplable
  4. compruebe que el nodo pueda resolver el DNS del registro de la ventana acoplable realizando un ping.
  5. intente extraer la imagen de la ventana acoplable manualmente en el nodo
  6. Si está utilizando un registro privado, verifique que su secreto exista y que el secreto sea correcto. Tu secreto también debe estar en el mismo espacio de nombres. Gracias swenzel
  7. Algunos registros tienen firewalls que limitan el acceso a la dirección IP. El firewall puede bloquear el tirón
  8. Algunos CI crean implementaciones con secretos de Docker temporales. Entonces, el secreto caduca después de unos días (está solicitando fallas de producción ...)
rjdkolb
fuente
3
Además, en caso de que utilice un repositorio de imágenes privado, asegúrese de que los secretos de extracción de imágenes existan, no tengan errores tipográficos y estén en el espacio de nombres correcto.
swenzel
En el caso de un repositorio de imágenes privado, también asegúrese de hacer referencia a los secretos de extracción de imágenes en su pod utilizando la entrada "imagePullSecrets".
Donato Szilagyi
1
También hay una publicación de blog extensa que describe cómo depurar esto en profundidad aquí: managedkube.com/kubernetes/k8sbot/troubleshooting/…
gar
1

¿Ha intentado editar para ver qué está mal (tenía la ubicación de la imagen incorrecta)

kubectl edit pods arix-3-yjq9w

o incluso borrar tu pod?

kubectl delete arix-3-yjq9w
Clemens Tolboom
fuente
0

Olvidé enviar la imagen etiquetada 1.0.8 al ECR (centro de imágenes de AWS) ... Si está usando Helm y actualice por:

actualización de timón minta-user ./src/services/user/helm-chart

asegúrese de que la etiqueta de imagen dentro de values.yaml esté empujada (a ECR o Docker Hub, etc.) por ejemplo: (este es mi helm-chart / values.yaml)

replicaCount: 1

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

debe asegurarse de que se inserte la imagen: 1.0.8!

maldición
fuente
0

Estaba enfrentando un problema similar, pero en lugar de uno, todos mis pods no estaban listos y mostraban el estado Listo 0/1 Algo como ingrese la descripción de la imagen aquí

Intenté muchas cosas, pero finalmente descubrí que el contexto no estaba configurado correctamente. Utilice el siguiente comando y asegúrese de estar en el contexto correcto

kubectl config get-contexts

Duro
fuente
0

En GKE, si el pod está inactivo, es mejor verificar los eventos. Mostrará con más detalle de qué se trata el error.

En mi caso, tuve:

Failed to pull image "gcr.io/project/imagename@sha256:c8e91af54fc17faa1c49e2a05def5cbabf8f0a67fc558eb6cbca138061a8400a":
 rpc error: code = Unknown desc = error pulling image configuration: unknown blob

Resultó que la imagen estaba dañada de alguna manera. Después de repustarlo y desplegarlo con el nuevo hash, funcionó nuevamente.

Vincent Gerris
fuente
-9

Ejecute el inicio de sesión de la ventana acoplable

Empuje la imagen a la ventana acoplable

Volver a crear pod

Esto resolvió mi problema. Espero eso ayude.

Shyla
fuente