Salta al contenuto

Come posso aggiornare le proprietà dei gruppi di nodi gestiti in Amazon EKS?

4 minuti di lettura
0

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:

  1. Crea un nuovo gruppo di nodi gestiti.
  2. Verifica se i nodi avviati dal gruppo di nodi gestiti che hai creato si sono uniti correttamente al cluster. Esegui questo comando:
    kubectl get node -l 'eks.amazonaws.com/nodegroup=my-new-node-group-name'
    Nota: sostituisci my-new-node-group-name con il nome desiderato per il tuo nuovo gruppo di nodi.
    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:

  1. Impedisci la programmazione di nuovi pod. Esegui questo comando:
    kubectl cordon -l 'eks.amazonaws.com/nodegroup=my-old-node-group-name'
    Nota: sostituisci my-old-node-group-name con il nome del gruppo di nodi esistente.
  2. Rimuovi i carichi di lavoro da ogni nodo non programmabile uno alla volta. Esegui questo comando:
    kubectl drain --ignore-daemonsets --delete-emptydir-data your_node
    Nota: sostituisci your-node con il nome del tuo nodo.
  3. Verifica che i pod espulsi siano eseguiti sui nuovi nodi. Esegui questo comando:
    kubectl get deploy -n your_namespace
    Nota: sostituisci your-namespace con il nome del tuo 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

Piano dati Kubernetes

AWS UFFICIALEAggiornata un anno fa