Reparos automáticos de nós
O recurso de reparo automático de nós monitora continuamente a integridade de cada nó em um pool. Se um nó se tornar não íntegro, o recurso de reparo automático de nó o repara automaticamente. Esse recurso diminui a probabilidade de interrupções do cluster e a degradação do desempenho, além de minimizar a necessidade de manutenção manual dos clusters.
É possível ativar o reparo automático de nós ao criar ou atualizar um pool de nós. Esse recurso é ativado ou desativado em pools de nós, e não em nós individuais.
Condições de nó não íntegras
O reparo automático de nós examina o status de integridade de cada nó para determinar se
ele exige reparo. Um nó é considerado íntegro se informar um status Ready
.
Caso contrário, se ele relatar consecutivamente um status não íntegro por uma duração específica, os reparos serão iniciados.
Um status não íntegro pode surgir de um estado NotReady
, detectado em verificações consecutivas em aproximadamente 15 minutos. Como alternativa, um status não íntegro pode resultar de espaço esgotado no disco de inicialização, identificado durante um período de aproximadamente 30 minutos.
Verifique manualmente os sinais de integridade do nó a qualquer momento executando o
comando kubectl get nodes
.
Estratégias de reparo de nós
O reparo automático de nós segue determinadas estratégias para garantir a integridade geral do cluster e a disponibilidade dos aplicativos durante o processo de reparo. Nesta seção, descrevemos como o recurso de reparo automático de nós respeita as configurações de PodDisruptionBudget
, respeita a Pod Termination
Grace Period
e toma outras medidas que minimizam a interrupção do cluster ao reparar nós.
Honre PodDisruptionBudget
por 30 minutos
Se um nó exigir reparo, ele não será drenado instantaneamente e recriado. Em vez disso, o recurso de reparo automático de nós atende às configurações de PodDisruptionBudget (PDB) por até 30 minutos. Após esse período, todos os pods no nó são excluídos. Uma configuração de PDB define, entre outras coisas, o número mínimo de réplicas de um pod específico que precisa estar disponível a qualquer momento.
Ao honrar o PodDisruptionBudget
por aproximadamente 30 minutos, o recurso de reparo automático de nós oferece uma janela de oportunidade para que os pods sejam reprogramados e redistribuídos com segurança em outros nós íntegros no cluster. Isso
ajuda a manter o nível desejado de disponibilidade do aplicativo durante o processo
de reparo.
Após o limite de tempo de 30 minutos, o reparo automático de nós continuará com o processo de reparo, mesmo que isso viole a PodDisruptionBudget
. Sem um limite de tempo, o processo poderá ser interrompido indefinidamente se a configuração PodDisruptionBudget
impedir as remoções necessárias.
Respeitar o período de carência do encerramento do pod
O recurso de reparo automático de nós também respeita um período de carência da rescisão do pod de aproximadamente 30 minutos. O período de carência do encerramento do pod oferece aos pods uma janela de tempo para um encerramento progressivo. Durante o período de carência, o kubelet em um nó é responsável por executar tarefas de limpeza e liberar recursos associados aos pods nesse nó. O recurso de reparo automático de nós permite até 30 minutos para que o kubelet conclua essa limpeza. Se os 30 minutos alocados acabarem, o nó será forçado a ser encerrado, independentemente de os pods terem sido encerrados normalmente.
Estratégias extras de reparo de nós
O reparo automático de nós também implementa as seguintes estratégias:
- Se vários nós precisarem de reparo, eles serão reparados um por vez para limitar a interrupção do cluster e proteger cargas de trabalho.
- Se você desativar o reparo automático de nós durante o processo, os reparos em andamento continuarão assim até que a operação de reparo seja bem-sucedida ou falhe.
Como ativar e desativar o reparo automático de nós
É possível ativar ou desativar o reparo automático de nós ao criar ou atualizar um pool de nós. Esse recurso é ativado ou desativado em pools de nós, e não em nós individuais.
Ativar o reparo automático de um novo pool de nós
gcloud container azure node-pools create NODE_POOL_NAME \
--cluster CLUSTER_NAME \
--location GOOGLE_CLOUD_LOCATION \
--node-version 1.32.4-gke.200 \
--vm-size VM_SIZE \
--max-pods-per-node 110 \
--min-nodes MIN_NODES \
--max-nodes MAX_NODES \
--azure-availability-zone AZURE_ZONE \
--ssh-public-key SSH_PUBLIC_KEY" \
--subnet-id SUBNET_ID \
--enable-autorepair
Substitua:
NODE_POOL_NAME
: um nome exclusivo para o pool de nós, por exemplo,node-pool-1
CLUSTER_NAME
: o nome do cluster do GKE no AzureGOOGLE_CLOUD_LOCATION
: o local doGoogle Cloud que gerencia seu clusterNODE_VERSION
: a versão do Kubernetes a ser instalada em cada nó no pool de nós (por exemplo, "1.32.4-gke.200")VM_SIZE
: um tamanho de VM do Azure compatívelMIN_NODES
: o número mínimo de nós no pool de nós. Para mais informações, consulte Escalonador automático de cluster.MAX_NODES
: o número máximo de nós no pool.AZURE_ZONE
: a zona de disponibilidade do Azure em que o GKE no Azure inicia o pool de nós, por exemplo,3
SSH_PUBLIC_KEY
: o texto da chave pública SSH.SUBNET_ID
: o ID da sub-rede do pool de nós.
Ativar o reparo automático de um pool de nós atual
Para ativar o reparo automático de nós em um pool de nós, execute o seguinte comando:
gcloud container azure node-pools update NODE_POOL_NAME \
--cluster CLUSTER_NAME \
--location GOOGLE_CLOUD_LOCATION \
--enable-autorepair
Substitua:
NODE_POOL_NAME
: um nome exclusivo para o pool de nós, por exemplo,node-pool-1
CLUSTER_NAME
: o nome do cluster.GOOGLE_CLOUD_LOCATION
: a Google Cloud região que gerencia o cluster
Desativar o reparo automático de um pool de nós
gcloud container azure node-pools update NODE_POOL_NAME \
--cluster CLUSTER_NAME \
--location GOOGLE_CLOUD_LOCATION \
--no-enable-autorepair
Substitua:
NODE_POOL_NAME
: um nome exclusivo para o pool de nós, por exemplo,node-pool-1
CLUSTER_NAME
: o nome do cluster.GOOGLE_CLOUD_LOCATION
: a Google Cloud região que gerencia o cluster
O GKE no Azure executa a desativação otimizada do reparo automático de nós. Ao desativar o reparo automático de nós em um pool de nós, o GKE no Azure inicia uma operação de atualização de pool de nós. A operação aguarda a reparação de qualquer nó antes de prosseguir.
Verificar se o reparo automático de nós está ativado
Execute o seguinte comando para verificar se o reparo automático de nós está ativado:
gcloud container azure node-pools describe NODE_POOL_NAME \
--cluster CLUSTER_NAME \
--location GOOGLE_CLOUD_LOCATION
Substitua:
NODE_POOL_NAME
: um nome exclusivo para o pool de nós, por exemplo,node-pool-1
CLUSTER_NAME
: o nome do cluster.GOOGLE_CLOUD_LOCATION
: a Google Cloud região que gerencia o cluster
Histórico de reparo de nós
É possível ver o histórico de reparos realizados em um pool de nós executando o seguinte comando:
gcloud container azure operations list \
--location GOOGLE_CLOUD_LOCATION \
--filter="metadata.verb=repair AND metadata.target=projects/PROJECT_ID/locations/GOOGLE_CLOUD_LOCATION/azureClusters/CLUSTER_NAME/azureNodePools/NODEPOOL_NAME
Substitua:
GOOGLE_CLOUD_LOCATION
: a região Google Cloud compatível que gerencia seu cluster, por exemplo,us-west1
PROJECT_ID
: seu Google Cloud projetoCLUSTER_NAME
: o nome do cluster.NODE_POOL_NAME
: um nome exclusivo para o pool de nós, por exemplo,node-pool-1
Resumo da integridade do pool de nós
Depois de ativar o reparo automático de nós, gere um resumo da integridade do pool de nós executando o seguinte comando:
gcloud container azure node-pools describe NODE_POOL_NAME \
--cluster CLUSTER_NAME \
--location GOOGLE_CLOUD_LOCATION
Um resumo íntegro do pool de nós é semelhante a este exemplo:
{ "name": "some-np-name", "version": "some-version", "state": "RUNNING", ... "errors": [ { "message": "1 node(s) is/are identified as unhealthy among 2 total node(s) in the node pool. No node is under repair." } ], }
O resumo da integridade do pool de nós ajuda a entender o estado atual do pool de nós. Neste exemplo, o resumo contém uma mensagem de erro que informa que um dos dois nós no pool de nós não está íntegro. Também relata que nenhum nó está passando pelo processo de reparo.