A partir de la versión 1.26, GKE en AWS habilita automáticamente el apagado ordenado de nodos . Esta función gestiona la terminación ordenada de los pods durante el apagado de los nodos. La terminación ordenada permite que los pods guarden su estado y liberen recursos antes de que se apague el nodo. Este método de terminación de pods minimiza el riesgo de pérdida de datos. También minimiza el riesgo de interrupciones en otros pods y servicios que dependen o interactúan con los pods que se apagan, lo que mejora la resiliencia de los clústeres.
Cómo funciona
Un evento, como un mantenimiento programado, el escalado de nodos o un problema de hardware, activa el apagado de un nodo. El componente kubelet
detecta el evento e inicia el proceso de terminación ordenada del nodo indicando systemd
que retrase el apagado del sistema durante un tiempo especificado. Este retraso le da tiempo al nodo para drenar y expulsar los pods que se ejecutan en él.
El objetivo de la terminación de nodo ordenada es terminar correctamente los pods, tanto los que no pertenecen al sistema como los que son críticos para el sistema, antes de que el nodo se apague. Se utilizan las siguientes configuraciones predeterminadas:
-
ShutdownGracePeriod
: 30 segundos -
ShutdownGracePeriodCriticalPods
: 15 segundos
Esta configuración otorga a los pods que no pertenecen al sistema 15 segundos para cerrarse correctamente antes de ser forzados a cerrarse. Los pods críticos del sistema tienen 15 segundos para apagarse después de que los pods que no pertenecen al sistema hayan cerrado. Sin embargo, dado que esta función funciona con el máximo esfuerzo, existe la posibilidad de que un nodo no pueda apagarse correctamente dentro del periodo de 30 segundos designado.
Factores desencadenantes y limitaciones
Los eventos que activan el apagado elegante del nodo incluyen eventos planificados como los siguientes:
- Apagados ordenados por el usuario
- Terminación de instancias
- Mantenimiento programado
- Reducir la escala de un clúster
En estos escenarios, kubelet
detecta el evento de apagado del nodo e inicia el proceso de apagado elegante del nodo.
Por el contrario, el apagado ordenado del nodo no se puede activar cuando el comando de apagado no activa el mecanismo de bloqueo del inhibidor systemd
del que depende el componente kubelet
. Ejemplos de este tipo de situaciones incluyen lo siguiente:
- desconexiones de red
- Fallos de hardware
- Recursos insuficientes como memoria o CPU
- Cortes de energía inesperados.
En estos casos, el nodo podría apagarse abruptamente, causando potencialmente interrupciones o pérdida de datos.