Como faço para verificar, escalar, excluir ou drenar meus nós de processamento no Amazon EKS?

4 minuto de leitura
0

Usei eksctl ou o Console de Gerenciamento da AWS para iniciar meus nós de processamento do Amazon Elastic Kubernetes Service (Amazon EKS). Agora eu quero verificar, escalar, drenar ou excluir meus nós de processamento.

Resolução

Verificar seus nós de processamento

Para listar os nós de processamento que estão registrados no ambiente de gerenciamento do Amazon EKS, execute o seguinte comando:

kubectl get nodes -o wide

A saída retorna o nome, a versão Kubernetes, o sistema operacional (SO) e o endereço IP dos nós de processamento.

Para obter informações adicionais sobre um único nó de processamento, execute o seguinte comando:

kubectl describe node/node_name

Observação: substitua node_name pelo seu valor, por exemplo: ip-XX-XX-XX-XX.us-east-1.compute.internal.

A saída mostra mais informações sobre o nó de processamento, incluindo rótulos, taints, informações do sistema e status.

Escale seus nós de processamento

Observação: se seus grupos de nós aparecerem no console do Amazon EKS, use um grupo de nós gerenciados. Caso contrário, use um grupo de nós não gerenciados.

Use um dos métodos a seguir para escalar seus nós de processamento.

Escalar observações de processamento com eksctl

Para usar eksctl para escalar seus nós de trabalho gerenciados ou não gerenciados, execute o seguinte comando:

eksctl scale nodegroup --cluster=clusterName --nodes=desiredCount --name=nodegroupName

Observação: substitua clusterName, desiredCount e nodegroupName pelos seus valores.

Escalar nós de processamento sem eksctl

Para escalar seus nós de processamento gerenciados sem eksctl, edite a configuração do grupo de nós.

Escalar nós de processamento com o CloudFormation

Para usar o AWS CloudFormation para escalar seus nós de processamento não gerenciados, conclua as seguintes etapas:

  1. Use um modelo do CloudFormation para iniciar seus nós de processamento do Windows ou Linux.
  2. Modifique os parâmetros NodeAutoScalingGroupDesiredCapacity, NodeAutoScalingGroupMinSize ou NodeAutoScalingGroupMaxSize em sua pilha do CloudFormation.

Drene seus nós de processamento

Importante: a ação de drenagem isola o nó de processamento, e o Kubernetes não agenda mais novos pods no nó. Os pods que funcionam no nó de destino são removidos dos nós de drenagem e interrompidos.

Você pode drenar um grupo de nós inteiro ou um único nó de processamento.

Drenar todo o grupo de nós

Se você usar eksctl para iniciar seus nós de processamento, execute o seguinte comando:

eksctl drain nodegroup --cluster=clusterName --name=nodegroupName

Observação: substitua clusterName e nodegroupName pelos seus valores.

Para drenar o grupo de nós, execute o seguinte comando:

eksctl drain nodegroup --cluster=clusterName --name=nodegroupName --undo

Observação: substitua clusterName e nodegroupName pelos seus valores.

Se você não usar eksctl para iniciar seus nós de processamento, identifique e drene todos os nós de uma versão específica do Kubernetes. Por exemplo:

#!/bin/bash  
K8S_VERSION=1.18.8-eks-7c9bda
nodes=$(kubectl get nodes -o jsonpath="{.items[?(@.status.nodeInfo.kubeletVersion==\"v$K8S_VERSION\")].metadata.name}")
for node in ${nodes[@]}
do
    echo "Draining $node"
    kubectl drain $node --ignore-daemonsets --delete-local-data
done

Para identificar e drenar todos os nós de uma versão específica do Kubernetes, use o código a seguir:

#!/bin/bash  
K8S_VERSION=1.18.8-eks-7c9bda
nodes=$(kubectl get nodes -o jsonpath="{.items[?(@.status.nodeInfo.kubeletVersion==\"v$K8S_VERSION\")].metadata.name}")
for node in ${nodes[@]}
do
    echo "Uncordon $node"
    kubectl uncordon $node
done

Observação: para obter a versão do seu nó de processamento, execute o seguinte comando. O número da versão aparece na coluna VERSION:

$ kubectl get nodesNAME                                      STATUS   ROLES    AGE     VERSION
ip-XXX-XXX-XX-XXX.ec2.internal            Ready    <none>   6d4h    v1.18.8-eks-7c9bda
ip-XXX-XXX-XX-XXX.ec2.internal            Ready    <none>   6d4h    v1.18.8-eks-7c9bda

Drenar um único nó de processamento

Se você não usa eksctl para iniciar seus nós de processamento ou deseja drenar apenas um nó específico, isole normalmente seu nó de processamento:

kubectl drain node_name --ignore-daemonsets

Observação: substitua node_name pelo seu valor.

Para desfazer o isolamento, execute o seguinte comando:

kubectl uncordon node_name

Observação: substitua node_name pelo seu valor.

Para migrar suas aplicações existentes para um novo grupo de nós de processamento, consulte Migrar para um novo grupo de nós.

Exclua seus nós de processamento

Importante: a ação de exclusão é irrecuperável.

Se você usar eksctl, execute o seguinte comando:

eksctl delete nodegroup --cluster=clusterName --name=nodegroupName

Se você tiver um grupo de nós gerenciados, conclua as etapas em Excluir um grupo de nós gerenciados.

Se você tiver um grupo de nós não gerenciado e tiver usado um modelo do CloudFormation para iniciar seus nós de processamento, exclua a pilha. Você deve excluir a pilha que criou para seu grupo de nós do Windows ou Linux.

Se você tiver um grupo de nós não gerenciado e não tiver usado um modelo do CloudFormation para iniciar seus nós de processamento, exclua o grupo do Auto Scaling. Se você não usou um grupo do Auto Scaling, encerre a instância diretamente.

AWS OFICIAL
AWS OFICIALAtualizada há 9 meses