AKS 提供多個自動升級通道,專用於即時節點層級OS安全性更新。 此通道與叢集層級 Kubernetes 版本升級不同,並會將其取代。
這很重要
從 2025 年 11 月 30 日開始,AKS 將不再支援或提供 Azure Linux 2.0 的安全性更新。 從 2026 年 3 月 31 日開始,節點映像將會移除,而且您將無法調整節點集區。 將 節點集區升級 至支援的 Kubernetes 版本,或移轉至 osSku AzureLinux3,以升級至受支援的 Azure Linux 版本。 如需詳細資訊,請參閱 AKS 上的 [淘汰] Azure Linux 2.0 節點集區。
節點OS自動升級與叢集自動升級之間的互動
節點層級 OS 安全性更新的發行速度比 Kubernetes 修補程式或次要版本更新更快。 節點OS自動升級通道可為您提供彈性,並啟用節點層級OS安全性更新的自定義策略。 然後,您可以為叢集層級 Kubernetes 版本 自動升級選擇個別方案。
最好同時使用叢集層級 的自動升級 和節點OS自動升級通道。 針對叢集自動升級通道和 - 節點OS自動升級通道,套用兩組個別的aksManagedAutoUpgradeScheduleaksManagedNodeOSUpgradeSchedule,即可微調排程。
節點 OS 映射升級的通道
選取的通道會決定升級的時間。 變更節點 OS 自動升級通道時,最長需要等候 24 小時以使變更生效。
附註
- 節點OS映像自動升級不會影響叢集的 Kubernetes 版本。
- 從 API 2023-06-01 版開始,任何新 AKS 叢集的預設值為
NodeImage。
造成進行重新製作映像的節點作業系統通道變更
下列節點作業系統通道轉換將會觸發節點上的重新製作映像:
| 從 | 至 |
|---|---|
| 未受管理 | 沒有 |
| 未指定 | 未受管理 |
| SecurityPatch | 未受管理 |
| NodeImage | 未受管理 |
| 沒有 | 未受管理 |
可用的節點OS升級通道
下列是可用的升級通道。 您可選擇下列其中一個選項:
| 通路 | 描述 | OS 特有的行為 |
|---|---|---|
None |
節點不會自動套用安全性更新。 這表示您須全權負責安全性更新。 | N/A |
Unmanaged |
作業系統內建修補基礎架構會自動套用作業系統更新。 新配置的機器尚未打上補丁。 OS 基礎結構會在某個時間點對其進行修補。 | Ubuntu 和 Azure Linux (CPU 節點集區) 大約每天 06:00 UTC 左右透過自動升級/dnf-automatic 套用安全性修補程式一次。 Windows 不會自動套用安全性修補程式,因此這個選項的行為相當於 None。 您需要使用 kured 等工具管理重新啟動過程。
在 AKS 上具有 OS Guard 的 Azure Linux 不支援 Unmanaged。 |
SecurityPatch |
受 AKS 測試、完全受控,並套用安全部署做法的 OS 安全性修正程式。 AKS 會使用來自標示為「僅限安全性」之映像維護者的修補程式,定期更新節點的虛擬硬碟 (VHD)。當安全性修補程式套用至節點時,可能會發生中斷。 不過,AKS 只會在必要時為您的節點重新製作映像 (例如針對特定核心安全性套件) 來限制中斷。 套用修補程式後,VHD 就會更新,而現有的機器會升級至該 VHD,以接受維護時段和激增設定。 如果 AKS 決定不需要為節點重新製作映像,則會立即修補節點,而不會清空 Pod 並執行任何 VHD 更新。 此選項會產生在節點資源群組中裝載 VHD 的額外成本。 如果您使用此通道,依預設會停用 Linux 自動升級。 | Azure Linux 在已啟用 GPU 的 VM 上不支援此通道。
只要仍支援 kubernetes 次要版本,SecurityPatch 就適用於已淘汰的修補程式版本。 適用於 AKS 的 Flatcar 容器 Linux 和 AKS 上具有 OS Guard 的 Azure Linux 不支援 SecurityPatch。 |
NodeImage |
AKS 每週會使用新修補的 VHD 更新節點,該 VHD 中包含安全性修正和 Bug 修正。 新 VHD 的更新會根據維護時段和激增設定中斷執行。 選擇此選項不會產生額外的 VHD 成本。 如果您使用此通道,依預設會停用 Linux 自動升級。 只要叢集 Kubernetes 次要版本仍在支援中,就會支持節點映射升級。 節點映像經過 AKS 測試,完全管理,並採用安全的部署做法。 |
選擇什麼 - SecurityPatch 通道或 NodeImage 通道?
您在選擇 SecurityPatch 或 NodeImage 通道時,有兩個重要的考慮因素。
| 房產 | NodeImage 通道 | SecurityPatch 頻道 | 推薦頻道 |
|---|---|---|---|
Speed of shipping |
新 VHD 的一般建置、測試、發佈和推行時間表大約需要兩週,以確保符合安全部署的做法。 雖然在 CVE 的情況下,加速推出可能會依個別案例發生。 您可以透過發行追蹤器 (部分機器翻譯) 監視新 VHD 在某個區域推出的確切時機。 | 即使使用安全部署做法,SecurityPatch 版本也比 NodeImage更快。 SecurityPatch 在 Linux 環境中具有「即時修補」的優點,其中修補會導致選擇性的「重新映像」,而且不會在每次套用修補程式時重新映像。 如果發生重新製作映像,則由維護時段控制。 |
SecurityPatch |
Bugfixes |
除了安全性修正程式之外,還帶有 Bug 修正程式。 | 嚴格地只帶有安全性修正程式。 | NodeImage |
在新叢集上設定節點OS自動升級通道
- 使用
az aks create命令搭配--node-os-upgrade-channel參數,在新叢集上設定節點OS自動升級通道。 下列範例會將節點 OS 自動升級通道設定為SecurityPatch。
export RANDOM_SUFFIX=$(openssl rand -hex 3)
export RESOURCE_GROUP="myResourceGroup$RANDOM_SUFFIX"
export AKS_CLUSTER="myAKSCluster$RANDOM_SUFFIX"
az aks create \
--resource-group $RESOURCE_GROUP \
--name $AKS_CLUSTER \
--node-os-upgrade-channel SecurityPatch \
--generate-ssh-keys
在現有的叢集上設定節點OS自動升級通道
- 使用
az aks update命令搭配--node-os-upgrade-channel參數,在現有叢集上設定節點 os 自動升級通道。 下列範例會將節點 OS 自動升級通道設定為SecurityPatch。
az aks update --resource-group $RESOURCE_GROUP --name $AKS_CLUSTER --node-os-upgrade-channel SecurityPatch
結果:
{
"autoUpgradeProfile": {
"nodeOsUpgradeChannel": "SecurityPatch"
}
}
更新所有權和排程
預設頻率表示未套用計劃性維護時段。
| 通路 | 更新所有權 | 預設頻率 |
|---|---|---|
Unmanaged |
OS 驅動的安全性更新。 AKS 無法控制這些更新。 | 對於 Ubuntu 和 Azure Linux,在每晚凌晨 6 點 UTC 左右。 對於 Windows,則為每月一次。 |
SecurityPatch |
AKS 測試、完全受控,並套用安全部署做法。 如需詳細資訊,請參閱 Azure 上 Canonical 工作負載的加強式安全性和復原能力 (英文)。 | AKS 所判斷的步調通常比每週更快。 |
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 $RESOURCE_GROUP --name $AKS_CLUSTER --query "autoUpgradeProfile"
結果:
{
"nodeOsUpgradeChannel": "SecurityPatch"
}
如何監視節點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 通道需要連線到 snapshot.ubuntu.com 端點?
使用 SecurityPatch 通道時,Linux 叢集節點必須從 ubuntu-snapshots-on-azure-ensuring-predictability-and-consistency-in-cloud-deployments (英文) 中所述的 ubuntu 快照集服務下載必要的安全性修補程式和更新。
如何知道節點上是否已套用 SecurityPatch 或 NodeImage 升級?
kubectl get nodes --show-labels執行 命令以列出叢集中的節點及其標籤。
在傳回的標籤中,您應該會看到類似下列輸出的行:
kubernetes.azure.com/node-image-version=AKSUbuntu-2204gen2containerd-202410.27.0-2024.12.01
在這裡,節點映像的基礎映像版本為 AKSUbuntu-2204gen2containerd-202410.27.0。 如果適用,通常會遵循安全性修補程式版本。 在上述範例中,為 2024.12.01。
在節點標籤檢視下,Azure 入口網站中也會查閱相同的詳細資料:
後續步驟
如需升級最佳做法和其他考量的詳細討論,請參閱 AKS 修補檔和升級指導。