在 Azure Kubernetes Service (AKS) 中設定節點中斷原則 (預覽)

本文說明如何設定及管理節點中斷原則,以控制在您的 Azure Kubernetes Service (AKS) 叢集中,何時允許需要節點重新映像並觸發節點重新部署的作業。

先決條件

Important

AKS 預覽功能以自助方式提供,並採選擇加入制。 預覽版本係依「現狀」及「可用情況」提供,且不適用於服務等級協定與有限保固。 客戶支援部門會盡最大努力,部分支援 AKS 預覽。 因此,這些功能不適合實際執行用途。 如需詳細資訊,請參閱下列支援文章:

安裝 aks-preview Azure CLI 擴充功能

  1. 使用 aks-preview 命令安裝 az extension add 延伸模組。

    az extension add --name aks-preview
    
  2. 使用 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

暫時更改政策

  1. 使用將 Allow 設為 az aks update 的 --node-disruption-policy 指令,將政策更新為 Allow。

    az aks update \
        --resource-group myResourceGroup \
        --name myAKSCluster \
        --node-disruption-policy Allow
    
  2. 執行您的破壞操作。 以下範例透過以下 az aks update 指令更新自訂的 CA 憑證:

    az aks update \
        --resource-group myResourceGroup \
        --name myAKSCluster \
        --custom-ca-trust-certificates <path-to-certificate-file>
    
  3. 請使用 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

欲了解更多關於節點中斷政策涵蓋的操作資訊,請參閱 節點中斷政策總覽。

疑難排解節點中斷原則問題

行動意外受阻

若操作意外阻塞,請依照以下步驟排除問題:

  1. 請使用 az aks show 指令檢查目前的政策設定。

    az aks show \
        --resource-group myResourceGroup \
        --name myAKSCluster \
        --query "nodeDisruptionProfile.nodeDisruptionPolicy" \
        --output tsv
    
  2. 如果你正在使用 AllowDuringMaintenanceWindow,請用 az aks maintenanceconfiguration show 指令驗證維護視窗的設定。

    az aks maintenanceconfiguration show \
        --resource-group myResourceGroup \
        --cluster-name myAKSCluster \
        --name aksManagedNodeOSUpgradeSchedule
    
  3. 檢查目前時間是否在維護期間內。

未配置維護視窗

如果你設定政策為 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