Cómo arreglar las vainas de Kubernetes atascadas en el estado de terminación

Cómo arreglar las vainas de Kubernetes atascadas en el estado de terminación
El error de terminación de la cápsula de Kubernetes se lleva a cabo cuando una cápsula permanece en el estado de "terminación" durante un período prolongado. Esto podría ser causado por varios problemas distintivos y puede ser bastante irritante para los desarrolladores. La capacidad de una cápsula para terminar puede quedarse atrapada por una variedad de razones. La escasez de recursos y los problemas relacionados con la POD son posibles. No importa el problema, el problema de terminación de la terminación de Kubernetes POD puede ser un dolor de cabeza importante para los desarrolladores y puede causar retrasos extremos en la implementación de aplicaciones. Este artículo trata de las causas de este problema y su solución paso a paso. Puede aprender sobre el problema y cómo resolverlo con pleno detalle aquí.

Que causa este problema?

Reconocer la causa raíz de este problema es un paso crítico para solucionar este problema. Algunas razones por las cuales las vainas pueden quedarse atascadas en un "estado de terminación" incluyen:

Razón # 1: Falta de recursos

Las vainas de Kubernetes requieren cantidades adecuadas de recursos para funcionar sin ningún problema. Si no hay un número insuficiente de recursos, múltiples vainas pueden comenzar a competir entre sí por los recursos, lo que como resultado puede hacer que una de las cápsulas esté atrapada en un estado de terminación.

Razón # 2: Problemas con la cápsula en sí

Un problema con la configuración o el código de la cápsula puede dar lugar a que esté atascado en un estado de terminación. Si hay finalizadores en el POD, el problema de la raíz puede ser que los finalizadores no se completen. También puede ser el caso de que el POD no responda a la señal de terminación.

Razón # 3: Se puede romper un nodo subyacente

Cada vez que las vainas de Kubernetes no saldrán de la condición de terminación, el nodo subyacente probablemente no funcione mal. Cuando esto se lleva a cabo, las aplicaciones también pueden no programar la falta de disponibilidad. Esto podría convertirse en un drenaje financiero para su organización debido al hecho de que este problema puede causar una escala inútil. Puede ser un desafío para muchos equipos diagnosticar este problema porque las vainas de Kubernetes con frecuencia terminan, lo que dificulta saber cuáles permanecieron durante demasiado tiempo. Resolver este problema es complejo porque el drenaje de nodos en Kubernetes debe configurarse de manera que funcione para su entorno.

Si ve en el archivo de configuración que todas las cápsulas en un solo nodo están en el estado de "terminar", entonces este podría ser el problema.

Cómo arreglar este problema?

Las siguientes formas pueden ayudarlo a solucionar el problema fácilmente.

Eliminar la vaina

Primero, deberá intentar eliminar manualmente la cápsula haciendo los siguientes pasos:

  1. kubectl eliminar -wait = falso pod
  2. kubectl eliminar -grace -period = 1 pod
  3. kubectl eliminar -grace -period = 0 -force pod

Sin embargo, hay pocas posibilidades de que la eliminación manual de la cápsula del espacio de nombres ayude a resolver el problema incluso si da el nombre exacto de la cápsula que desea eliminar.

Si es así, el problema podría ser que el POD no está terminando porque un cierto proceso no está reaccionando a una señal. Por lo tanto, deberá ordenar que el POD se elimine con fuerza utilizando el siguiente comando:

> kubectl eliminar pod [name_of_the_pod] --grace -period = 0 --force kubectl eliminar pod [name_of_the_pod] --graceperiod = 0 --force -n [name_of_the_namespace]

Asegúrese de agregar el nombre de su cápsula en el comando si está en un espacio de nombres dedicado.

Eliminando los finalizadores

Si eliminar la cápsula no funciona con fuerza, entonces el problema principal puede ser con la cápsula misma. Un problema común con el POD es la incapacidad de los finalizadores que se completan, que puede ser el problema principal que está causando que el POD esté atascado en un estado de terminación. Por lo tanto, primero necesitará verificar los finalizadores en el POD obteniendo la configuración del POD:

> kubectl get pod -n [espacio de nombres] -p [name_of_the_pod] -o yaml> /tmp /config_file.TXT

Luego, busque en metadatos para la sección de finalizadores. Si se encuentran algún finalizador, deberá eliminarlos haciendo lo siguiente:

> Kubectl Patch pod [name_of_the_pod] -p '"metadata": "finalizadores": null'

Reiniciar el kubelet

Si las soluciones mencionadas no resuelven este problema, entonces debe intentar reiniciar el kubelet. Sin embargo, es posible que deba involucrar a un administrador si no tiene permiso. Si tiene acceso, debe reiniciar el proceso Kubelet al sshing al nodo.

Cómo evitar que las vainas estén atrapadas en el futuro?

Estos son algunos pasos que puede seguir para asegurarse de que este problema no ocurra en primer lugar:

  • Verifique a fondo sus vainas primero para ver si funcionan correctamente antes de implementarlos.
  • Asegúrese de tener suficientes recursos. La falta de recursos puede hacer que las cápsulas comiencen a competir entre sí por los recursos, lo que, como resultado, puede hacer que uno de los POD esté atascado en un estado de terminación.
  • Asegúrese de que sus vainas no consuman demasiados recursos.
  • Asegúrese de mantener actualizado su clúster de Kubernetes para evitar cualquier problema en el futuro.
  • Verifique constantemente si hay algún problema con la configuración o el código de sus vainas.

Conclusión

Los problemas que pueden surgir como resultado de que una cápsula esté atrapada en el estado de terminación haga que valga la pena tomar medidas adicionales para garantizar, antes de desplegarse, que no hay problemas con la cápsula en sí, por ejemplo, puede haber un problema. con la configuración del cápsula que probablemente hará que la cápsula esté atascada en el estado de terminación. También debe tener mucho cuidado para evitar cosas que pueden resultar en este problema, como la falta de recursos o el clúster de Kubernetes que no están actualizados. Si este problema aún ocurre a pesar de tomar los pasos necesarios para evitarlo, lo primero que debe hacerse será identificar la causa raíz de este problema y usar una solución en consecuencia.