本文說明如何設定及管理節點中斷原則,以控制在您的 Azure Kubernetes Service (AKS) 叢集中,何時允許需要節點重新映像並觸發節點重新部署的作業。
先決條件
- 請參閱 節點中斷政策的總覽 ,了解 節點中斷政策的運作 方式及 其涵蓋的操作。
- 已安裝並設定 Azure CLI 版本 2.76.0 或更新版本。 要找到你的 CLI 版本,請執行該
az --version指令。 如果您需要安裝或升級,請參閱 安裝 Azure CLI。 - 現有的 AKS 叢集,或是您可以建立一個已設定 Node Disruption Policy 的新叢集。
-
安裝
aks-previewAzure CLI 擴充功能並註冊 Node Disruption Policy 預覽功能。
Important
AKS 預覽功能以自助方式提供,並採選擇加入制。 預覽版本係依「現狀」及「可用情況」提供,且不適用於服務等級協定與有限保固。 客戶支援部門會盡最大努力,部分支援 AKS 預覽。 因此,這些功能不適合實際執行用途。 如需詳細資訊,請參閱下列支援文章:
安裝 aks-preview Azure CLI 擴充功能
使用
aks-preview命令安裝az extension add延伸模組。az extension add --name aks-preview使用
az extension update命令,更新為最新版的延伸模組。az extension update --name aks-preview
註冊 Node Disruption Policy 預覽功能
請使用 指令 az feature register 註冊節點中斷政策預覽功能。
az 功能註冊 -- 命名空間「Microsoft.ContainerService」 --名稱「NodeDisruptionProfile」
狀態需要幾分鐘的時間才能顯示為 [已註冊]。
在新叢集上設定節點中斷政策
使用 az aks create 命令建立新的 AKS 叢集,並將 --node-disruption-policy 參數設定為下列其中一種節點中斷原則組態:Allow(預設)、AllowDuringMaintenanceWindow 或 Block。
預設允許任何時候進行干擾性操作
az aks create \
--resource-group myResourceGroup \
--name myAKSCluster \
--node-count 3 \
--node-disruption-policy Allow \
--generate-ssh-keys
僅允許在維護期間進行干擾作業
az aks create \
--resource-group myResourceGroup \
--name myAKSCluster \
--node-count 3 \
--node-disruption-policy AllowDuringMaintenanceWindow \
--generate-ssh-keys
Important
使用 AllowDuringMaintenanceWindow 時,確保您設定 aksManagedNodeOSUpgradeSchedule 維護時段。 否則,干擾性操作將無限期被允許。 欲了解更多資訊,請參閱「使用計劃性維護來排程及控制您的 Azure Kubernetes Service 叢集升級」。
封鎖所有干擾行動
az aks create \
--resource-group myResourceGroup \
--name myAKSCluster \
--node-count 3 \
--node-disruption-policy Block \
--generate-ssh-keys
更新現有叢集的節點中斷政策
使用 az aks update 指令,並將 --node-disruption-policy 參數設為下列其中一種原則設定,以更新現有 AKS 叢集上的節點中斷原則:Allow(預設)、AllowDuringMaintenanceWindow 或 Block。
變更政策以允許在維護期間操作
az aks update \
--resource-group myResourceGroup \
--name myAKSCluster \
--node-disruption-policy AllowDuringMaintenanceWindow
更改政策以阻擋所有干擾操作
az aks update \
--resource-group myResourceGroup \
--name myAKSCluster \
--node-disruption-policy Block
將政策改回為允許隨時進行作業
az aks update \
--resource-group myResourceGroup \
--name myAKSCluster \
--node-disruption-policy Allow
驗證節點中斷政策設定
請使用指令 az aks show 驗證節點中斷政策設定。
az aks show \
--resource-group myResourceGroup \
--name myAKSCluster \
--query "nodeDisruptionProfile.nodeDisruptionPolicy" \
--output tsv
輸出顯示目前的政策設定,例如 Allow、 AllowDuringMaintenanceWindow、 或 Block。
處理遭封鎖的操作
當節點中斷政策阻擋了干擾性操作時,你可以 等待維護窗口 或 暫時更改政策。
等到維修時段
如果你正在使用 AllowDuringMaintenanceWindow,請將此作業安排在下一個維護時段進行。 你可以透過指令 az aks maintenanceconfiguration list 查看已設定的維護視窗。
az aks maintenanceconfiguration list \
--resource-group myResourceGroup \
--cluster-name myAKSCluster
暫時更改政策
使用將
Allow設為az aks update的--node-disruption-policy指令,將政策更新為Allow。az aks update \ --resource-group myResourceGroup \ --name myAKSCluster \ --node-disruption-policy Allow執行您的破壞操作。 以下範例透過以下
az aks update指令更新自訂的 CA 憑證:az aks update \ --resource-group myResourceGroup \ --name myAKSCluster \ --custom-ca-trust-certificates <path-to-certificate-file>請使用
az aks update指令還原原始政策。 以下範例可--node-disruption-policy恢復為Block:az aks update \ --resource-group myResourceGroup \ --name myAKSCluster \ --node-disruption-policy Block
Kubernetes 1.36 及更早版本需要手動節點池升級的操作
在 Kubernetes 1.37 及更新版本中,節點中斷政策涵蓋以下設定變更。 在 Kubernetes 1.36 及更早版本中,這些變更需要手動升級節點池:
- SSH 設定變更,例如更改 SSH 存取方式或更新 SSH 公鑰。
- IMDS 限制的變更,例如啟用或停用 IMDS 限制。
- 為網路隔離叢集變更 Bootstrap 設定檔 ACR 名稱。
- 出站類型變更,例如變更叢集輸出路由。
在 Kubernetes 1.36 及更早版本,設定變更後手動執行指令 az aks nodepool upgrade 。 例如:
az aks nodepool upgrade \
--resource-group myResourceGroup \
--cluster-name myAKSCluster \
--name <nodepool-name> \
--node-image-only
欲了解更多關於節點中斷政策涵蓋的操作資訊,請參閱 節點中斷政策總覽。
疑難排解節點中斷原則問題
行動意外受阻
若操作意外阻塞,請依照以下步驟排除問題:
請使用
az aks show指令檢查目前的政策設定。az aks show \ --resource-group myResourceGroup \ --name myAKSCluster \ --query "nodeDisruptionProfile.nodeDisruptionPolicy" \ --output tsv如果你正在使用
AllowDuringMaintenanceWindow,請用az aks maintenanceconfiguration show指令驗證維護視窗的設定。az aks maintenanceconfiguration show \ --resource-group myResourceGroup \ --cluster-name myAKSCluster \ --name aksManagedNodeOSUpgradeSchedule檢查目前時間是否在維護期間內。
未配置維護視窗
如果你設定政策為 AllowDuringMaintenanceWindow 但不設定維護視窗,所有干擾性操作都是 被允許的。
請使用 az aks maintenanceconfiguration add 指令設定維護視窗。
az aks maintenanceconfiguration add \
--resource-group myResourceGroup \
--cluster-name myAKSCluster \
--name aksManagedNodeOSUpgradeSchedule \
--schedule-type Weekly \
--day-of-week Sunday \
--interval-weeks 1 \
--duration 4 \
--start-hour 2