共用方式為


在 API 重大變更上自動停止 Azure Kubernetes Service (AKS) 叢集升級

若要保持在支援的 Kube 版本內,您必須每年至少升級您的叢集一次,並準備因應全部可能的中斷。 這些中斷包括 API 重大變更、取代,和相依性 (例如 Helm 和 Container Storage Interface (CSI)) 所造成的中斷。 在沒有任何停機時間的情況下,很難預期這些中斷並移轉重要的工作負載。

AKS 現在會自動停止升級操作,其中包含已淘汰 API 的次要版本變更,並傳送錯誤訊息來提醒您該問題。

開始之前

開始之前,請先確定您已符合下列必要條件:

  • 升級作業是叢集控制平面的 Kubernetes 次要版本變更。
  • 您要升級至的 Kubernetes 版本是 1.26 或更新版本。
  • 在執行升級操作之前,被淘汰的 API 最後一次使用必須在目標版本之前的 12 小時內發生。 AKS 會每小時記錄使用量,因此一小時內任何已淘汰 API 的使用並不保證會出現在偵測中。

減輕已停止的升級作業的問題

如果您符合必要條件,嘗試升級,卻收到類似下列範例的錯誤訊息:

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

您有兩個選項可減輕問題。 您可以移除已淘汰 API 的使用方式 (建議),或略過驗證以忽略 API 變更

  1. 在 Azure 入口網站中,瀏覽至叢集的概觀頁面,然後選取 [診斷並解決問題]

  2. 瀏覽至 [建立]、[升級]、[刪除] 和 [調整] 類別,然後選取 [Kubernetes API 取代]

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

  3. 從最後一次淘汰的 API 使用量看到的時間起等候 12 小時。 檢查已淘汰 API 使用量中的動詞,以了解其是否為監看式

  4. 重試叢集升級。

您也可以啟用容器深入解析並探索 kube 稽核記錄,來檢查過去的 API 使用量。 檢查已淘汰 API 使用量中的動詞,以了解其是否為監看式使用案例。

略過驗證以忽略 API 變更

注意

此方法會要求您使用 Azure CLI 2.53 版或更新版本。 如果您已安裝 aks-preview CLI 擴充功能,則必須更新為版本 0.5.154 或更新版本。 不建議使用此方法,因為目標 Kubernetes 版本中已被淘汰的 API 可能無法長期運作。 建議您在升級完成後儘快將其移除。

  • 略過驗證以忽略使用 az aks update 命令的 API 重大變更。 指定 enable-force-upgrade 旗標並設定 upgrade-override-until 屬性,以定義略過驗證的時段結尾。 如果未設定任何值,則會將時段預設為目前時間起的三天。 您指定的日期和時間必須在未來。

    az aks update --name myAKSCluster --resource-group myResourceGroup --enable-force-upgrade --upgrade-override-until 2023-10-01T13:00:00Z
    

    注意

    Z 是零 UTC/GMT 位移的區域指示項,也稱為「Zulu」時間。 本範例會將視窗的結尾設定為 13:00:00 GMT。 如需詳細資訊,請參閱合併日期和時間表示法

  • 一旦上一個命令成功,您就可以重試升級作業。

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

下一步

本文說明如何在 API 重大變更上自動停止 AKS 叢集升級。 若要深入了解 AKS 叢集的更多升級選項,請參閱 Azure Kubernetes Service (AKS) 叢集的升級選項