在 API 重大變更上自動停止 Azure Kubernetes Service (AKS) 叢集升級
本文說明如何在 API 重大變更上自動停止 Azure Kubernetes Service (AKS) 叢集升級。
概觀
若要保持在支援的 Kube 版本內,您必須每年至少升級您的叢集一次,並準備因應全部可能的中斷。 這些中斷包括 API 重大變更、取代,和相依性 (例如 Helm 和 Container Storage Interface (CSI)) 所造成的中斷。 在沒有任何停機時間的情況下,很難預期這些中斷並移轉重要的工作負載。
您可以將您的 AKS 叢集設定為自動停止升級操作,其中包含已淘汰 API 的次要版本變更,並向您警示該問題。 這項功能可協助您避免非預期的中斷,並讓您有時間處理已淘汰的 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 變更。
移除已淘汰 API 的使用方式 (建議)
在 Azure 入口網站中,瀏覽至叢集資源,然後選取 [診斷並解決問題]
選取 [建立]、[升級]、[刪除] 和 [調整]>[Kubernetes API 淘汰]。
從最後一次淘汰的 API 使用量看到的時間起等候 12 小時。 只讀動詞會從已被取代的 API 使用方式中排除, 也就是 Get/List/Watch。您也可以啟用 容器深入解析 並探索 kube 稽核記錄,來檢查過去的 API 使用量。
重試叢集升級。
略過驗證以忽略 API 變更
注意
此方法會要求您使用 Azure CLI 2.57 版或更新版本。 如果您已安裝預覽 CLI 擴充功能,則必須更新為版本或更新版本 3.0.0b10
。 不建議使用此方法,因為目標 Kubernetes 版本中已被淘汰的 API 可能無法長期運作。 建議您在升級完成後儘快將其移除。
略過驗證以忽略 API 重大變更並叫用升級。 指定
enable-force-upgrade
旗標並設定upgrade-override-until
屬性,以定義略過驗證的時段結尾。 如果未設定任何值,則會將時段預設為目前時間起的三天。 您指定的日期和時間必須在未來。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
注意
Z
是零 UTC/GMT 位移的區域指示項,也稱為「Zulu」時間。 本範例會將視窗的結尾設定為13:00:00
GMT。 如需詳細資訊,請參閱合併日期和時間表示法。
下一步
本文說明如何在 API 重大變更上自動停止 AKS 叢集升級。 若要深入了解 AKS 叢集的更多升級選項,請參閱 Azure Kubernetes Service (AKS) 叢集的升級選項。