自動升級節點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 入口網站 也會查閱相同的詳細數據:
下一步
如需升級最佳做法和其他考量的詳細討論,請參閱 AKS 修補和升級指導。