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 estadoAvailable
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