Come posso controllare, ridimensionare, eliminare o svuotare i miei nodi di lavoro in Amazon EKS?

5 minuti di lettura
0

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

Breve descrizione

Completa i passaggi nella sezione appropriata in base alle tue esigenze:

  • Controlla i tuoi nodi di lavoro
  • Scala i tuoi nodi di lavoro
  • Svuota i tuoi nodi di lavoro
  • Elimina i tuoi nodi di lavoro

Risoluzione

Controlla i tuoi nodi di lavoro

Per elencare i nodi di lavoro 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 e l'indirizzo IP dei nodi di lavoro.

Per ottenere informazioni aggiuntive su un singolo nodo di lavoro, 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 di lavoro, 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.

(Opzione 1) Per scalare i nodi di lavoro 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.

-oppure-

(Opzione 2) Per scalare i nodi di lavoro gestiti senza eksctl, completa i passaggi nella sezione «Per modificare la configurazione di un gruppo di nodi» di Aggiornamento di un gruppo di nodi gestito.

-oppure-

(Opzione 3) Per scalare i tuoi nodi di lavoro non gestiti utilizzando AWS CloudFormation, completa i seguenti passaggi:

  1. Usa un modello CloudFormation per avviare i tuoi nodi di lavoro per Windows o Linux.

  2. Modifica i parametri NodeAutoScalingGroupDesiredCapacity, NodeAutoScalingGroupMinSize o NodeAutoScalingGroupMaxSize nel tuo stack CloudFormation.

Svuota i tuoi nodi di lavoro

Importante: L'azione di drenaggio isola il nodo di lavoro e indica a Kubernetes di interrompere la pianificazione di nuovi pod sul nodo. I pod in esecuzione sul nodo bersaglio vengono rimossi dai nodi di drenaggio, il che significa che i pod verranno fermati. Considerate l'effetto che ciò può avere sul vostro ambiente di produzione.

È possibile svuotare un intero gruppo di nodi o un singolo nodo di lavoro. Scegliete l'opzione appropriata.

(Opzione 1) Svuota l'intero gruppo di nodi:

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

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

Nota: Sostituisci clusterName e nodegroupName con i tuoi valori.

Per decordare 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 di lavoro, 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 decordare 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 di lavoro, esegui il seguente 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

Nota: Il numero della versione viene visualizzato nella colonna VERSIONE.

(Opzione 2) Svuotare un singolo nodo di lavoro:

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

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. Considerate l'impatto che ciò può avere sul vostro ambiente di produzione.

Se stai usando 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 avviato i nodi di lavoro con un modello CloudFormation, elimina lo stack CloudFormation. È 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 di lavoro, elimina il gruppo Auto Scaling per i tuoi nodi di lavoro. Oppure, interrompi direttamente l'istanza se non hai utilizzato un gruppo Auto Scaling.


AWS UFFICIALE
AWS UFFICIALEAggiornata 3 anni fa