¿Qué es el mecanismo de reintento cuando CCE no puede iniciar un pod?
CCE es un servicio de Kubernetes totalmente administrado y es totalmente compatible con las API de Kubernetes y kubectl.
En Kubernetes, la especificación de un pod contiene un campo restartPolicy. El valor de restartPolicy puede ser Always, OnFailure o Never. El valor predeterminado es Always.
- Always: Cuando un contenedor falla, kubelet reinicia automáticamente el contenedor.
- OnFailure: Cuando un contenedor deja de funcionar y el código de salida no es 0 (que indica la salida normal), kubelet reinicia automáticamente el contenedor.
- Never: kubelet no reinicia el contenedor independientemente del estado de funcionamiento del contenedor.
restartPolicy se aplica a todos los contenedores de un pod.
restartPolicy solo se refiere a los reinicios de los contenedores por kubelet en el mismo nodo. Cuando los contenedores en un pod salen, kubelet los reinicia con un retardo exponencial de retroceso (10s, 20s, 40s y …), que se tapa a los cinco minutos. Una vez que un contenedor ha estado funcionando durante 10 minutos sin ningún problema, kubelet restablece el temporizador de retroceso de reinicio para el contenedor.
Los ajustes de restartPolicy varían en función del controlador:
- Replication Controller (RC) y DaemonSet: restartPolicy deben ajustarse a Always para garantizar el funcionamiento continuo de los contenedores.
- Job: restartPolicy debe establecerse en OnFailure o Never para asegurarse de que los contenedores no se reinician después de ejecutarse.