Come posso aggiornare le proprietà dei gruppi di nodi gestiti in Amazon EKS?
Desidero modificare le proprietà nel mio gruppo di nodi gestiti in Amazon Elastic Kubernetes Service (Amazon EKS).
Breve descrizione
Il processo di aggiornamento di una proprietà di un gruppo di nodi gestiti dipende dal tipo di proprietà che si desidera modificare.
Puoi utilizzare UpdateNodegroupConfig o UpdateNodegroupVersion per aggiornare le seguenti proprietà:
- etichette
- taint
- scalingConfig
- nodeRepairConfig
- updateConfig
- launchTemplate
Nota: per modificare la proprietà launchTemplate, devi specificarla quando crei il gruppo di nodi gestiti.
Puoi utilizzare modelli di avvio personalizzati per aggiornare le seguenti proprietà:
- diskSize
- remoteAccess
- tag
Nota: puoi anche utilizzare l'API TagResource per aggiornare i tag.
Risoluzione
Nota: se ricevi errori quando esegui i comandi dell'Interfaccia della linea di comando AWS (AWS CLI), consulta Risoluzione degli errori per AWS CLI. Inoltre, assicurati di utilizzare la versione più recente di AWS CLI.
Per modificare la proprietà instanceType, specifica il tipo di istanza nel modello di avvio quando crei il gruppo di nodi gestiti. Dopodiché puoi aggiornarlo nel modello di avvio.
Per modificare la proprietà amiType, specifica l'ImageId nel modello di avvio quando crei il gruppo di nodi. Dopodiché puoi aggiornarlo per utilizzare l'ID di un'Amazon Machine Image (AMI) diversa nel modello di avvio.
Per aggiornare le proprietà che non puoi modificare direttamente, devi prima creare un gruppo di nodi gestiti. Quindi, facoltativamente, imposta un budget delle interruzioni dei pod (Pod Disruption Budget, PDB), svuota i nodi esistenti ed elimina il vecchio gruppo di nodi gestiti.
Crea un nuovo gruppo di nodi gestiti
Completa i seguenti passaggi:
- Crea un nuovo gruppo di nodi gestiti.
- Verifica se i nodi avviati dal gruppo di nodi gestiti che hai creato si sono uniti correttamente al cluster. Esegui questo comando:
Nota: sostituisci my-new-node-group-name con il nome desiderato per il tuo nuovo gruppo di nodi.kubectl get node -l 'eks.amazonaws.com/nodegroup=my-new-node-group-name'
Se i nodi si sono uniti correttamente al cluster, viene visualizzato un output simile al seguente:NAME STATUS ROLES AGE VERSION ip-192-168-95-10.ec2.internal Ready <none> 3m33s v1.33.3-eks-3abbec1 ip-192-168-96-53.ec2.internal Ready <none> 3m32s v1.33.3-eks-3abbec1
Facoltativo: Imposta PDB
Per eseguire in sicurezza la migrazione di un pod verso un gruppo di nodi gestiti appena creato e mantenerne la disponibilità, è consigliabile impostare PDB per i carichi di lavoro.
Se utilizzi già un PDB, controlla la configurazione. Esegui questo comando:
kubectl get pdb -n your_namespace
Nota: sostituisci your-namespace con il nome del tuo namespace.
Esempio di output:
NAME MIN AVAILABLE MAX UNAVAILABLE ALLOWED DISRUPTIONS AGE my-pdb 2 N/A 2 95d
Se non hai configurato un PDB, puoi utilizzare il seguente modello per crearne uno per ogni carico di lavoro.
apiVersion: policy/v1 kind: PodDisruptionBudget metadata: name: mypdb namespace: your_namespace spec: minAvailable: 2 selector: matchLabels: app: myapp
Nota: sostituisci your-namespace con il nome del tuo namespace.
Per ulteriori informazioni, consulta Proteggi i carichi di lavoro critici con Pod Disruption Budgets.
Svuota i nodi esistenti
Contrassegna il nodo esistente come non programmabile, quindi espelli i pod in esecuzione sul nodo.
Nota: se utilizzi Kubernetes Cluster Autoscaler, scala la distribuzione fino a zero repliche per evitare conflitti nelle azioni di dimensionamento. Esegui questo comando:
kubectl scale deployments/cluster-autoscaler --replicas=0 -n kube-system
Completa i seguenti passaggi:
- Impedisci la programmazione di nuovi pod. Esegui questo comando:
Nota: sostituisci my-old-node-group-name con il nome del gruppo di nodi esistente.kubectl cordon -l 'eks.amazonaws.com/nodegroup=my-old-node-group-name' - Rimuovi i carichi di lavoro da ogni nodo non programmabile uno alla volta. Esegui questo comando:
Nota: sostituisci your-node con il nome del tuo nodo.kubectl drain --ignore-daemonsets --delete-emptydir-data your_node - Verifica che i pod espulsi siano eseguiti sui nuovi nodi. Esegui questo comando:
Nota: sostituisci your-namespace con il nome del tuo namespace.kubectl get deploy -n your_namespace
Esempio di output:NAME READY UP-TO-DATE AVAILABLE AGE deployment.apps/test 4/4 4 4 5d3h
Elimina il vecchio gruppo di nodi gestiti
Dopo che tutti i pod tranne DaemonSet sono stati espulsi dal nodo esistente, elimina il vecchio gruppo di nodi gestiti.
Informazioni correlate
- Argomenti
- Containers
- Lingua
- Italiano
