Direkt zum Inhalt

Wie aktualisiere ich die Eigenschaften in von Amazon EKS verwalteten Knotengruppen?

Lesedauer: 4 Minute
0

Ich möchte die Eigenschaften in meiner von Amazon Elastic Kubernetes Service (Amazon EKS) verwalteten Knotengruppe ändern.

Kurzbeschreibung

Der Vorgang zum Aktualisieren einer verwalteten Knotengruppeneigenschaft hängt vom Eigenschaftstyp ab, den du ändern möchtest.

Du kannst UpdateNodegroupConfig oder UpdateNodegroupVersion verwenden, um die folgenden Eigenschaften zu aktualisieren:

  • Bezeichnungen
  • Taints
  • scalingConfig
  • nodeRepairConfig
  • updateConfig
  • launchTemplate
    Hinweis: Um die launchTemplate-Eigenschaft zu bearbeiten, musst du sie beim Erstellen der verwalteten Knotengruppe angeben.

Du kannst benutzerdefinierte Startvorlagen verwenden, um die folgenden Eigenschaften zu aktualisieren:

  • diskSize
  • remoteAccess
  • tags
    Hinweis: Du kannst auch die TagResource-API verwenden, um Tags zu aktualisieren.

Lösung

Hinweis: Wenn du beim Ausführen von AWS Command Line Interface (AWS CLI)-Befehlen Fehlermeldungen erhältst, findest du weitere Informationen dazu unter Problembehandlung bei der AWS CLI. Stelle außerdem sicher, dass du die neueste Version der AWS CLI verwendest.

Um die instanceType-Eigenschaft zu ändern, gib den Instance-Typ in der Startvorlage an, wenn du die verwaltete Knotengruppe erstellst. Anschließend kannst du ihn in der Startvorlage aktualisieren.

Um die amiType-Eigenschaft zu ändern, gib die ImageId in der Startvorlage an, wenn du die Knotengruppe erstellst. Anschließend kannst du sie aktualisieren, um eine andere Amazon Machine Image (AMI)-ID in der Startvorlage zu verwenden.

Um Eigenschaften zu aktualisieren, die du nicht direkt ändern kannst, musst du zunächst eine verwaltete Knotengruppe erstellen. Lege dann optional ein Pod-Unterbrechungsbudget (PDB) fest, entleere die vorhandenen Knoten und lösche die alte verwaltete Knotengruppe.

Eine neue verwaltete Knotengruppe erstellen

Führe die folgenden Schritte aus:

  1. Erstelle eine neue verwaltete Knotengruppe.
  2. Prüfe, ob die Knoten, die von der von dir erstellten verwalteten Knotengruppe gestartet wurden, dem Cluster erfolgreich beigetreten sind. Führe den folgenden Befehl aus:
    kubectl get node -l 'eks.amazonaws.com/nodegroup=my-new-node-group-name'
    Hinweis: Ersetze my-new-node-group-name durch den gewünschten Namen für die neue Knotengruppe.
    Wenn die Knoten dem Cluster erfolgreich beigetreten sind, wird eine Ausgabe ähnlich der folgenden angezeigt:
    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

Optional: PDBs festlegen

Um einen Pod sicher zu einer neu erstellten verwalteten Knotengruppe zu migrieren und seine Verfügbarkeit aufrechtzuerhalten, empfiehlt es sich, PDBs für Workloads einzurichten.

Wenn du bereits eine PDB verwendest, überprüfe die Konfiguration. Führe den folgenden Befehl aus:

kubectl get pdb -n your_namespace

Hinweis: Ersetzeyour-namespace durch den Namen deines Namespace.

Beispielausgabe:

NAME       MIN AVAILABLE   MAX UNAVAILABLE   ALLOWED DISRUPTIONS   AGE
my-pdb     2               N/A               2                     95d

Wenn du keine PDB konfiguriert hast, kannst du die folgende Vorlage verwenden, um eine für jeden Workload zu erstellen.

apiVersion: policy/v1
kind: PodDisruptionBudget
metadata:
  name: mypdb
  namespace: your_namespace
spec:
  minAvailable: 2
  selector:
    matchLabels:
      app: myapp

Hinweis: Ersetze your_namespace durch den Namen deines Namespace.

Weitere Informationen findest du unter Schützen kritischer Workloads mit Pod-Unterbrechungsbudgets.

Bestehende Knoten entleeren

Markiere den vorhandenen Knoten als nicht planbar und entferne dann die Pods, die darauf ausgeführt werden.

Hinweis: Wenn du Kubernetes Cluster Autoscaler verwendest, skaliere dann die Bereitstellung auf null Replikate herunter, um Konflikte bei Skalierungsaktionen zu vermeiden. Führe den folgenden Befehl aus:

kubectl scale deployments/cluster-autoscaler --replicas=0 -n kube-system

Führe die folgenden Schritte aus:

  1. Verhindere, dass neue Pods geplant werden. Führe den folgenden Befehl aus:
    kubectl cordon -l 'eks.amazonaws.com/nodegroup=my-old-node-group-name'
    Hinweis: Ersetzemy-old-node-group-name durch den vorhandenen Knotengruppennamen.
  2. Entferne Workloads nacheinander von jedem Knoten, der nicht geplant werden kann. Führe den folgenden Befehl aus:
    kubectl drain --ignore-daemonsets --delete-emptydir-data your_node
    Hinweis: Ersetze your-node durch den Namen deines Knotens.
  3. Stelle sicher, dass die entfernten Pods auf den neuen Knoten ausgeführt werden. Führe den folgenden Befehl aus:
    kubectl get deploy -n your_namespace
    Hinweis: Ersetze your_namespace durch den Namen deines Namespace.
    Beispielausgabe:
    NAME                                 READY   UP-TO-DATE   AVAILABLE   AGE
    deployment.apps/test                 4/4     4            4           5d3h
    

Die alte verwaltete Knotengruppe löschen

Nachdem alle Pods außer DaemonSet aus dem vorhandenen Knoten entfernt wurden, lösche die alte verwaltete Knotengruppe.

Ähnliche Informationen

Kubernetes-Datenebene

AWS OFFICIALAktualisiert vor 3 Monaten