update tutorial rolling imagepullpolicy force espaƱol kubernetes kubectl

kubernetes - tutorial - Reinicie el contenedor dentro de la vaina



kubernetes force pull image (8)

Tengo un pod test-1495806908-xn5jn con 2 contenedores. Me gustaría reiniciar uno de ellos llamado container-test . ¿Es posible reiniciar un solo contenedor dentro de un pod y cómo? Si no, ¿cómo reinicio el pod?

El pod se creó usando un deployment.yaml con:

kubectl create -f deployment.yaml


¿Es posible reiniciar un solo contenedor?

No a través de kubectl , aunque dependiendo de la configuración de su clúster puede "engañar" y docker kill the-sha-goes-here , lo que hará que kubelet reinicie el contenedor "fallido" (suponiendo, por supuesto, la política de reinicio para el Pod dice que eso es lo que debería hacer)

¿Cómo reinicio el pod?

Eso depende de cómo se creó el Pod, pero según el nombre del Pod que proporcionó, parece estar bajo la supervisión de un ReplicaSet, por lo que puede simplemente kubectl delete pod test-1495806908-xn5jn y kubernetes creará uno nuevo en su lugar (el nuevo Pod tendrá un nombre diferente, así que no esperes que kubectl get pods devuelva test-1495806908-xn5jn nunca más)


Hay casos en los que desea reiniciar un contenedor específico en lugar de eliminar el pod y dejar que Kubernetes lo vuelva a crear.

Hacer un kubectl exec POD_NAME -c CONTAINER_NAME reboot funcionó para mí.


Hubo un problema en el pod de coredns , coredns dicho pod por

kubectl scale deployment <<name>> --replicas=2 -n service

Su pod se reiniciará automáticamente.


Matar el proceso especificado en el CMD / ENTRYPOINT funciona para mí. (El contenedor se reinicia automáticamente)

El reinicio no estaba permitido en mi contenedor, así que tuve que usar esta solución.


Tanto el pod como el contenedor son efímeros, intente utilizar el siguiente comando para detener el contenedor específico y el clúster k8s reiniciará un nuevo contenedor.

kubectl exec -it [POD_NAME] -c [CONTAINER_NAME] -- /bin/sh -c "kill 1"

Esto enviará una señal SIGTERM al proceso 1, que es el proceso principal que se ejecuta en el contenedor. Todos los demás procesos serán hijos del proceso 1 y finalizarán una vez que finalice el proceso 1. Vea la página de manual de kill para otras señales que puede enviar.


Toda la razón para tener kubernetes es que administra los contenedores por usted para que no tenga que preocuparse tanto por el ciclo de vida de los contenedores en la cápsula.

Dado que tiene una configuración de deployment que usa un replica set . Puede eliminar el pod usando kubectl delete pod test-1495806908-xn5jn y kubernetes gestionará la creación de un nuevo pod con los 2 contenedores sin ningún tiempo de inactividad. Intentar reiniciar manualmente contenedores individuales en vainas niega todos los beneficios de los kubernetes.


Todas las respuestas anteriores han mencionado eliminar el pod ... pero si tiene muchos pods del mismo servicio, sería tedioso eliminar cada uno de ellos ...

Por lo tanto, propongo la siguiente solución, reiniciar :

  • 1) Establecer escala a cero:

    kubectl delete pod -n=kube-system coredns-fb8b8dccf-8ggcf

    El comando anterior terminará todos sus pods con el nombre <<name>>

  • 2) Para iniciar el pod nuevamente, establezca las réplicas en más de 0

    kubectl scale deployment <<name>> --replicas=0 -n service

    El comando anterior iniciará sus pods nuevamente con 2 réplicas.


Usamos una línea de comando bastante conveniente para forzar la reinstalación de imágenes nuevas en el pod de integración.
Notamos que todos nuestros contenedores alpinos ejecutan su comando "sostenido" en el PID 5. Por lo tanto, enviarle una señal SIGTERM baja el contenedor. imagePullPolicy configuración de imagePullPolicy en Always hace que el kubelet vuelva a extraer la última imagen cuando recupera el contenedor.

kubectl exec -i [pod name] -c [container-name] -- kill -15 5