Reiniciar estrategia

En el desarrollo de aplicaciones nativas de la nube, Kubernetes se ha convertido en el estándar para la orquestación de contenedores. Cuando utilizamos Kubernetes para administrar nuestras aplicaciones, generalmente dividimos la aplicación en varios contenedores, que se denominan "Pods" en Kubernetes. Mientras cada Pod se ejecuta, puede encontrar varios problemas, como fallas del contenedor, recursos insuficientes o errores humanos. En estos casos, la estrategia de reinicio de Kubernetes es particularmente importante.

En este artículo, analizaremos en profundidad la estrategia de reinicio del Pod de Kubernetes, incluido cómo funciona, cómo configurarlo y las mejores prácticas.

Cómo funciona la política de reinicio de pods de Kubernetes

La estrategia de reinicio de Kubernetes determina principalmente cómo Kubernetes maneja el reinicio de un contenedor cuando se detiene de manera anormal o programada. Kubernetes admite dos estrategias de reinicio principales: Never   OnFailure y  Always.

  1. Siempre : cuando el contenedor finaliza y sale, reinicie siempre el contenedor, política predeterminada
  2. OnFailure : cuando el contenedor sale de forma anormal (el código de estado de salida no es 0), reinicie el contenedor
  3. Nunca : salga cuando el contenedor finalice y nunca reinicie el contenedor.

Nota : La política de reinicio se aplica a todos los contenedores en el objeto pod. El contenedor que debe reiniciarse por primera vez se reiniciará inmediatamente cuando sea necesario. Las operaciones posteriores que deben reiniciarse serán retrasadas por kubelet por un período de tiempo. y el tiempo de retraso de las operaciones de reinicio repetidas es 10 s, 20 s, 40 s, 80 s, 160 s, 300 s, 300 s es el tiempo de retraso máximo

Configurar la política de reinicio de Kubernetes Pod

En Kubernetes, la estrategia de reinicio se puede configurar mediante la definición de Pod. Por ejemplo, aquí hay una  Always definición de Pod que utiliza una política de reinicio:

apiVersion: v1  
kind: Pod  
metadata:  
  name: restart-example  
spec:  
  restartPolicy: Always  
  containers:  
  - name: mycontainer  
    image: myimage

En esta definición, restartPolicy el campo está configurado en  Always, lo que indica que Kubernetes intentará reiniciar el contenedor independientemente de su estado.

sugerencia

Al utilizar una estrategia de reinicio, aquí hay algunas recomendaciones prácticas:

  1. Elija una estrategia de reinicio adecuada según la importancia de la aplicación. Para aplicaciones que pueden tolerar pausas breves pero no reinicios frecuentes, se   debe seleccionar la política Never o  .  Se deben seleccionar políticas OnFailurepara aplicaciones cuya ejecución debe garantizarse de forma continua y tolerar reinicios  .Always
  2. Si es posible, se debe minimizar la necesidad de reiniciar. Esto puede requerir mejorar el código, optimizar la configuración o agregar recursos.
  3. Para las aplicaciones que requieren reinicios frecuentes, debería considerar utilizar una infraestructura más estable u optimizar la aplicación para reducir las fallas.
  4. Para las aplicaciones que tardan mucho en iniciarse, es posible que desee considerar el uso de una estrategia de reversión o una estrategia de implementación más compleja, como actualizaciones continuas.
  5. Si utiliza la función de reversión automática, es posible que necesite configurar un límite apropiado en la cantidad de pasos de reversión para evitar que la aplicación se quede atascada en un bucle de reversión infinito.