Teilen über


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

Um sicherzustellen, dass Sie eine unterstützte Kubernetes-Version verwenden, müssen Sie Ihren Cluster mindestens ein Mal pro Jahr aktualisieren und sich auf alle möglichen Unterbrechungen vorbereiten. Zu diesen Unterbrechungen gehören Störungen, die durch Breaking Changes bei der API, veraltete Features und Abhängigkeiten wie Helm und Container Storage Interface (CSI) verursacht werden. Es kann schwierig sein, diese Unterbrechungen vorherzusehen und kritische Workloads ohne Downtime zu migrieren.

AKS beendet jetzt automatisch Upgrade-Vorgänge, die aus einer Nebenversionsänderung mit veralteten APIs bestehen, und sendet Ihnen eine Fehlermeldung, um Sie über das Problem zu benachrichtigen.

Voraussetzungen

Bevor Sie beginnen, stellen Sie sicher, dass Sie die folgenden Voraussetzungen erfüllen:

  • Der Upgradevorgang ist eine Kubernetes-Nebenversionsänderung für die Clustersteuerungsebene.
  • Die Kubernetes-Version, auf die Sie ein Upgrade durchführen, ist 1.26 oder höher.
  • Die letzte Verwendung veralteter APIs für die Zielversion, auf die Sie ein Upgrade durchführen, muss innerhalb von 12 Stunden vor dem Upgradevorgang erfolgen. AKS zeichnet die Nutzung stündlich auf, sodass die Nutzung von veralteten APIs innerhalb einer Stunde nicht garantiert in der Erkennung angezeigt wird.

Minderung beendeter Upgradevorgänge

Wenn Sie die Voraussetzungen erfüllen, versuchen Sie ein Upgrade, und erhalten Sie eine Fehlermeldung, die der folgenden Beispielfehlermeldung ähnelt:

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"
})

Sie haben zwei Optionen, um das Problem zu beheben. Sie können die Verwendung veralteter APIs entfernen (empfohlen) oder die Überprüfung umgehen, um API-Änderungen zu ignorieren.

  1. Navigieren Sie im Azure-Portal zur Übersichtsseite Ihres Clusters, und wählen Sie Probleme diagnostizieren und beheben aus.

  2. Navigieren Sie zur Kategorie Erstellen, Aktualisieren, Löschen und Skalieren, und wählen Sie Veraltete Funktionen der Kubernetes-API aus.

    A screenshot of the Azure portal showing the 'Selected Kubernetes API deprecations' section.

  3. Warten Sie 12 Stunden ab dem Zeitpunkt, zu dem die letzte veraltete API-Nutzung erfolgt ist. Überprüfen Sie das Verb in der Verwendung veralteter APIs, um zu ermitteln, ob es sich um ein Element vom Typ watch handelt.

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

Sie können die vergangenen API-Nutzungen auch überprüfen, indem Sie Containererkenntnisse aktivieren und Kube-Überwachungsprotokolle untersuchen. Überprüfen Sie das Verb in der Verwendung veralteter APIs, um zu ermitteln, ob es sich um einen Anwendungsfall vom Typ watch handelt.

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

Hinweis

Für diese Methode müssen Sie die Azure-Befehlszeilenschnittstelle in Version 2.53 oder höher verwenden. Wenn Sie die CLI-Erweiterung aks-preview installiert haben, müssen Sie auf die Version 0.5.154 oder höher aktualisieren. Diese Methode wird nicht empfohlen, da veraltete APIs in der Kubernetes-Zielversion möglicherweise nicht langfristig funktionieren. Sie sollten sie so schnell wie möglich nach Abschluss des Upgrades entfernen.

  • Umgehen sie die Überprüfung, um API-Breaking Changes mithilfe des az aks update-Befehls zu ignorieren. Geben Sie das enable-force-upgrade-Flag an, und legen Sie die upgrade-override-until-Eigenschaft fest, um das Ende des Fensters zu definieren, in dem die Überprüfung umgangen wird. Wenn kein Wert festgelegt wird, wird das Zeitfenster standardmäßig auf drei Tage ab dem aktuellen Zeitpunkt festgelegt. Das Datum und die Uhrzeit, die Sie angeben, müssen in der Zukunft liegen.

    az aks update --name myAKSCluster --resource-group myResourceGroup --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.

  • Nachdem der vorherige Befehl erfolgreich war, können Sie den Upgradevorgang wiederholen.

    az aks upgrade --name myAKSCluster --resource-group myResourceGroup --kubernetes-version <KUBERNETES_VERSION>
    

Nächste Schritte

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.