Desagüe

Desagüe
Los contenedores son efímeros, como todos los que han trabajado con ellos saben. No solo contenedores y vainas, sino también los nodos se pueden reemplazar con Kubernetes. Los nodos de Kubernetes son máquinas virtuales, servidores y otras entidades computacionalmente potentes donde se ejecutan vainas y contenedores. La tecnología que permite a los usuarios cambiar sin problemas todos los contenedores de un nodo a otro se conoce como drenaje de nodo. Hay una variedad de aplicaciones, como el mantenimiento del servidor, la escala automática de clúster K8s en la que los nodos se agregan y se retiran dinámicamente. Las instancias preventables o spot son instancias que se pueden detener en cualquier momento.

Kubernetes puede detectar la falla del nodo y reprogramar las vainas a otros nodos automáticamente. El único problema es el tiempo que le toma al nodo bajar y la cápsula para ser reprogramada. Veamos cómo puede drenar un nodo en Kubernetes. Pero primero, asegúrese de tener Kubectl instalado en su sistema. Para ejecutar los comandos, también deberá instalar el clúster minikube y luego iniciar la ventana del terminal. Puede usar el minikube siguiendo el comando mencionado a continuación.

Además de eso, asegúrese de que su servidor Kubernetes debe ser la versión 1.5 o más nuevo. Ingrese la "Versión Kubectl" si desea verificar la versión. Debe cumplir con ciertos requisitos para completar con éxito esta tarea. No necesita que sus aplicaciones estén disponibles durante el drenaje del nodo, o no necesita que estén altamente disponibles en absoluto. Has aprendido sobre el concepto poddisruptionBudget y configurar poddisruptionBudgets para las aplicaciones que las requieren.

Configurar un presupuesto de interrupción si lo desea

Para asegurarse de que sus cargas de trabajo estén disponibles durante el mantenimiento, cree un poddisruptionBudget. Configure primero un poddisruptionBudgets, luego continúe siguiendo este consejo si la disponibilidad es crucial para cualquier aplicación que pueda ejecutarse en los nodos que está drenando.

El uso de drenaje de kubectl para eliminar/eliminar un nodo

Puede usar el drenaje de Kubectl para desalojar a todos sus vainas antes de realizar el mantenimiento en los desalojos seguros de un nodo, finalizan los contenedores de la cápsula de manera ordenada mientras se mantiene dentro de la poddisruption Budgets que ha establecido.

El drenaje de Kubectl eventualmente ignora algunas vainas en el nodo que no son posibles para ser destruidas de forma predeterminada. Por lo tanto, es seguro apagar el nodo apagando su máquina física o, si se ejecuta en una plataforma en la nube, desinstalando su máquina virtual. Para comenzar, identifique el nodo que desea drenar por su nombre. El siguiente comando mostrará una lista de todos los nodos mencionados en su clúster.

A continuación, informe a Kubernetes que el nodo debe drenarse:

Después de que el nodo regrese (y sin causar un error), puede apagarlo (o de manera equivalente, si en una plataforma en la nube, elimine la máquina virtual que respalda el nodo). Si deja un nodo en el clúster para su mantenimiento, use el siguiente comando para decirle a Kubernetes que puede comenzar a reprogramar nuevas vainas en el nodo.

Drenando numerosos nodos al mismo tiempo

Solo un nodo debe recibir la instrucción de drenaje de Kubectl a la vez. Sin embargo, puede realizar muchas instrucciones de drenaje de Kubectl simultáneamente, en varios terminales, o en el fondo, para diferentes nodos. Incluso si numerosas instrucciones de drenaje funcionan al mismo tiempo, se debe observar poddisruptionBudget.

Si tiene un estado de estado con 3 réplicas y un PoddisruptionBudget de 2, el drenaje de Kubectl solo eliminará una vaina si todas esas vainas están listas. Si ejecuta múltiples comandos de drenaje al mismo tiempo, Kubernetes honrará el poddisruptionBudget y garantizará que solo se ejecuta un drenaje.

Desalojo en Kubernetes

Puede usar la API de desalojo para iniciar mediante programación los desalojos si no está dispuesto a usar el drenaje Kubectl (por ejemplo, para evitar ejecutar un comando externo o tener un mejor control durante todo el proceso de desalojo de POD).

Primero debe estar familiarizado con los clientes de Language Language para usar la API. El subconocimiento de desalojo de una cápsula puede considerarse como una acción eliminada en la cápsula que está controlada por las políticas. Para probar un desalojo, publica un intento de operación (o intenta construir un desalojo con mayor precisión).

Desalojos atascados

A menos que actúe, una aplicación puede romperse y la API de desalojo siempre devolverá 429 o 500. También se pueden ver efectos similares si la última cápsula a desalojarse tiene un período de gracia de terminación largo.

Hay dos opciones en esta situación: abortar o detener la operación automática. Reinicie la automatización después de determinar la causa de la aplicación bloqueada. En lugar de usar la API de desalojo, elimine la cápsula del plano de control de su clúster cuando haya pasado una cantidad razonable de tiempo.

Conclusión

En este artículo, hemos hablado sobre el uso de Kubectl Drain. Se explican varios comandos para ayudarlo a comprender el método de drenaje en Kubernetes.