Automatisches Beenden von Azure Kubernetes Service-Clusterupgrades (AKS) bei API-Breaking-Changes

Gilt für: ✔️ AKS Automatic ✔️ AKS Standard

In diesem Artikel wird gezeigt, wie Azure Kubernetes Service (AKS) Clusterupgrades automatisch blockieren können, wenn sie die veraltete Kubernetes-API-Verwendung erkennt.

Für die meisten Produktionsworkloads ist AKS Automatic die empfohlene produktionsbereite Standardumgebung für AKS. Die Erkennung von API-Änderungen mit Kompatibilitätsbruch in Kubernetes ist sowohl auf AKS-Automatic- als auch auf AKS-Standard-Clustern vorkonfiguriert.

Verhalten in AKS Automatic und AKS Standard

Beide Clustermodi umfassen diesen Schutz:

  • AKS Automatic: Standardmäßig als Teil der produktionsreifen Plattformschutzmaßnahmen von AKS Automatic enthalten.
  • AKS Standard: Standardmäßig in AKS Standardclustern enthalten.

In beiden Modi kann AKS Kleinere Versionsupgradevorgänge blockieren, wenn sie die aktuelle Verwendung von APIs erkennt, die in der Kubernetes-Zielversion veraltet oder entfernt wurden.

Übersicht

Um innerhalb einer unterstützten Kubernetes-Version zu bleiben, müssen Sie ihr Cluster mindestens einmal pro Jahr aktualisieren und sich auf mögliche Unterbrechungen vorbereiten. Diese Störungen können API-inkompatible Änderungen, Abkündigungen und Abhängigkeiten wie Helm und die Container Storage Interface (CSI) umfassen. Es kann schwierig sein, diese Unterbrechungen zu antizipieren und kritische Workloads ohne Ausfallzeiten zu migrieren.

Wenn AKS die Verwendung veralteter APIs für die Zielversion erkennt, kann AKS Upgrades auf Nebenversionen automatisch blockieren und Sie auf das Problem aufmerksam machen. Dieses Verhalten hilft Ihnen, unerwartete Unterbrechungen zu vermeiden und Ihnen Zeit, die veraltete API-Verwendung zu beheben, bevor Sie das Upgrade fortsetzen.

Prerequisites

Stellen Sie sicher, dass die folgenden Voraussetzungen erfüllt sind:

  • Der Upgradevorgang ist eine Kubernetes-Nebenversionsänderung für die Clustersteuerungsebene.
  • Die Kubernetes-Zielversion ist 1.26 oder höher.
  • Die zuletzt gesehene Verwendung veralteter APIs für die Zielversion ist innerhalb von 12 Stunden vor dem Upgradevorgang aufgetreten. AKS zeichnet die Nutzung stündlich auf, daher ist nicht garantiert, dass die Nutzung innerhalb der letzten Stunde in der Erkennung erscheint.

Hinweis

Sie müssen dieses Erkennungsfeature nicht manuell aktivieren. AKS Automatic- und AKS Standard-Cluster konfigurieren dies automatisch vor.

Minderung beendeter Upgradevorgänge

Wenn Sie die Voraussetzungen erfüllen, versuchen Sie ein Upgrade, und erhalten Sie einen Fehler ähnlich der folgenden Fehlermeldung:

Bad Request({
  "code": "ValidationError",
  "message": "Control Plane upgrade is blocked due to recent usage of a Kubernetes API deprecated in the specified version. Please refer to https://kubernetes.io/docs/reference/using-api/deprecation-guide to migrate the usage. To bypass this error, set enable-force-upgrade in upgradeSettings.overrideSettings. Bypassing this error without migrating usage will result in the deprecated Kubernetes API calls failing. Usage details: 1 error occurred:\n\t* usage has been detected on API flowcontrol.apiserver.k8s.io.prioritylevelconfigurations.v1beta1, and was recently seen at: 2023-03-23 20:57:18 +0000 UTC, which will be removed in 1.26\n\n",
  "subcode": "UpgradeBlockedOnDeprecatedAPIUsage"
})

Verwenden Sie eine der folgenden Optionen:

  1. Navigieren Sie im Azure-Portal zu Ihrer Clusterressource, und wählen Sie Diagnose und Problembehandlung aus.

  2. Wählen Sie Erstellen, upgraden, löschen und skalierenVeraltete>Kubernetes-APIs aus.

    Screenshot des Azure-Portals mit angezeigtem Abschnitt „Ausgewählte Kubernetes-API-Einstellungen“.

  3. Warten Sie 12 Stunden ab dem Zeitpunkt, an dem die letzte Verwendung einer veralteten API festgestellt wurde. Schreibgeschützte Verben werden von der veralteten API-Verwendung ausgeschlossen, nämlich Get/List/Watch. Sie können auch die vergangene API-Verwendung überprüfen, indem Sie Containererkenntnisse aktivieren und Kube-Überwachungsprotokolle untersuchen.

  4. Versuchen Sie, das Clusterupgrade erneut durchzuführen.

Umgehen der Überprüfung, um API-Änderungen zu ignorieren

Hinweis

Diese Methode erfordert Azure CLI Version 2.57 oder höher. Wenn die Vorschau-CLI-Erweiterung installiert ist, aktualisieren Sie auf Version 3.0.0b10 oder höher. Diese Methode wird für normale Produktionsvorgänge nicht empfohlen, da veraltete APIs in der Kubernetes-Zielversion langfristig fehlschlagen können. Entfernen Sie die veraltete API-Verwendung so schnell wie möglich nach dem Upgrade.

Führen Sie das Upgrade mit Umgehung der Validierung aus, indem Sie den Befehl az aks upgrade mit --enable-force-upgrade verwenden und --upgrade-override-until so festlegen, dass das Ende des Umgehungszeitfensters definiert wird. Wenn Sie keinen Wert festlegen, wird das Fenster standardmäßig auf drei Tage ab der aktuellen Zeit festgelegt. Das angegebene Datum und die angegebene Uhrzeit müssen in der Zukunft sein.

# Set environment variables
RESOURCE_GROUP_NAME=<your-resource-group-name>
CLUSTER_NAME=<your-cluster-name>
KUBERNETES_VERSION=<target-kubernetes-version>

# Run the upgrade command with validation bypass
az aks upgrade --name $CLUSTER_NAME --resource-group $RESOURCE_GROUP_NAME --kubernetes-version $KUBERNETES_VERSION --enable-force-upgrade --upgrade-override-until 2023-10-01T13:00:00Z

Hinweis

Z ist der Zonenkennzeichner für den UTC-/GMT-Offset von null, der auch als „Zuluzeit“ bezeichnet wird. In diesem Beispiel wird das Ende des Zeitfensters auf 13:00:00 GMT festgelegt. Weitere Informationen finden Sie unter Kombinierte Datums- und Uhrzeitdarstellungen.

Produktionsüberlegungen

Befolgen Sie für Workloads in der Produktion die folgenden Vorgehensweisen:

  • Behandeln Sie das Blockieren von Upgrades als Sicherheitsmechanismus, nicht als Fehlerstatus.
  • Ziehen Sie die API-Migration einem forcierten Umgehen vor.
  • Verwenden Sie geplante Wartungsfenster und Überprüfungen vor dem Upgrade.
  • Überwachen Sie die veraltete API-Verwendung kontinuierlich, um Last-Minute-Upgradeblöcke zu vermeiden.

In diesem Artikel wurde gezeigt, wie Sie AKS-Clusterupgrades automatisch bei API-Breaking Changes beenden. Weitere Informationen zu weiteren Upgradeoptionen für AKS-Cluster finden Sie unter Upgradeoptionen für Azure Kubernetes Service (AKS)-Cluster.

Weitere Informationen zu AKS Automatic finden Sie in den folgenden Artikeln: