Nesta página, mostramos como ativar o reparo automático de nós para clusters no 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 é nulo) correspondente a uma máquina no estado
Available
por aproximadamente 10 minutos.
Estratégia de reparo
O GKE On-Prem inicia 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