¿Cómo reintentar la extracción de imágenes en Kubernetes Pods?

90

Soy nuevo en kubernetes. Tengo un problema en las vainas. Cuando ejecuto el comando

 kubectl get pods

Resultado:

NAME                   READY     STATUS             RESTARTS   AGE
mysql-apim-db-1viwg    1/1       Running            1          20h
mysql-govdb-qioee      1/1       Running            1          20h
mysql-userdb-l8q8c     1/1       Running            0          20h
wso2am-default-813fy   0/1       ImagePullBackOff   0          20h

Debido a un problema del nodo "wso2am-default-813fy", necesito reiniciarlo. ¿Cualquier sugerencia?

Dilshani Subasinghe
fuente

Respuestas:

68

Por lo general, en el caso de "ImagePullBackOff", se vuelve a intentar después de unos segundos / minutos. En caso de que desee volver a intentarlo manualmente, puede eliminar el pod anterior y volver a crearlo. El comando de una línea para eliminar y volver a crear el pod sería:

kubectl replace --force -f <yml_file_describing_pod>
Ayon Nahiyan
fuente
6
Si tiene un conjunto de replicación / controlador que administra este pod, se debería crear un nuevo pod automáticamente después de matarlo.
Hem
^^ absolutamente. Estaría muy preocupado si Killing Pod desapareciera para siempre.
Damien Roche
3
Creo kubectl replace --force -f ...que sería equivalente a eliminar seguido de crear
Oliver
1
Si su pod se creó a través de la implementación, simplemente elimine un pod; se creará uno nuevo automáticamente
Illidan
¿Por qué --forcese requiere la opción?
mchawre
220

En caso de no tener el archivo yaml:

kubectl get pod PODNAME -n NAMESPACE -o yaml | kubectl replace --force -f -

Maciek Sawicki
fuente
19
$ kubectl replace --force -f <resource-file>

si todo va bien, debería ver algo como:

<resource-type> <resource-name> deleted
<resource-type> <resource-name> replaced

Los detalles de esto se pueden encontrar en la documentación de Kubernetes, en las páginas "manage-deployment" y kubectl-cheatsheet en el momento de escribir este artículo.

eversMcc
fuente
¿Cómo sé qué aspecto debería tener el archivo de recursos del pod? Vi el archivo ./pod.json pero el enlace no menciona ninguna plantilla o similar
Dominique Paul
7

Si Podes parte de un Deploymento Service, eliminarlo reiniciará el Pody, potencialmente, lo colocará en otro nodo:

$ kubectl delete po $POD_NAME

replacesi es un individuo Pod:

$ kubectl get po -n $namespace $POD_NAME -o yaml | kubectl replace -f -

Carlos Núñez
fuente
2

Intente eliminar el pod, intentará extraer la imagen nuevamente.

kubectl delete pod <pod_name> -n <namespace_name>

Sachin Arote
fuente
0

Primero intente ver qué le pasa al pod:

kubectl logs -p <your_pod>

En mi caso, fue un problema con el archivo YAML.

Entonces, necesitaba corregir el archivo de configuración y reemplazarlo:

kubectl replace --force -f <yml_file_describing_pod>
edubriguenti
fuente
0

Lo más probable es que el problema de ImagePullBackOff se deba a que la imagen no está presente o a un problema con el archivo YAML del pod.

Lo que haré es esto

kubectl get pod -n $namespace $POD_NAME --export > pod.yaml | kubectl -f apply -

También vería el pod.yaml para ver por qué el pod anterior no funcionaba

Ankur Kothari
fuente