節點 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 |
受 AKS 測試、完全受控,並套用安全部署做法的 OS 安全性修正程式。 AKS 會定期使用標示為「僅限安全性」的映像維護工具所提供的修補程式,更新節點的虛擬硬碟 (VHD)。當安全性修正程式套用至節點時可能會造成中斷,不過 AKS 只會在必要時重新製作節點映像,例如針對特定核心安全性套件來限制中斷。 套用修補程式後,VHD 就會更新,而現有的機器會升級至該 VHD,以接受維護時段和激增設定。 如果 AKS 決定不需要重新製作節點映像,則會立即修補節點,而不會清空 Pod 並執行任何 VHD 更新。 此選項會產生在節點資源群組中裝載 VHD 的額外成本。 如果您使用此通道,依預設會停用 Linux 自動升級。 | Azure Linux 在已啟用 GPU 的 VM 上不支援此通道。 只要仍支援 kubernetes 次要版本,SecurityPatch 就適用於已淘汰的修補程式版本。 |
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 \ --generate-ssh-keys
在現有的叢集上設定節點 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
通道。
注意
針對 SecurityPatch
通道使用 CLI 2.61.0 版本或更新版本。
節點 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 修補檔和升級指導。