節點 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 |
OS 安全性修補程式,這是 AKS 測試、完全受控,並套用安全部署做法。 AKS 會定期更新節點的虛擬硬碟 (VHD),並使用標示為「僅限安全性」的映像維護工具的修補程式。當安全性修補程式套用至節點時,可能會中斷,不過 AKS 只會在必要時重新映像您的節點,例如針對特定核心安全性套件,來限制中斷。 套用修補程式後,VHD 就會更新,而現有的機器會升級至該 VHD,以接受維護時段和激增設定。 如果 AKS 決定不需要重新映像節點,它會修補節點即時,而不會清空 Pod 並執行任何 VHD 更新。 此選項會產生在節點資源群組中裝載 VHD 的額外成本。 如果您使用此通道,依預設會停用 Linux 自動升級。 | Azure Linux 在已啟用 GPU 的 VM 上不支援此通道。 SecurityPatch 適用於已被取代的 kubernetes 修補程式版本,只要仍支援次要 Kubernetes 版本。 |
NodeImage |
AKS 每週會使用新修補的 VHD 更新節點,該 VHD 中包含安全性修正和 Bug 修正。 新 VHD 的更新會根據維護時段和激增設定中斷執行。 選擇此選項不會產生額外的 VHD 成本。 如果您使用此通道,依預設會停用 Linux 自動升級。 只要仍支援 Kubernetes 次要版本,節點映像升級就支援已淘汰的修補程式版本。 節點映像經過 AKS 測試、完全受控,並套用安全部署做法 |
在新叢集上設定節點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 上 Canonical 工作負載的安全性和復原能力。 | 每週。 |
NodeImage |
AKS 測試、完全受控,並套用安全部署做法。 如需版本的詳細資訊,請在 發行追蹤器中查閱 AKS 節點映射 | 每週。 |
注意
雖然 Windows 安全性更新會每月發行,但使用 Unmanaged
通道不會自動將這些更新套用至 Windows 節點。 如果您選擇 Unmanaged
通道,您必須管理 Windows 節點的重新啟動程式。
節點通道已知限制
目前,當您將叢集自動升級通道設定為
node-image
時,也會將節點 OS 自動升級通道自動設定為NodeImage
。 如果叢集自動升級通道為node-image
,您無法變更節點 OS 自動升級通道值。 若要設定節點 OS 自動升級通道值,請檢查叢集自動升級通道值不是node-image
。Windows OS 節點集區不支援
SecurityPatch
通道。
注意
針對通道使用 CLI 2.61.0 版或更新版本 SecurityPatch
。
節點 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 上 Canonical 工作負載的安全性和復原能力。
- 一律會導致節點的重新映像嗎
SecurityPatch
?
AKS 只有在絕對必要時才會將重新映像限制為 ,例如可能需要重新安裝映像才能完全套用的特定核心套件。 SecurityPatch
是設計來盡可能減少中斷。 如果 AKS 決定不需要重新映像節點,它會即時修補節點,而不會清空 Pod,而且在這種情況下不會執行任何 VHD 更新。
- 如何知道節點上是否已套用
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 修補檔和升級指導。