Salta al contenuto

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

4 minuti di lettura
0

Ho usato eksctl o la console Amazon Elastic Kubernetes Service (Amazon EKS) per controllare, scalare, svuotare o eliminare i miei nodi worker.

Risoluzione

Controlla i nodi worker

Per elencare i nodi worker registrati nel piano di controllo (control-plane) di Amazon EKS, esegui questo comando:

kubectl get nodes -o wide

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

Per ottenere informazioni aggiuntive su un nodo worker specifico, esegui questo comando:

kubectl describe node/node_name

Nota: sostituisci node_name con il nome della risorsa Amazon (ARN) del tuo nodo worker. Ad esempio, ip-AA-BB-CC-DD.us-east-1.compute.internal.

L'output mostra informazioni sul nodo worker come etichette, taint, informazioni di sistema e stato.

Scala i nodi worker

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

Utilizza uno dei seguenti metodi per scalare i nodi worker.

Scala i nodi worker con eksctl

Per scalare nodi worker gestiti o non gestiti con eksctl, esegui questo comando:

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

Nota: sostituisci clusterName con il nome del tuo cluster, desiredCount con il numero di nodi a cui scalare e nodegroupName con il nome del gruppo di nodi.

Scala i nodi worker senza eksctl

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

Scala i nodi worker con CloudFormation

Per scalare nodi worker non gestiti con AWS CloudFormation , utilizza un modello CloudFormation per avviare i nodi diworker per Windows o Linux. Modifica i parametri NodeAutoScalingGroupDesiredCapacity, NodeAutoScalingGroupMinSize o NodeAutoScalingGroupMaxSize nello stack CloudFormation.

Svuota i nodi worker

Importante: l'azione di svuotamento isola il nodo worker e Kubernetes non pianifica più nuovi Pod sul nodo. Kubernetes rimuove e impedisce ai Pod in esecuzione sul nodo di destinazione di svuotare i nodi.

Puoi svuotare un intero gruppo di nodi o un singolo nodo worker.

Svuota l'intero gruppo di nodi

Se hai utilizzato eksctl per avviare i nodi worker, esegui questo comando:

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

Nota: sostituisci clusterName con il nome del tuo cluster e nodegroupName con il nome del tuo gruppo di nodi.

Per rendere nuovamente disponibile il gruppo di nodi, esegui questo comando:

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

Nota: sostituisci clusterName con il nome del tuo cluster e nodegroupName con il nome del tuo gruppo di nodi.

Se non hai usato eksctl per avviare i nodi worker, esegui questo script per svuotare tutti i nodi di una specifica versione di 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

Nota: sostituisci 1.18.8-eks-7c9bda con la tua versione di Kubernetes.

Per rendere nuovamente disponibili i nodi svuotati, esegui questo 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

Nota: sostituisci 1.18.8-eks-7c9bda con la tua versione di Kubernetes.

Per ottenere il numero di versione del nodo worker, esegui questo comando:

kubectl get nodesNAME

Nota: sostituisci nodesNAME con il nome del tuo nodo.

Esempio di output:

$ 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

Il numero di versione viene visualizzato nella colonna VERSIONE.

Svuota un singolo nodo worker

Se non hai utilizzato eksctl per avviare i nodi worker o desideri svuotare solo un nodo specifico, isola accuratamente il nodo worker. Esegui questo comando:

kubectl drain node_name --ignore-daemonsets

Nota: sostituisci node_name con il nome del tuo nodo.

Per annullare l'isolamento, esegui questo comando:

kubectl uncordon node_name

Nota: sostituisci node_name con il nome del tuo nodo.

Puoi inoltre eseguire la migrazione delle applicazioni esistenti in un nuovo gruppo di nodi worker.

Elimina i nodi worker

Importante: non puoi annullare un'azione di eliminazione.

Se usi eksctl, esegui questo comando:

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

Nota: sostituisci clusterName con il nome del tuo cluster e nodegroupName con il nome del tuo gruppo di nodi.

Se disponi di un gruppo di nodi gestito, consulta Eliminare un gruppo di nodi gestito dal cluster.

Se hai un gruppo di nodi non gestito e hai utilizzato un modello CloudFormation per avviare i nodi worker, elimina lo stack del gruppo di nodi.

Se hai un gruppo di nodi non gestito, ma non hai utilizzato un modello CloudFormation, elimina il gruppo Amazon Elastic Compute Cloud (Amazon EC2) Auto Scaling. Se non hai utilizzato un gruppo Amazon EC2 Auto Scaling, termina l'istanza.

AWS UFFICIALEAggiornata 8 mesi fa