Como configurar o reparo automático de nós

Nesta página, mostramos como ativar o reparo automático de nós para clusters do Anthos no VMware (GKE On-Prem).

O recurso de reparo automático de nós detecta e corrige continuamente nós não íntegros em um cluster. Esse recurso fica desativado por padrão. É possível ativar o recurso durante a criação do cluster de administrador ou usuário. É possível também ativar o recurso para um cluster de usuário atual, mas não para um cluster de administrador atual.

Condições não íntegras

As seguintes condições indicam que um nó não está íntegro:

  • A condição do nó NotReady é true por aproximadamente 10 minutos.

  • O estado da máquina é Unavailable por aproximadamente 10 minutos após a criação.

  • O estado da máquina não é Available por aproximadamente 30 minutos após a criação da VM.

  • Não há objeto de nó (nodeRef é nil) correspondente a uma máquina no estado Available por aproximadamente 10 minutos.

  • A condição do nó DiskPressure é true por aproximadamente 30 minutos.

Estratégia de reparo

Os clusters do Anthos no VMware iniciam um reparo em um nó se o nó atender a pelo menos uma das condições na lista anterior.

O reparo drena o nó não íntegro e cria uma nova VM. Se a diminuição do nó falhar por uma hora, o reparo força a diminuição e desconecta os discos gerenciados do Kubernetes com segurança.

Se houver vários nós não íntegros na mesma MachineDeployment, o reparo será executado em apenas um desses nós por vez.

Arquivos de configuração do cluster v1

Para ativar o reparo automático de nós, você precisa usar um arquivo de configuração v1, seja o Arquivo de configuração do cluster de administrador v1 ou o Arquivo de configuração do cluster de usuário v1. O reparo automático de nós não é compatível com o arquivo de configuração v0.

Como ativar o reparo automático de nós em um novo cluster

No arquivo de configuração do cluster administrador ou de usuário, defina autoRepair.enabled como true:

autoRepair:
  enabled: true

Continue com as etapas para criar seu cluster de administrador ou usuário.

Como ativar o reparo automático de nós para um cluster de usuário atual:

No arquivo de configuração do cluster do usuário, defina autoRepair.enabled como true:

autoRepair:
  enabled: true

Atualize o cluster:

gkectl update cluster --config USER_CLUSTER_CONFIG --kubeconfig ADMIN_KUBECONFIG

Substitua:

  • USER_CLUSTER_CONFIG: o caminho do arquivo de configuração do cluster de usuário.

  • ADMIN_KUBECONFIG: o caminho do arquivo kubeconfig do cluster de administrador;

Como desativar o reparo automático de nós em um cluster de usuário

No arquivo de configuração do cluster do usuário, defina autoRepair.enabled como false:

autoRepair:
  enabled: false

Atualize o cluster:

gkectl update cluster --config USER_CLUSTER_CONFIG --kubeconfig ADMIN_KUBECONFIG

Como desativar o reparo automático de nós em um cluster de administrador

Para desativar o reparo automático de nós em um cluster de administrador, exclua a implantação cluster-health-controller:

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

Como depurar o reparo automático de nós

É possível investigar problemas com o reparo automático de nós. Basta descrever os objetos de máquina e de nós no cluster de administração. Veja um exemplo:

Liste os objetos da máquina:

kubectl --kubeconfig kubeconfig get machines

Saída:

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

Descreva um dos objetos da máquina:

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

Na saída, procure eventos de cluster-health-controller.

Da mesma forma, é possível listar e descrever objetos de nó. Por exemplo:

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

Reparo manual de nós

Se houver problemas de nó não cobertos pela lógica de reparo automático ou se você não tiver ativado o reparo automático de nós, será possível fazer um reparo manual. Isso exclui e recria o nó.

Consiga o nome do objeto de máquina que corresponde ao nó:

kubectl --kubeconfig KUBECONFIG get machines

Substitua KUBECONFIG pelo caminho do arquivo kubeconfig do cluster de usuário ou administrador.

Adicione a anotação repair ao objeto da máquina:

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

Substitua MACHINE_NAME pelo nome do objeto da máquina.

Exclua o objeto da máquina:

kubectl delete --kubeconfig KUBECONFIG machine MACHINE_NAME