Cómo establecer diferentes políticas de reinicio de Kubernetes

Cómo establecer diferentes políticas de reinicio de Kubernetes

Hablaremos específicamente sobre las diversas políticas de reinicio de Kubernetes en este artículo. Primero discutamos las diversas políticas que se usan cuando Kubernetes debe reiniciarse. Puede usar estas políticas para evitar que se desplieguen una determinada carga de trabajo en el clúster. Si bien la imposición de estándares estrictos en el clúster generalmente se realiza para garantizar el cumplimiento, los administradores de clúster también deben seguir varias mejores prácticas que se han sugerido.

¿Cuál es la política de reinicio de Kubernetes??

Cada vaina de Kubernetes se adhiere a un ciclo de vida específico. Comienza en la etapa "pendiente" y, si uno o más de los contenedores primarios se lanzan con éxito, las transiciones a la etapa "en ejecución". Dependiendo de si los contenedores en la cápsula tienen éxito o falla, el proceso luego pasa a la fase "sucedido" o "fallido".

Para reiniciar la política al nivel de los contenedores aplicados, se pueden usar tres opciones:

Siempre

Cada vez que termina un contenedor, Kubernetes produce uno nuevo, ya que la cápsula debe estar activa en todo momento.

Puro

Si el contenedor sale con un código de retorno que no sea 0, solo se reinicia una vez. El reinicio no es necesario para los contenedores que devuelven 0 (éxito).

Nunca

El contenedor no pudo reiniciar.

Ahora, en la siguiente sección, discutiremos cómo puede reiniciar una vaina.

Cómo reiniciar una vaina en Kubernetes?

Para reiniciar un pod Kubernetes, emita comandos utilizando la herramienta Kubectl. Se conectará con el servidor Kubeapi. Permítanos explorar las opciones disponibles:

Reiniciar un contenedor dentro de una cápsula

Una cápsula puede contener varios contenedores. Por otro lado, esencialmente se conecta al contenedor primario dentro de una cápsula cuando se conecta a él. Puede conectarse a cada contenedor que haya definido en un caso si ha definido más de uno.

Puede ver a continuación un ejemplo de especificación POD de múltiples contenedores:


Esto describe un volumen compartido y dos contenedores. El archivo HTML será servido por el contenedor Nginx y cada segundo el contenedor de Ubuntu agregará un sello de fecha al archivo HTML.

Dado que no especificó a qué contenedor conectarse, elegirá automáticamente el primero (NGINX) cuando intente conectarse a esa vaina. La captura de pantalla se adjunta a continuación:


Ahora puede intentar finalizar el proceso PID 1 dentro del contenedor actualmente activo. Ejecute los siguientes comandos como root para lograr esto:


También puede hacer uso de la herramienta Kubectl descrita a continuación:


Según la especificación de POD, K8s ahora intentará reiniciar el contenedor destruido. Para eso, el comando "describir" se usa de la siguiente manera:


Aquí está el resultado del comando anterior:


El estado actual está "en marcha", mientras que el estado anterior fue "terminado."Esto significa que el contenedor fue reiniciado, de acuerdo con esto. Sin embargo, no todos los contenedores pueden acceder a las credenciales raíz. Es por eso que este método podría no ser muy útil.

Reiniciar una vaina escalando

Escalar el recuento de réplicas de una vaina a 0 y luego escalarlo hasta 1 es la forma más sencilla de reiniciarlo. En su lugar, debe construir una implementación porque el comando de escala no se puede usar en pods. Aquí hay una manera fácil de lograr eso:


Escala a 0 y luego a 1 después de eso. Al hacer esto, la cápsula se terminará y luego se redistribuirá al clúster:


Las réplicas están configuradas en 1 como puede ver en esta imagen.


Para ver los detalles de la implementación, ahora hemos utilizado "Kubectl Get Implements."La siguiente es una lista del comando y el resultado:

Reiniciar una cápsula eliminándola y vuelvas a desplegarla

Usando el comando "Kubectl Elete", puede eliminar una cápsula y luego volver a colocarlo. Sin embargo, este enfoque es bastante disruptivo, por lo tanto, no se recomienda.

Reiniciar una vaina usando despliegue

Para reiniciar una cápsula utilizando la forma descrita anteriormente, debe destruir la cápsula existente y luego crear una nueva, o escalar el recuento de réplicas y luego arriba. Con Kubernetes versión 1.15, puede reiniciar un despliegue de manera rodante. Este es el procedimiento sugerido para reiniciar una vaina. Simplemente ingrese el siguiente comando para comenzar:


Ahora, si vigila el estado de despliegue en una terminal diferente, notará el flujo de eventos de la siguiente manera:


Si es saludable, escalará la réplica anterior del despliegue y girará una nueva réplica de la cápsula. El resultado es el mismo, excepto en este enfoque, la orquestación subyacente fue manejada por Kubernetes.

¿Cómo se pueden reiniciar las vainas de Kubernetes de diferentes maneras??

Primero comencemos con el contenedor Docker. Con el siguiente comando, los contenedores de Docker se pueden reiniciar:

> Docker reiniciar contenedor_id

Pero en Kubernetes, no hay un comando comparable para reiniciar las vainas, especialmente si no hay un archivo YAML especificado. Como alternativa, puede reiniciar las vainas de Kubernetes utilizando comandos Kubectl. Se enumeran los siguientes comandos:

El comando kubectl set env envía

Un método es usar el comando de escala kubectl. Esto modificará el número de réplicas de la cápsula que debe reiniciarse. A continuación se muestra un comando de ejemplo sobre cómo establecer las réplicas en el pod como dos:

> Kubectl Despliegue de despliegue First-Deployment-Replicas = 2

Comando de reinicio de despliegue

Aquí, demostraremos cómo usar el comando de reinicio de despliegue para reiniciar las vainas de Kubernetes:

> Kubectl Rollout reinicie la primera implementación-Depleación -N Demo-Namespace

Se le dice al controlador que extermine cada cápsula individualmente por el comando. Luego escala nueva vaina usando el replicaset. Hasta que cada cápsula nueva sea más reciente que cada cápsula actual cuando el controlador se reanuda, este proceso continúa.

El comando Eliminar pod

Esta sección repasará cómo usar el comando eliminar para reiniciar las vainas de Kubernetes. Puede notar que utilizamos el siguiente comando para deshacerse del objeto API de Pod en esta imagen:

.> kubectl eliminar pod first -pod -n demo_namespace

El esperado se contradice eliminando el objeto POD porque la API de Kubernetes es declarativa. Para mantener la consistencia con la anticipada, la cápsula se recrea, por lo tanto, se recrea.

Una cápsula se puede reiniciar a la vez usando el comando anterior. Consulte el comando adjunto para reiniciar varias vainas:

> Kubectl Eliminar pods de replicaset-multiple-n demo_namespace

El comando mencionado anteriormente reinicia cada vaina eliminando todo el replicación de vainas y luego creando desde cero.

Conclusión

Esta publicación proporcionó información sobre las diversas políticas de reinicio de Kubernetes. Ilustramos cada etapa con la ayuda de ejemplos de muestras. Además, pruebe estos comandos y vea qué salida generan.