En Google Distributed Cloud, las comprobaciones periódicas del estado y la reparación automática de nodos están habilitadas de forma predeterminada.
La función de reparación automática de nodos detecta y repara continuamente los nodos en mal estado de un clúster.
Las comprobaciones de estado periódicas se ejecutan cada quince minutos. Las comprobaciones son las mismas que las que realiza gkectl diagnose cluster
. Los resultados se muestran como registros y eventos en objetos de clúster en el clúster de administrador.
Asegúrate de que tanto el clúster de administrador como el de usuario tengan una dirección IP adicional disponible para la reparación automática de nodos.
Si el clúster avanzado está habilitado, las comprobaciones periódicas del estado no se ejecutan como parte de la reparación automática.
Condiciones de nodos incorrectas cuando no está habilitado el clúster avanzado
Las siguientes condiciones indican que un nodo no está en buen estado cuando enableAdvanceCluster
es false
.
La condición del nodo
NotReady
estrue
durante aproximadamente 10 minutos.El estado de la máquina es
Unavailable
durante unos 10 minutos después de que se haya creado correctamente.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
) correspondiente a una máquina en el estadoAvailable
durante aproximadamente 10 minutos.La condición del nodo
DiskPressure
estrue
durante aproximadamente 30 minutos.
Estados de nodos incorrectos cuando el clúster avanzado está habilitado
Las siguientes condiciones indican que un nodo no está en buen estado cuando enableAdvanceCluster
es true
.
La condición del nodo
NotReady
estrue
durante aproximadamente 10 minutos.La condición del nodo
DiskPressure
estrue
durante aproximadamente 30 minutos.
Estrategia de reparación de nodos
Google Distributed Cloud inicia una reparación en un nodo si este cumple al menos una de las condiciones de la lista anterior.
La reparación agota el nodo incorrecto y crea una nueva VM. Si el drenaje del nodo no se completa en una hora, la reparación fuerza el drenaje y separa de forma segura los discos gestionados de Kubernetes adjuntos.
Si hay varios nodos en mal estado en el mismo MachineDeployment, la reparación se realiza en uno solo de esos nodos a la vez.
El número de reparaciones por hora de un grupo de nodos está limitado a un máximo de:
- Tres
- El 10 % del número de nodos del grupo de nodos
Habilitar la reparación de nodos y la comprobación del estado en un clúster nuevo
En el archivo de configuración del clúster de administrador o de usuario, asigna el valor autoRepair.enabled
a true
:
autoRepair: enabled: true
Sigue los pasos para crear tu clúster de administrador o de usuario.
Habilitar la reparación de nodos y la comprobación del estado de un clúster de usuarios
En el archivo de configuración del clúster de usuario, asigna el valor true
a autoRepair.enabled
:
Actualiza el clúster:
gkectl update cluster --kubeconfig ADMIN_CLUSTER_KUBECONFIG --config USER_CLUSTER_CONFIG
Haz los cambios siguientes:
ADMIN_CLUSTER_KUBECONFIG: la ruta del archivo kubeconfig de tu clúster de administrador
USER_CLUSTER_CONFIG: la ruta del archivo de configuración del clúster de usuarios
Habilitar la reparación de nodos y la comprobación del estado de un clúster de administrador
En el archivo de configuración del clúster de administrador, defina autoRepair.enabled
como true
:
Actualiza el clúster:
gkectl update admin --kubeconfig ADMIN_CLUSTER_KUBECONFIG --config ADMIN_CLUSTER_CONFIG
Sustituye ADMIN_CLUSTER_CONFIG por la ruta del archivo de configuración de tu clúster de administrador.
Ver registros de un comprobador de estado
Lista todos los pods del comprobador de estado del clúster de administrador:
kubectl --kubeconfig ADMIN_CLUSTER_KUBECONFIG get pods --all-namespaces | grep cluster-health-controller
El resultado es similar al siguiente:
kube-system cluster-health-controller-6c7df455cf-zlfh7 2/2 Running my-user-cluster cluster-health-controller-5d5545bb75-rtz7c 2/2 Running
Para ver los registros de un comprobador de estado concreto, obtenga los registros del contenedor cluster-health-controller
de uno de los pods. Por ejemplo, para obtener los registros de my-user-cluster
que se muestran en el resultado anterior, haz lo siguiente:
kubectl --kubeconfig ADMIN_CLUSTER_KUBECONFIG --namespace my-user-cluster logs \ cluster-health-controller-5d5545bb75-rtz7c cluster-health-controller
Ver eventos de un comprobador de estado
Lista todos los objetos Cluster de tu clúster de administrador:
kubectl --kubeconfig ADMIN_CLUSTER_KUBECONFIG get clusters --all-namespaces
El resultado es similar al siguiente:
default gke-admin-ldxh7 2d15h my-user-cluster my-user-cluster 2d12h
Para ver los eventos de un clúster concreto, ejecuta kubectl describe cluster
con la marca --show-events
. Por ejemplo, para ver los eventos de my-user-cluster
que se muestran en el resultado anterior, haz lo siguiente:
kubectl --kubeconfig ADMIN_CLUSTER_KUBECONFIG --namespace my-user-cluster \ describe --show-events cluster my-user-cluster
Ejemplo:
Events: Type Reason Age From Message ---- ------ ---- ---- ------- Warning ValidationFailure 17s cluster-health-periodics-controller validator for Pod returned with status: FAILURE, reason: 1 pod error(s).
Inhabilitar la reparación de nodos y la comprobación del estado de un clúster de usuarios
En el archivo de configuración del clúster de usuario, asigna el valor false
a autoRepair.enabled
:
Actualiza el clúster:
gkectl update cluster --kubeconfig ADMIN_CLUSTER_KUBECONFIG --config USER_CLUSTER_CONFIG
Inhabilitar la reparación de nodos y la comprobación del estado de un clúster de administrador
En el archivo de configuración del clúster de administrador, defina autoRepair.enabled
como false
:
Actualiza el clúster:
gkectl update admin --kubeconfig ADMIN_CLUSTER_KUBECONFIG --config ADMIN_CLUSTER_CONFIG
Depurar la reparación automática de nodos cuando no está habilitado el clúster avanzado
Para investigar problemas con la reparación automática de nodos, puede describir los objetos Machine y Node en el clúster de administración. Veamos un ejemplo:
Lista los objetos de máquina:
kubectl --kubeconfig ADMIN_CLUSTER_KUBECONFIG get machines
Ejemplo:
default gke-admin-master-wcbrj 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 ADMIN_CLUSTER_KUBECONFIG describe machine gke-admin-master-wcbrj
En el resultado, busca eventos de cluster-health-controller
.
Del mismo modo, puede enumerar y describir objetos de nodo. Por ejemplo:
kubectl --kubeconfig ADMIN_CLUSTER_KUBECONFIG get nodes ... kubectl --kubeconfig ADMIN_CLUSTER_KUBECONFIG describe node gke-admin-master-wcbrj
Depurar la reparación automática de nodos cuando el clúster avanzado está habilitado
Para investigar problemas con la reparación automática de nodos, puedes describir los objetos Machine y Node en el clúster de administración y en el clúster correspondiente, respectivamente. Veamos un ejemplo:
Lista los objetos de máquina:
kubectl --kubeconfig ADMIN_CLUSTER_KUBECONFIG get machines
Ejemplo:
NAMESPACE NAME NODEPOOL ci-1f6861fe28cac8fb390bc798927c717b 10.251.172.47 ci-1f6861fe28cac8fb390bc798927c717b-np ci-1f6861fe28cac8fb390bc798927c717b 10.251.173.64 ci-1f6861fe28cac8fb390bc798927c717b-cp ci-1f6861fe28cac8fb390bc798927c717b 10.251.173.66 ci-1f6861fe28cac8fb390bc798927c717b-cp ci-1f6861fe28cac8fb390bc798927c717b 10.251.174.19 ci-1f6861fe28cac8fb390bc798927c717b-np ci-1f6861fe28cac8fb390bc798927c717b 10.251.175.15 ci-1f6861fe28cac8fb390bc798927c717b-np ci-1f6861fe28cac8fb390bc798927c717b 10.251.175.30 ci-1f6861fe28cac8fb390bc798927c717b-cp kube-system 10.251.172.239 gke-admin-bnbp9-cp kube-system 10.251.173.39 gke-admin-bnbp9-cp kube-system 10.251.173.6 gke-admin-bnbp9-cp
Describe la máquina correspondiente al objeto Machine:
kubectl --kubeconfig ADMIN_CLUSTER_KUBECONFIG describe machine -n ci-1f6861fe28cac8fb390bc798927c717b 10.251.172.47
En el resultado, busca eventos de auto-repair-controller
.
Del mismo modo, puede enumerar y describir objetos de nodo. Por ejemplo:
kubectl --kubeconfig USER_CLUSTER_KUBECONFIG get nodes ... kubectl --kubeconfig USER_CLUSTER_KUBECONFIG describe node ci-1f6861fe28cac8fb390bc798927c717b-np
Reparación manual de nodos cuando no está habilitado el clúster avanzado
Nodo del plano de control de administrador
El nodo del plano de control de administrador tiene un comando de reparación específico, ya que la reparación manual normal no funciona en él.
Usa gkectl repair
admin-master
para reparar el nodo del plano de control de administrador.
Nodo de plano de control de clúster de usuarios de Controlplane V2
Los nodos de plano de control del clúster de usuarios de Controlplane V2 se gestionan de forma diferente a otros nodos.
Al igual que los clústeres de usuarios de kubeception, los objetos Machine del plano de control de los clústeres de usuarios de Controlplane V2 se encuentran en el clúster de administrador. La reparación automática de nodos está cubierta por la reparación automática de nodos del clúster de administrador.
Si hay problemas con los nodos que no están cubiertos por la lógica de reparación automática de nodos del clúster de administrador o si no has habilitado la reparación automática de nodos del clúster de administrador, puedes hacer una reparación manual. Se elimina y se vuelve a crear el nodo.
Obtén el nombre del objeto Machine que corresponde al nodo:
kubectl --kubeconfig ADMIN_CLUSTER_KUBECONFIG -n USER_CLUSTER_NAME get machines
Haz los cambios siguientes:
ADMIN_CLUSTER_KUBECONFIG
: la ruta del archivo kubeconfig de tu clúster de administrador.USER_CLUSTER_NAME
: el nombre del clúster de usuarios objetivo.
Añade la anotación
repair
al objeto Machine:kubectl annotate --kubeconfig ADMIN_CLUSTER_KUBECONFIG -n USER_CLUSTER_NAME machine MACHINE_NAME onprem.cluster.gke.io/repair-machine=true
Sustituye
MACHINE_NAME
por el nombre del objeto Machine.Elimina el objeto Machine:
kubectl delete --kubeconfig ADMIN_CLUSTER_KUBECONFIG -n USER_CLUSTER_NAME machine MACHINE_NAME
Vuelve a crear los nodos uno a uno para el plano de control de alta disponibilidad. De lo contrario, es posible que el plano de control se interrumpa de forma inesperada.
Otros nodos
Si hay problemas con los nodos que no cubre la lógica de reparación automática o no has habilitado la reparación automática de nodos, puedes hacer una reparación manual. De esta forma, se elimina y se vuelve a crear el nodo.
Obtén el nombre del objeto Machine que corresponde al nodo:
kubectl --kubeconfig CLUSTER_KUBECONFIG get machines
Sustituye CLUSTER_KUBECONFIG por la ruta del archivo kubeconfig de tu clúster de administrador o de usuario.
Añade la anotación repair
al objeto Machine:
kubectl annotate --kubeconfig CLUSTER_KUBECONFIG machine MACHINE_NAME onprem.cluster.gke.io/repair-machine=true
Sustituye MACHINE_NAME por el nombre del objeto Machine.
Elimina el objeto Machine:
kubectl delete --kubeconfig CLUSTER_KUBECONFIG machine MACHINE_NAME
Reparación manual de nodos cuando está habilitado el clúster avanzado
Nodo del plano de control de administrador
No se admite la reparación manual de nodos del plano de control del administrador
Nodo de plano de control de clúster de usuarios o nodos de trabajo
Obtén el nombre del objeto Inventory Machine que corresponde al nodo usando la IP del nodo para que coincidan los objetos:
kubectl --kubeconfig ADMIN_CLUSTER_KUBECONFIG -n USER_CLUSTER_NAME get inventorymachines
Sustituye lo siguiente: ADMIN_CLUSTER_KUBECONFIG: la ruta de tu archivo kubeconfig de administrador. USER_CLUSTER_NAME: el nombre del clúster de usuarios objetivo.
Añade la anotación force-remove
al objeto Inventory Machine:
kubectl annotate --kubeconfig ADMIN_CLUSTER_KUBECONFIG -n USER_CLUSTER_NAME inventorymachine MACHINE_NAME baremetal.cluster.gke.io/force-remove=true
Sustituye MACHINE_NAME por el nombre del objeto Machine.
Elimina el objeto Inventory Machine:
kubectl delete --kubeconfig ADMIN_CLUSTER_KUBECONFIG -n USER_CLUSTER_NAME inventorymachine MACHINE_NAME
Vuelve a crear los nodos uno a uno para el plano de control de alta disponibilidad. De lo contrario, es posible que el plano de control se interrumpa de forma inesperada.