Configurar la reparación automática del nodo

En esta página, se muestra cómo habilitar la reparación automática de nodos para clústeres de GKE On-Prem.

La función de reparación automática de nodos detecta y repara de manera continua los nodos en mal estado en un clúster. La función está inhabilitada de forma predeterminada. Puedes habilitar la función durante la creación del clúster de usuario o de administrador. También puedes habilitar la característica para un clúster de usuario existente, pero no para un clúster de administrador existente.

Condiciones en mal estado

Las siguientes condiciones indican que un nodo está en mal estado:

  • La condición del nodo NotReady es true durante aproximadamente 10 minutos.

  • El estado de la máquina es Unavailable durante aproximadamente 10 minutos después de la creación correcta.

  • El estado de la máquina no es Available durante aproximadamente 30 minutos después de la creación de la VM.

  • No hay ningún objeto de nodo (nodeRef es nil) que corresponda a una máquina en el estado Available durante unos 10 minutos.

Estrategia de reparación

GKE On-Prem inicia una reparación en un nodo si este cumple con al menos una de las condiciones de la lista anterior.

La reparación desvía el nodo en mal estado y crea una VM nueva. Si el desvío de nodos no funciona correctamente durante una hora, la reparación fuerza el desvío y desconecta de forma segura los discos administrados de Kubernetes conectados.

Si hay varios nodos en mal estado en la misma MachineDeployment, la reparación se realiza solo en uno de esos nodos a la vez.

Archivos de configuración de clúster v1

Para habilitar la reparación automática de nodos, debes usar un archivo de configuración v1, ya sea el archivo de configuración de clúster de administrador v1 o el archivo de configuración de clúster de usuario v1. La reparación automática de nodo no es compatible con el archivo de configuración v0.

Habilita la reparación automática de nodos para un clúster nuevo

En el archivo de configuración de tu clúster de administrador o usuario, configura autoRepair.enabled como true:

autoRepair:
  enabled: true

Continúa con los pasos para crear tu clúster de administrador o usuario.

Habilita la reparación automática de nodos para un clúster de usuario existente:

En el archivo de configuración del clúster de usuario, configura autoRepair.enabled como true:

autoRepair:
  enabled: true

Actualiza el clúster:

gkectl update cluster --config USER_CLUSTER_CONFIG --kubeconfig ADMIN_KUBECONFIG

Reemplaza lo siguiente:

  • USER_CLUSTER_CONFIG es la ruta de acceso del archivo de configuración del clúster de usuario.

  • ADMIN_KUBECONFIG: la ruta de acceso al archivo kubeconfig del clúster de administrador

Inhabilita la reparación automática de nodos para un clúster de usuario

En el archivo de configuración del clúster de usuario, configura autoRepair.enabled como false:

autoRepair:
  enabled: false

Actualiza el clúster:

gkectl update cluster --config USER_CLUSTER_CONFIG --kubeconfig ADMIN_KUBECONFIG

Inhabilita la reparación automática de nodos para un clúster de administrador

A fin de inhabilitar la reparación automática de nodos para un clúster de administrador, borra la implementación cluster-health-controller:

kubectl --kubeconfig ADMIN_KUBECONFIG] delete deployment cluster-health-controller --namespace kube-system

Depura la reparación automática de nodos

Puedes investigar los problemas con la reparación automática de nodos si describes los objetos Machine y Node en el clúster de administrador. Por ejemplo:

Enumera los objetos de la máquina:

kubectl --kubeconfig kubeconfig get machines

Resultado:

default     gke-admin-master-wc
default     gke-admin-node-7458969ff8-5cg8d
default     gke-admin-node-7458969ff8-svqj7
default     xxxxxx-user-cluster-41-25j8d-567f9c848f-fwjqt

Describe uno de los objetos Machine:

kubectl --kubeconfig kubeconfig describe machine gke-admin-master-wcbrj

En el resultado, busca los eventos de cluster-health-controller.

Del mismo modo, puedes enumerar y describir objetos de nodo. Por ejemplo:

kubectl --kubeconfig kubeconfig get nodes
...
kubectl --kubeconfig kubeconfig describe node gke-admin-master-wcbrj

Reparación de nodos manual

En caso de que haya problemas de nodos que no estén cubiertos por la lógica de reparación automática, o que no hayas habilitado la reparación automática de nodos, puedes realizar una reparación manual. Esto borra y vuelve a crear el nodo.

Obtén el nombre del objeto Machine que corresponde al nodo:

kubectl --kubeconfig KUBECONFIG get machines

Reemplaza KUBECONFIG con la ruta del archivo kubeconfig de clúster de administrador o usuario.

Agrega la anotación repair al objeto Machine:

kubectl annotate --kubeconfig KUBECONFIG machine MACHINE_NAME onprem.cluster.gke.io/repair-machine=true

Reemplaza MACHINE_NAME por el nombre del objeto Machine.

Borra el objeto Machine:

kubectl delete --kubeconfig KUBECONFIG machine MACHINE_NAME