Como posso verificar, escalar, excluir ou drenar meus nós de processamento no Amazon EKS?

5 minuto de leitura
0

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

Descrição resumida

Conclua as etapas na seção apropriada de acordo com suas necessidades:

  • Verifique seus nós de processamento
  • Escale seus nós de processamento
  • Drene seus nós de processamento
  • Exclua seus nós de processamento

Resolução

Verifique seus nós de processamento

Para listar os nós de processamento 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 do Kubernetes, o sistema operacional 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.

(Opção 1) Para escalar seus nós de processamento gerenciados ou não gerenciados usando eksctl, execute o seguinte comando:

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

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

-ou-

(Opção 2) Para escalar seus nós de processamento gerenciados sem eksctl, conclua as etapas na seção “Para editar uma configuração de grupo de nós” em Atualizar um grupo de nós gerenciados.

-ou-

(Opção 3) Para escalar seus nós de processamento não gerenciados usando o AWS CloudFormation, 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 faz com que o Kubernetes pare de agendar novos pods no nó. Os pods em execução no nó de destino são removidos dos nós de drenagem, o que significa que os pods serão interrompidos. Considere o efeito que isso pode ter em seu ambiente de produção.

Você pode drenar um grupo de nós inteiro ou um único nó de processamento. Selecione a opção apropriada.

(Opção 1) Drene um grupo de nós inteiro:

Se você estiver usando o 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 liberar 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 estiver usando o 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 liberar todos os nós de uma versão específica do Kubernetes, use o seguinte código:

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

$ kubectl get nodes
NAME                                      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

Observação: o número da versão aparece na coluna VERSION.

(Opção 2) Drene um único nó de processamento:

Se você não estiver usando o eksctl para iniciar seus nós de processamento ou quiser drenar apenas um nó específico, isole 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. Considere o impacto que isso pode ter em seu ambiente de produção.

Se você estiver usando o 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 gerenciados e tiver iniciado seus nós de processamento com um modelo do CloudFormation, exclua a pilha do CloudFormation. 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 gerenciados e não usou um modelo do CloudFormation para iniciar seus nós de processamento, exclua o grupo do Auto Scaling para seus nós de processamento. Ou encerre a instância diretamente se você não usou um grupo do Auto Scaling.


AWS OFICIAL
AWS OFICIALAtualizada há 3 anos