Ir para o conteúdo

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

5 minuto de leitura
0

Eu usei eksctl ou o console do Amazon Elastic Kubernetes Service (Amazon EKS) para verificar, escalar, drenar ou excluir meus nós de processamento.

Resolução

Verifique seus nós de processamento

Para listar os nós de processamento que você registrou no ambiente de gerenciamento do Amazon EKS, execute o seguinte comando:

kubectl get nodes -o wide

Na saída é possível ver o nome, a versão Kubernetes, o sistema operacional (SO) e o endereço IP dos nós de processamento.

Para obter mais informações sobre um nó de processamento específico, execute o seguinte comando:

kubectl describe node/node_name

Observação: substitua node_name pelo nome do recurso da Amazon (ARN) do seu nó de processamento. Por exemplo, ip-AA-BB-CC-DD.us-east-1.compute.internal.

A saída mostra 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 para escalar seus nós de processamento. 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 nós de processamento com eksctl

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

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

Observação: substitua clusterName por seu nome do cluster, desiredCount pelo número de nós para o qual escalar e nodegroupName pelo nome do grupo de nós.

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, use um modelo do CloudFormation para iniciar seus nós de processamento para Windows ou Linux. Em seguida, modifique os parâmetros NodeAutoScalingGroupDesiredCapacity, NodeAutoScalingGroupMinSize ou NodeAutoScalingGroupMaxSize em sua pilha do CloudFormation.

Drenar 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ó. O Kubernetes remove e impede que os Pods executados no nó de destino drenem os nós.

É possível drenar um grupo de nós inteiro ou um único nó de processamento.

Drenar todo o grupo de nós

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

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

Observação: substitua clusterName pelo nome do cluster e nodegroupName pelo nome do grupo de nós.

Para remover o isolamento de um grupo de nós drenado, execute o seguinte comando:

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

Observação: substitua clusterName pelo nome do cluster e nodegroupName pelo nome do grupo de nós.

Se você não usou eksctl para iniciar seus nós de processamento, execute o script a seguir para drenar todos os nós de uma versão específica do Kubernetes:

#!/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

Observação: substitua 1.18.8-eks-7c9bda pela sua versão do Kubernetes.

Para remover o isolamento dos nós drenados, execute o seguinte script:

#!/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: substitua 1.18.8-eks-7c9bda pela sua versão do Kubernetes.

Para obter o número da versão do seu nó de processamento, execute o seguinte comando:

kubectl get nodesNAME

Observação: substitua nodesNAME pelo nome do seu nó.

Exemplo de saída:

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

O número da versão aparece na coluna VERSÃO.

Drenar um único nó de processamento

Se você não usou eksctl para iniciar seus nós de processamento ou para drenar apenas um nó específico, isole normalmente seu nó de processamento. Execute o seguinte comando:

kubectl drain node_name --ignore-daemonsets

Observação: substitua node_name pelo nome do seu nó.

Para desfazer o isolamento, execute o seguinte comando:

kubectl uncordon node_name

Observação: substitua node_name pelo nome do seu nó.

Também é possível migrar suas aplicações existentes para um novo grupo de nó de processamento.

Exclua seus nós de processamento

Importante: não é possível desfazer uma ação de exclusão.

Se você usar eksctl, execute o seguinte comando:

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

Observação: substitua clusterName pelo nome do cluster e nodegroupName pelo nome do grupo de nós.

Se você tiver um grupo de nós gerenciados, consulte Excluir um grupo de nós gerenciados do seu cluster.

Se você tiver um grupo de nós não gerenciados e tiver usado um modelo do CloudFormation para iniciar seus nós de processamento, exclua a pilha do grupo de nós.

Se você tiver um grupo de nós não gerenciados, mas não usou um modelo do CloudFormation, exclua o grupo do Auto Scaling do Amazon Elastic Compute Cloud (Amazon EC2). Se você não usou um grupo do Amazon EC2 Auto Scaling, encerre a instância.

AWS OFICIALAtualizada há um ano