自動升級節點OS映像

AKS 提供多個自動升級通道,專用於即時節點層級OS安全性更新。 此通道與叢集層級 Kubernetes 版本升級不同,並取代它。

節點 OS 自動升級與叢集自動升級之間的互動

節點層級 OS 安全性更新的發行速度比 Kubernetes 修補程式或次要版本更新更快。 節點 OS 自動升級通道可提供彈性,並為節點層級 OS 安全性更新啟用自訂策略。 然後,您可以針對叢集層級 Kubernetes 版本自動升級選擇個別計劃。 最好同時使用叢集層級 自動升級 和節點OS自動升級通道。 透過套用兩組個別的維護時段,即可微調排程 - 對叢集自動升級通道套用 aksManagedAutoUpgradeSchedule,對節點 OS 自動升級通道則套用 aksManagedNodeOSUpgradeSchedule

節點 OS 映像升級的通道

選取的通道會決定升級的時間。 變更節點 OS 自動升級通道時,最長需要等候 24 小時以使變更生效。 一旦您從一個通道變更為另一個通道,就會觸發重新映像,導致滾動節點。

注意

節點 OS 映像自動升級不會影響叢集的 Kubernetes 版本。 其只適用於支援版本中的叢集。

下列是可用的升級通道。 您可選擇下列其中一個選項:

管道 描述 OS 特有的行為
None 節點不會自動套用安全性更新。 這表示您須全權負責安全性更新。 N/A
Unmanaged 系統會透過 OS 內建修補基礎結構自動套用 OS 更新。 新配置的機器一開始處於未修補狀態。 OS 基礎結構會在某個時間點對其進行修補。 Ubuntu 和 Azure Linux (CPU 節點集區) 大約每天 06:00 UTC 左右透過自動升級/dnf-automatic 套用安全性修補程式一次。 Windows 不會自動套用安全性修補程式,因此這個選項的行為相當於 None。 您必須使用 Kured 之類的工具來管理重新啟動程式。
SecurityPatch 此通道處於預覽狀態,且需要啟用功能旗標 NodeOsUpgradeChannelPreview。 如需詳細資料,請參閱<必要條件>一節。 AKS 會定期更新節點的虛擬硬碟 (VHD),並使用標示為「僅限安全性」的映像維護工具的修補程式。當安全性修補程式套用至節點時,可能會中斷。 套用修補程式後,VHD 就會更新,而現有的機器會升級至該 VHD,以接受維護時段和激增設定。 此選項會產生在節點資源群組中裝載 VHD 的額外成本。 如果您使用此通道,依預設會停用 Linux 自動升級 Azure Linux 在已啟用 GPU 的 VM 上不支援此通道。 只要仍支援 Kubernetes 次要版本,SecurityPatch 就適用於已淘汰的修補程式版本。
NodeImage AKS 每週會使用新修補的 VHD 更新節點,該 VHD 中包含安全性修正和 Bug 修正。 新 VHD 的更新會根據維護時段和激增設定中斷執行。 選擇此選項不會產生額外的 VHD 成本。 如果您使用此通道,依預設會停用 Linux 自動升級。 節點映射升級支援已淘汰的修補程式版本,只要仍支援次要 Kubernetes 版本。

在新叢集上設定節點OS自動升級通道

  • 使用 az aks create 命令搭配 --node-os-upgrade-channel 參數,在新叢集上設定節點OS自動升級通道。 下列範例會將節點 OS 自動升級通道設定為 SecurityPatch

    az aks create --resource-group myResourceGroup --name myAKSCluster --node-os-upgrade-channel SecurityPatch
    

在現有叢集上設定節點OS自動升級通道

  • 使用 az aks update 命令搭配 --node-os-upgrade-channel 參數,在現有叢集上設定節點 os 自動升級通道。 下列範例會將節點 OS 自動升級通道設定為 SecurityPatch

    az aks update --resource-group myResourceGroup --name myAKSCluster --node-os-upgrade-channel SecurityPatch
    

更新所有權和排程

預設頻率表示未套用計劃性維護時段。

通道 更新所有權 預設頻率
Unmanaged OS 驅動的安全性更新。 AKS 無法控制這些更新。 對於 Ubuntu 和 Azure Linux,在每晚凌晨 6 點 UTC 左右。 對於 Windows,則為每月一次。
SecurityPatch AKS 測試、完全受控,並套用安全部署做法。 如需詳細資訊,請參閱 在 Azure 上增加標準工作負載的安全性和復原能力。 每週。
NodeImage AKS 每週。

注意

雖然 Windows 安全性更新會每月發行,但使用 Unmanaged 通道不會自動將這些更新套用至 Windows 節點。 如果您選擇Unmanaged通道,您必須使用 Kured 之類的工具來管理重新啟動程式,才能正確套用安全性修補程式。

SecurityPatch 通道需求

若要使用 SecurityPatch 通道,您的叢集必須支援下列需求:

  • 必須使用 API 版本 11-02-preview 或更新版本
  • 如果使用 Azure CLI,則必須安裝 aks-preview CLI 延伸模組版本 0.5.166 或更新版本
  • 您的訂用帳戶必須啟用 NodeOsUpgradeChannelPreview 功能旗標

註冊 NodeOsUpgradeChannelPreview

使用 az feature register 命令以註冊 NodeOsUpgradeChannelPreview 功能旗標,如下列範例所示:

az feature register --namespace "Microsoft.ContainerService" --name "NodeOsUpgradeChannelPreview"

狀態需要幾分鐘的時間才會顯示「已註冊」。 使用 az feature show 命令以驗證註冊狀態:

az feature show --namespace "Microsoft.ContainerService" --name "NodeOsUpgradeChannelPreview"

當狀態顯示為已註冊 時,請使用 az provider register 命令重新整理 Microsoft.ContainerService 資源提供者的註冊:

az provider register --namespace Microsoft.ContainerService

節點通道已知錯誤

  • 目前,當您將叢集自動升級通道設定為 node-image 時,也會將節點 OS 自動升級通道自動設定為 NodeImage。 如果叢集自動升級通道為 node-image,您就無法變更節點 OS 自動升級通道值。 若要設定節點 OS 自動升級通道值,請檢查 叢集自動升級通道 值不是 node-image

  • Windows OS 節點集區不支援 SecurityPatch 通道。

注意

根據預設,使用 API 版本 06-01-2022 或更新版本建立的任何新叢集都會將節點 OS 自動升級通道值設定為 NodeImage。 任何以 API 06-01-2022 之前版本建立的現有叢集,預設都會將節點 OS 自動升級通道值設定為 None

節點 OS 計劃性維護時段

節點 OS 自動升級的計劃性維護會從您指定的維護時段開始。

注意

為確保正常運作,請使用四小時以上的維護時段。

如需計劃性維護的詳細資訊,請參閱使用計劃性維護來排程 Azure Kubernetes Service (AKS) 叢集的維護時段

節點 OS 自動升級常見問題

  • 如何檢查叢集上目前的 nodeOsUpgradeChannel 值?

請執行 az aks show 命令並檢查 "autoUpgradeProfile",以判定將 nodeOsUpgradeChannel 設定為什麼值:

az aks show --resource-group myResourceGroup --name myAKSCluster --query "autoUpgradeProfile"
  • 如何監視節點 OS 自動升級的狀態?

若要檢視節點 OS 自動升級的狀態,請查閱叢集上的活動記錄。 您也可以查閱升級 AKS 叢集中所述的特定升級相關事件。 AKS 也會發出與升級相關的事件方格事件。 若要深入了解,請參閱以 AKS 作為事件方格來源

  • 如果叢集自動升級通道設定為 node-image,可以變更節點 OS 自動升級通道值嗎?

否。 目前,當您將叢集自動升級通道設定為 node-image 時,也會將節點 OS 自動升級通道自動設定為 NodeImage。 如果叢集自動升級通道為 node-image,您就無法變更節點 OS 自動升級通道值。 為了能夠變更節點 OS 自動升級通道值,請確定叢集自動升級通道不是 node-image

  • 為什麼建議 SecurityPatch 透過 Unmanaged 通道使用?

在通道上 Unmanaged ,AKS 無法控制傳遞安全性更新的方式和時機。 使用 SecurityPatch時,安全性更新會經過完整測試,並遵循安全部署做法。 SecurityPatch 也接受維護期間。 如需詳細資訊,請參閱 增加 Azure 上標準工作負載的安全性和復原能力。

  • 如何? 知道節點上是否已SecurityPatch套用 或 NodeImage 升級?

執行下列命令以取得節點標籤:

kubectl get nodes --show-labels

在傳回的標籤中,您應該會看到類似下列輸出的行:

kubernetes.azure.com/node-image-version=AKSUbuntu-2204gen2containerd-202311.07.0

在這裡,基底節點映像版本是 AKSUbuntu-2204gen2containerd。 如果適用,通常會遵循安全性修補程式版本。 在上述範例中,它是 202311.07.0

節點標籤檢視下的 Azure 入口網站 也會查閱相同的詳細數據:

Azure 入口網站 中 AKS 叢集節點頁面的螢幕快照。節點映像版本的標籤清楚地顯示基底節點映像和最新的已套用安全性修補程式日期。

下一步

如需升級最佳做法和其他考量的詳細討論,請參閱 AKS 修補和升級指導