Come faccio a controllare, scalare, eliminare o svuotare i miei nodi worker in Amazon EKS?

4 minuti di lettura
0

Ho lanciato i miei nodi worker Amazon Elastic Kubernetes Service (Amazon EKS) utilizzando eksctl o la Console di gestione AWS. Ora voglio controllare, ridimensionare, drenare o eliminare i miei nodi worker.

Risoluzione

Controlla i tuoi nodi worker

Per elencare i nodi worker registrati nel piano di controllo di Amazon EKS, esegui il seguente comando:

kubectl get nodes -o wide

L'output restituisce il nome, la versione di Kubernetes, il sistema operativo (SO) e l'indirizzo IP dei nodi worker.

Per ottenere informazioni aggiuntive su un singolo nodo worker, esegui il comando seguente:

kubectl describe node/node_name

Nota: Sostituisci node_name con il tuo valore, ad esempio: IP-XX-XX-XX-XX.us-east-1.compute.internal.

L'output mostra ulteriori informazioni sul nodo worker, tra cui etichette, macchie, informazioni di sistema e stato.

Scala i tuoi nodi di lavoro

Nota: Se i tuoi gruppi di nodi vengono visualizzati nella console Amazon EKS, utilizza un gruppo di nodi gestito. Altrimenti, usa un gruppo di nodi non gestito.

Utilizza uno dei seguenti metodi per scalare i nodi worker.

Scala i nodi worker con eksctl

Per scalare i nodi worker gestiti o non gestiti utilizzando eksctl, esegui il seguente comando:

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

Nota: Sostituisci clusterName, desiredCount e nodegroupName con i tuoi valori.

Scala i nodi worker senza eksctl

Per scalare i nodi worker gestiti senza eksctl, modifica la configurazione del gruppo di nodi.

Scala i nodi worker con CloudFormation

Per scalare i tuoi nodi worker non gestiti utilizzando AWS CloudFormation, completa i seguenti passaggi:

  1. Usa un modello CloudFormation per avviare i tuoi nodi worker per Windows o Linux.
  2. Modifica i parametri NodeAutoScalingGroupDesiredCapacity, NodeAutoScalingGroupMinSize o NodeAutoScalingGroupMaxSize nel tuo stack CloudFormation.

Svuota i tuoi nodi worker

Importante: L'azione di drenaggio isola il nodo worker e Kubernetes non pianifica più nuovi pod sul nodo. I pod che vengono eseguiti sul nodo di destinazione vengono rimossi dai nodi di drenaggio e vengono interrotti.

È possibile svuotare un intero gruppo di nodi o un singolo nodo worker.

Svuota l'intero gruppo di nodi

Se stai usando eksctl per avviare i tuoi nodi worker, esegui il seguente comando:

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

Nota: Sostituisci clusterName e nodegroupName con i tuoi valori.

Per drenare il gruppo di nodi, esegui il seguente comando:

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

Nota: Sostituisci clusterName e nodegroupName con i tuoi valori.

Se non stai usando eksctl per avviare i tuoi nodi worker, identifica e svuota tutti i nodi di una particolare versione di Kubernetes. Ad esempio:

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

Per identificare e drenare tutti i nodi di una particolare versione di Kubernetes, usa il codice seguente:

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

Nota: Per ottenere la versione del tuo nodo worker, esegui il seguente comando. Il numero della versione viene visualizzato nella colonna VERSIONE:

$ 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

Svuotare un singolo nodo worker

Se non stai usando eksctl per avviare i tuoi nodi worker o desideri svuotare solo un nodo specifico, isola con garbo il tuo nodo worker:

kubectl drain node_name --ignore-daemonsets

Nota: Sostituisci node_name con il tuo valore.

Per annullare l'isolamento, esegui il seguente comando:

kubectl uncordon node_name

Nota: Sostituisci node_name con il tuo valore.

Per migrare le applicazioni esistenti a un nuovo gruppo di nodi di lavoro, vedere Migrazione a un nuovo gruppo di nodi.

Elimina i tuoi nodi di lavoro

Importante: L'azione di eliminazione non è recuperabile.

Se usi eksctl, esegui il seguente comando:

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

Se disponi di un gruppo di nodi gestito, completa i passaggi in Eliminazione di un gruppo di nodi gestito.

Se disponi di un gruppo di nodi non gestito e hai utilizzato un modello CloudFormation per avviare i nodi worker, elimina lo stack. È necessario eliminare lo stack creato per il gruppo di nodi per Windows o Linux.

Se disponi di un gruppo di nodi non gestito e non hai utilizzato un modello CloudFormation per avviare i nodi worker, elimina il gruppo Auto Scaling. Oppure, interrompi direttamente l'istanza se non hai utilizzato un gruppo Auto Scaling.

AWS UFFICIALE
AWS UFFICIALEAggiornata 8 mesi fa