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.