Tutorial: Durchführen eines Upgrades für einen Azure Kubernetes Service-Cluster (AKS)

Im Rahmen des Anwendungs- und Clusterlebenszyklus möchten Sie möglicherweise ein Upgrade auf die neueste verfügbare Version von Kubernetes durchführen. Sie können ein Upgrade für Ihren Azure Kubernetes Service(AKS)-Cluster über die Azure CLI, Azure PowerShell oder über das Azure-Portal durchführen.

In diesem Tutorial (Teil 7 von 7) führen Sie ein Upgrade für einen AKS-Cluster durch. Folgendes wird vermittelt:

  • Identifizieren der aktuellen und verfügbaren Kubernetes-Versionen
  • Durchführen von Upgrades für Ihre Kubernetes-Knoten
  • Überprüfen des erfolgreichen Upgrades

Voraussetzungen

In vorherigen Tutorials haben Sie eine Anwendung in ein Containerimage gepackt und das Containerimage in Azure Container Registry (ACR) hochgeladen. Außerdem haben Sie einen AKS-Cluster erstellt und eine Anwendung dafür bereitgestellt. Wenn Sie diese Schritte noch nicht ausgeführt haben und dieses Tutorial durcharbeiten möchten, beginnen Sie mit Tutorial 1:Vorbereiten einer Anwendung für AKS.

Wenn Sie die Azure CLI verwenden, erfordert dieses Tutorial die Azure CLI-Version 2.34.1 oder höher. Führen Sie az --version aus, um die Version zu ermitteln. Informationen zum Durchführen einer Installation oder eines Upgrades finden Sie bei Bedarf unter Installieren der Azure CLI.

Wenn Sie Azure PowerShell verwenden, erfordert dieses Tutorial die Azure PowerShell-Version 5.9.0 oder höher. Führen Sie Get-InstalledModule -Name Az aus, um die Version zu ermitteln. Falls Sie eine Installation oder ein Upgrade ausführen müssen, finden Sie unter Installieren von Azure PowerShell weitere Informationen.

Abrufen verfügbarer Clusterversionen

  • Überprüfen Sie vor dem Upgrade, welche Kubernetes-Releases für Ihren Cluster verfügbar sind, indem Sie den Befehl az aks get-upgrades verwenden.

    az aks get-upgrades --resource-group myResourceGroup --name myAKSCluster
    

    In der folgenden Beispielausgabe wird die aktuelle Version als 1.28.9 angezeigt, und die verfügbaren Versionen werden unter upgrades aufgeführt:

      {
        "agentPoolProfiles": null,
        "controlPlaneProfile": {
          "kubernetesVersion": "1.28.9",
          ...
          "upgrades": [
            {
              "isPreview": null,
              "kubernetesVersion": "1.29.4"
            },
            {
              "isPreview": null,
              "kubernetesVersion": "1.29.2"
            }
          ]
        },
        ...
      }
    

Aktualisieren eines AKS-Clusters

AKS-Knoten werden sorgfältig gesperrt und ausgeglichen, um potenzielle Unterbrechungen ausgeführter Anwendungen zu minimieren. Während dieses Vorgangs führt AKS die folgenden Schritte aus:

  • Fügt dem Cluster, auf dem die angegebene Kubernetes-Version ausgeführt wird, einen neuen Pufferknoten (oder die in max surge konfigurierte Anzahl von Knoten) hinzu.
  • Absperren und Ausgleichen eines der alten Knoten, um die Unterbrechung der ausgeführten Anwendungen zu minimieren. Wenn Sie „max surge“ verwenden, werden so viele Knoten gleichzeitig abgesperrt und ausgeglichen, wie die Anzahl der angegebenen Pufferknoten beträgt.
  • Wenn der alte Knoten vollständig ausgeglichen wurde, wird für diesen ein Reimaging durchgeführt, damit er die neue Version erhält. Er wird dann zum Pufferknoten, damit der folgende Knoten aktualisiert werden kann.
  • Dieser Prozess wird wiederholt, bis alle Knoten im Cluster aktualisiert wurden.
  • Am Ende des Vorgangs wird der letzte Pufferknoten gelöscht, sodass die Anzahl der vorhandenen Agent-Knoten und der Zonensaldo beibehalten werden.

Hinweis

Ist kein Patch angegeben, wird der Cluster automatisch auf den neuesten GA-Patch der angegebenen Nebenversion aktualisiert. Wenn Sie beispielsweise --kubernetes-version auf 1.28 festlegen, wird ein Upgrade des Clusters auf 1.28.9 durchgeführt.

Weitere Informationen finden Sie unter Unterstützte Kubernetes-Nebenversionsupgrades in AKS.

Sie können entweder den Cluster manuell aktualisieren oder automatische Clusterupgrades konfigurieren. Es wird empfohlen, automatische Clusterupgrades zu konfigurieren, um sicherzustellen, dass Ihr Cluster immer die neueste Version von Kubernetes ausführt.

Manuelles Upgrade von Clustern

  • Führen Sie ein Upgrade Ihres Clusters mithilfe des Befehls az aks upgrade durch.

    az aks upgrade \
        --resource-group myResourceGroup \
        --name myAKSCluster \
        --kubernetes-version KUBERNETES_VERSION
    
  • Sie werden aufgefordert, den Upgradevorgang zu bestätigen und zu bestätigen, dass Sie die Steuerebene und alle Knotenpools auf die ausgewählte Version von Kubernetes aktualisieren möchten:

     Are you sure you want to perform this operation? (y/N): y
    Since control-plane-only argument is not specified, this will upgrade the control plane AND all nodepools to version 1.29.2. Continue? (y/N): y
    

    Hinweis

    Upgrades sind jeweils nur auf die nächste Nebenversion möglich. Beispielsweise können Sie ein Upgrade von 1.14.x auf 1.15.x durchführen, aber nicht direkt von 1.14.x auf 1.16.x. Für ein Upgrade von 1.14.x auf 1.16.x müssen Sie zuerst ein Upgrade von 1.14.x auf 1.15.x und dann ein weiteres Upgrade von 1.15.x auf 1.16.x durchführen.

    In der folgenden Beispielausgabe wird das Ergebnis des Upgrades auf 1.29.2 gezeigt. Beachten Sie, dass kubernetesVersion jetzt 1.29.2 lautet:

    {
      ...
      "agentPoolProfiles": [
        {
          ...
          "count": 3,
          "currentOrchestratorVersion": "1.29.2",
          "maxPods": 110,
          "name": "nodepool1",
          "nodeImageVersion": "AKSUbuntu-2204gen2containerd-202405.27.0",
          "orchestratorVersion": "1.29.2",
          "osType": "Linux",
          "upgradeSettings": {
            "drainTimeoutInMinutes": null,
            "maxSurge": "10%",
            "nodeSoakDurationInMinutes": null,
            "undrainableNodeBehavior": null
          },
          "vmSize": "Standard_DS2_v2",
          ...
        }
      ],
      ...
      "currentKubernetesVersion": "1.29.2",
      "dnsPrefix": "myAKSClust-myResourceGroup-19da35",
      "enableRbac": false,
      "fqdn": "myaksclust-myresourcegroup-19da35-bd54a4be.hcp.eastus.azmk8s.io",
      "id": "/subscriptions/<Subscription ID>/resourcegroups/myResourceGroup/providers/Microsoft.ContainerService/managedClusters/myAKSCluster",
      "kubernetesVersion": "1.29.2",
      "location": "eastus",
      "name": "myAKSCluster",
      "type": "Microsoft.ContainerService/ManagedClusters"
      ...
    }
    

Konfigurieren automatischer Clusterupgrades

  • Legen Sie einen Kanal für das automatische Upgrade für Ihren Cluster mithilfe des Befehls az aks update mit dem auf patch festgelegten --auto-upgrade-channel-Parameter fest.

    az aks update --resource-group myResourceGroup --name myAKSCluster --auto-upgrade-channel patch
    

Weitere Informationen finden Sie unter Automatisches Upgrade für einen AKS-Cluster (Azure Kubernetes Service).

Durchführen eines Upgrades für AKS-Knotenimages

AKS stellt regelmäßig neue Knotenimages bereit. Linux-Knotenimages werden wöchentlich aktualisiert, und Windows-Knotenimages werden monatlich aktualisiert. Es wird empfohlen, die Knotenimages häufig zu aktualisieren, um die neuesten AKS-Features und Sicherheitsupdates zu verwenden. Weitere Informationen finden Sie unter Upgrade für AKS-Knotenimages in Azure Kubernetes Service (AKS). Informationen zum Konfigurieren von automatischen Knotenimageupgrades finden Sie unter Automatisches Durchführen eines Upgrades für die Betriebssystemimages von Azure Kubernetes Service-Clusterknoten (AKS).

Anzeigen der Upgradeereignisse

Hinweis

Beim Upgrade Ihres Clusters können die folgenden Kubernetes-Ereignisse auf den Knoten auftreten:

  • Anstieg: Erstellen eines Surge-Knotens.
  • Ausgleich: Pods werden aus dem Knoten entfernt. Für jeden Pod gilt ein Timeout von fünf Minuten beim Entfernen.
  • Update: Die Aktualisierung eines Knotens war erfolgreich oder nicht erfolgreich.
  • Löschen: Löschen eines Surge-Knotens.
  • Verwenden Sie kubectl get events, um Upgrade-Ereignisse in den Standard-Namespaces anzuzeigen.

    kubectl get events --field-selector source=upgrader
    

    Die folgende Beispielausgabe zeigt einige der oben aufgeführten Ereignisse während eines Upgrades:

    LAST SEEN   TYPE      REASON    OBJECT                                   MESSAGE
    ...
    5m          Normal    Drain     node/aks-nodepool1-96663640-vmss000000   Draining node: aks-nodepool1-96663640-vmss000000
    5m          Normal    Upgrade   node/aks-nodepool1-96663640-vmss000000   Deleting node aks-nodepool1-96663640-vmss000000 from API server
    4m          Normal    Upgrade   node/aks-nodepool1-96663640-vmss000000   Successfully reimaged node: aks-nodepool1-96663640-vmss000000
    4m          Normal    Upgrade   node/aks-nodepool1-96663640-vmss000000   Successfully upgraded node: aks-nodepool1-96663640-vmss000000
    4m          Normal    Drain     node/aks-nodepool1-96663640-vmss000000   Draining node: aks-nodepool1-96663640-vmss000000
    ...
    

Überprüfen eines Upgrades

  • Überprüfen Sie mit dem Befehl az aks show, ob das Upgrade erfolgreich war.

    az aks show --resource-group myResourceGroup --name myAKSCluster --output table
    

    Die folgende Beispielausgabe zeigt, dass der AKS-Cluster KubernetesVersion 1.27.3 ausführt:

    Name          Location    ResourceGroup    KubernetesVersion    CurrentKubernetesVersion  ProvisioningState    Fqdn
    ------------  ----------  ---------------  -------------------  ------------------------  -------------------  ----------------------------------------------------------------
    myAKSCluster  eastus      myResourceGroup  1.29.2               1.29.2                    Succeeded            myaksclust-myresourcegroup-19da35-bd54a4be.hcp.eastus.azmk8s.io
    

Löschen des Clusters

Da dieses Tutorial der letzte Teil der Reihe ist, ist es ratsam, Ihren AKS-Cluster zu löschen, um Azure-Gebühren zu vermeiden.

  • Entfernen Sie die Ressourcengruppe, den Containerdienst und alle zugehörigen Ressourcen mithilfe des Befehls az group delete.

    az group delete --name myResourceGroup --yes --no-wait
    

Hinweis

Wenn Sie den Cluster löschen, wird der vom AKS-Cluster verwendete Microsoft Entra-Dienstprinzipal nicht entfernt. Schritte zum Entfernen des Dienstprinzipals finden Sie unter den Überlegungen zum AKS-Dienstprinzipal und dessen Löschung. Wenn Sie eine verwaltete Identität verwendet haben, wird die Identität von der Plattform verwaltet, und Sie müssen keine Geheimnisse bereitstellen oder rotieren.

Nächste Schritte

In diesem Tutorial haben Sie Kubernetes in einem AKS-Cluster aktualisiert. Sie haben Folgendes gelernt:

  • Identifizieren der aktuellen und verfügbaren Kubernetes-Versionen
  • Durchführen von Upgrades für Ihre Kubernetes-Knoten
  • Überprüfen des erfolgreichen Upgrades

Weitere Informationen zu AKS finden Sie unter Übersicht über AKS. Einen Leitfaden zum Erstellen von vollständiger Lösungen mit AKS finden Sie unter AKS-Lösungsanleitung.