Dieses Dokument wurde mithilfe automatisierter maschineller Übersetzungstechnologie übersetzt. Wir bemühen uns um korrekte Übersetzungen, übernehmen jedoch keine Gewähr für die Vollständigkeit, Richtigkeit oder Zuverlässigkeit der übersetzten Inhalte. Im Falle von Abweichungen ist die englische Originalversion maßgebend und stellt den verbindlichen Text dar.

Kubernetes auf Azure Kubernetes Service (AKS) upgraden

AKS bietet az aks upgrade für das In-Place-Upgrade von Knoten mittels Node-Reimaging an, aber dies führt dazu, dass die ursprünglichen SUSE Storage-Festplatten fehlen, sodass in den geupgradeten Knoten keine Festplatten mehr zur Wiederherstellung von Replikaten vorhanden sind.

Wir empfehlen, den Knotenpool-Austausch zu verwenden, um die Agentenknoten zu upgraden, aber az aks upgrade für die Steuerungsebene zu verwenden, um die Datensicherheit zu gewährleisten.

  1. In SUSE Storage, replica-replenishment-wait-interval auf 0 setzen.

  2. AKS-Steuerungsebene upgraden.

     AKS_RESOURCE_GROUP=<aks-resource-group>
     AKS_CLUSTER_NAME=<aks-cluster-name>
     AKS_K8S_VERSION_UPGRADE=<aks-k8s-version>
    
     az aks upgrade \
         --resource-group ${AKS_RESOURCE_GROUP} \
         --name ${AKS_CLUSTER_NAME} \
         --kubernetes-version ${AKS_K8S_VERSION_UPGRADE} \
         --control-plane-only
  3. Einen neuen Knotenpool hinzufügen.

     AKS_NODEPOOL_NAME_NEW=<new-nodepool-name>
     AKS_DISK_SIZE=<disk-size-in-gb>
     AKS_NODE_NUM=<number-of-nodes>
    
     az aks nodepool add \
       --resource-group ${AKS_RESOURCE_GROUP} \
       --cluster-name ${AKS_CLUSTER_NAME} \
       --name ${AKS_NODEPOOL_NAME_NEW} \
       --node-count ${AKS_NODE_NUM} \
       --node-osdisk-size ${AKS_DISK_SIZE} \
       --kubernetes-version ${AKS_K8S_VERSION_UPGRADE} \
       --mode System
  4. Verwenden Sie die SUSE Storage-Benutzeroberfläche, um das Festplatten-Scheduling zu deaktivieren und die Evakuierung der Knoten im alten Knotenpool anzufordern.

  5. Kubernetes-Knoten im alten Knotenpool absperren und entleeren.

     AKS_NODEPOOL_NAME_OLD=<old-nodepool-name>
    
     for n in `kubectl get nodes | grep ${AKS_NODEPOOL_NAME_OLD}- | awk '{print $1}'`; do
       kubectl cordon $n && \
       kubectl drain $n --ignore-daemonsets --delete-emptydir-data
     done
  6. Alten Knotenpool löschen.

     az aks nodepool delete \
       --cluster-name ${AKS_CLUSTER_NAME} \
       --name ${AKS_NODEPOOL_NAME_OLD} \
       --resource-group ${AKS_RESOURCE_GROUP}