Como posso verificar, escalar, excluir ou drenar meus nós de processamento no Amazon EKS?
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.
Conteúdo relevante
- AWS OFICIALAtualizada há 2 anos
- AWS OFICIALAtualizada há um ano
- AWS OFICIALAtualizada há um ano