Freigeben über


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

In diesem Artikel erfahren Sie, wie Sie Clusterupgrades von Azure Kubernetes Service (AKS) bei API-Breaking-Changes automatisch beenden.

Übersicht

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.

Sie können Ihren AKS-Cluster so konfigurieren, dass Upgradevorgänge, die aus einer Nebenversionsänderungen mit veralteten APIs bestehen, automatisch beendet werden und Sie auf das Problem aufmerksam gemacht werden. Dieses Feature hilft dabei, unerwartete Unterbrechungen zu vermeiden und gibt Ihnen Zeit, sich um die veralteten APIs zu kümmern, bevor Sie mit dem Upgrade fortfahren.

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 das Verwenden veralteter APIs beenden (empfohlen) oder die Überprüfung umgehen, um API-Änderungen zu ignorieren.

  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 skalieren>Veraltete Kubernetes-APIs aus.

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

  3. Warten Sie 12 Stunden ab dem Zeitpunkt, zu dem die letzte veraltete API-Nutzung erfolgt ist. Schreibgeschützte Verben werden aus der veralteten API-Verwendung ausgeschlossen, nämlich Get/List/Watch. (Sie können auch die vergangene API-Nutzung überprüfen, indem Sie Containereinblicke aktivieren und Kube-Überwachungsprotokolle untersuchen.)

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

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

Hinweis

Für diese Methode müssen Sie Version 2.57 oder höher der Azure CLI verwenden. Wenn Sie die CLI-Vorschauerweiterung installiert haben, müssen Sie auf die Version 3.0.0b10 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.

  1. Umgehen Sie die Überprüfung, um Breaking Changes für APIs zu ignorieren und ein Upgrade aufzurufen. 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 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.

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.