當你在 Azure Kubernetes Service (AKS) 上升級執行中的 Windows 工作負載作業系統版本時,請使用以下其中一種遷移方法:
- 原地遷移:更新現有節點池的作業系統 SKU,從 Windows Server 2022 遷移至 Windows Server 2025。
- 手動遷移:建立一個包含你想要的 Windows Server 作業系統版本的新節點池,將工作負載移到新的節點池,然後刪除舊的節點池。
發行新的 Windows Server OS 版本時,AKS 會承諾支援它。 建議您升級至最新版本,以利用修正、改善和新功能。 AKS 從 Windows Server 2022 開始,為每個 Windows Server 版本提供五年的支援生命週期。 在此期間,AKS 會發行新版本,支援較新版本的 Windows Server OS 供您升級。 五年生命週期結束之後,您必須將工作負載移轉至較新的支援版本,以確保相容性、安全性更新,以及 AKS 的持續支援。
這很重要
自 2028 年 6 月 30 日起,Azure Kubernetes Service (AKS) 不再支援 Windows Server 2022 節點池。 Windows Server 2022 在 Kubernetes 1.37 及以上版本中不支援。 自 2029 年 6 月 30 日起,AKS 將移除所有現有的 Windows Server 2022 節點映像,意味著擴展操作將失敗。 欲了解更多退休資訊,請參閱 退休 GitHub 問題 及 Azure 更新退休公告。 想隨時掌握公告與更新,請參考 AKS 發布說明。
以下限制適用於 Windows Server 作業系統版本遷移:
- 僅支援使用
aks-previewAzure CLI 擴充功能 22.0.0b6 或更新版本,將節點集區從 Windows Server 2022 更新遷移至 Windows Server 2025。 對於所有其他 Windows Server 作業系統版本遷移,請建立一個新的節點池。 - 不同的 Windows Server 版本無法共存於 AKS 上的相同節點集區上。 如果你建立新的節點池來承載新作業系統版本,務必確保你將先前節點池的權限和存取權與新池匹配。
- Windows Server 2025 自 Kubernetes 1.32.0 版本起支援。
Prerequisites
- 將 Dockerfile 上的
FROM陳述式更新為新的 OS 版本。 - 檢查您的應用程式,並確認容器應用程式可在新的 OS 版本上運作。
- 將 AKS 上已驗證的容器應用程式部署到開發或測試環境。
- 記下要在本文中使用的新映像名稱或標籤。
- 若要從 Windows Server 2022 原地遷移到 Windows Server 2025,請安裝或更新
aks-previewAzure CLI 擴充功能至 22.0.0b6 或更新版本。
附註
了解如何建置適用於 Windows 工作負載的 Dockerfile,請參閱 Windows 上的 Dockerfile 和最佳化 Windows Dockerfile。
這很重要
AKS 預覽功能以自助方式提供,並採選擇加入制。 預覽版本係依「現狀」及「可用情況」提供,且不適用於服務等級協定與有限保固。 客戶支援部門會盡最大努力,部分支援 AKS 預覽。 因此,這些功能不適合實際執行用途。 如需詳細資訊,請參閱下列支援文章:
安裝 aks-preview Azure CLI 擴充功能
- 若要安裝 aks-preview 延伸模組,請執行下列命令:
從 Windows Server 2022 原地遷移到 Windows Server 2025
你可以透過指令更新現有節點池az aks nodepool update的作業系統 SKU,將現有的 Windows Server 2022 節點池遷移到 Windows Server 2025。 此遷移路徑使用 aks-preview Azure CLI 擴充功能版本 22.0.0b6 或更新版本。 叢集必須執行 Kubernetes 版本 1.32 到 1.36,且同時支援兩個作業系統版本。
就地移轉考量
在將 Windows Server 2022 節點池遷移到 Windows Server 2025 前,請考慮以下細節:
- Windows Server 2025 預設使用啟用 FIPS 的映像檔。 如果你的 Windows Server 2022 節點池還沒有使用啟用 FIPS 的映像檔,請在執行更新指令時加入
--enable-fips-image。 - 更新命令會觸發現有節點集區的自動重新安裝映像。
- Windows Server 2025 預設使用第二代虛擬機。 遷移時不需要有現有的第二代 Windows Server 2022 節點池。 支援標準的 Windows Server 2022
containerd節點池。 - 若現有虛擬機大小支援第二代,AKS 可在遷移時選擇 Windows Server 2025 第二代映像檔。 這種預設的影像選擇可能會影響某些設定的影像相容性。
下表說明哪些來源組態支援 update 指令的原地遷移。 對於不支援的設定,請改用 手動遷移 。
| 現有配置 | 支援 | Result |
|---|---|---|
標準 Windows Server 2022 containerd 第一代映像檔,僅有第一代虛擬機大小 |
是的 | 遷移至 Windows Server 2025 第一代。 |
標準 Windows Server 2022 containerd 第 1 代映像,搭配支援第 2 代的 VM 大小 |
是的 | 遷移至 Windows Server 2025 第二代。 |
標準 Windows Server 2022 containerd 第 2 代映像檔,搭配支援第 2 代的 VM 大小 |
是的 | 遷移至 Windows Server 2025 第二代。 |
將現有的 Windows Server 2022 節點池更新為 Windows Server 2025
使用
Windows2025命令將節點集區作業系統 SKU 更新為az aks nodepool update。az aks nodepool update \ --resource-group <resource-group-name> \ --cluster-name <cluster-name> \ --name <node-pool-name> \ --os-sku Windows2025 \ --enable-fips-image請使用
Windows2025命令,確認更新後節點集區中的節點採用kubectl describe nodeOS SKU 和 Windows Server 2025 映像。kubectl describe node <node-name>以下簡短範例輸出顯示
Windows2025作業系統 SKU 標籤及 Windows Server 2025 作業系統映像檔:Labels: kubernetes.azure.com/os-sku=Windows2025 kubernetes.io/os=windows ... System Info: OS Image: Windows Server 2025 Datacenter Container Runtime Version: containerd://2.0.4+azure
手動遷移至新節點池
手動遷移則使用新的節點池,而非更新現有的節點池。 對於不支援原地遷移的 Windows Server 作業系統版本遷移,或是你的原始設定不支援原地遷移,請使用手動遷移。 若要手動遷移,請建立一個新的節點池,並使用你想要的 Windows Server 作業系統版本,並將工作負載移到新的節點池。
將新的節點集區新增至現有的叢集
將具有所需作業系統版本的節點集區新增至現有叢集:
- 使用 CLI 將 Windows 節點集區新增至 現有叢集。
- 使用入口網站將 Windows 節點集區新增至 現有的叢集。
- 使用 PowerShell 將 Windows 節點集區新增至 現有的叢集。
- 使用 Terraform 將 Windows 節點集區新增至 現有叢集。
Windows Server 2025 節點集區需要已啟用 FIPS 的映像檔。 當你新增 Windows Server 2025 節點池時,請包含 --enable-fips-image (Azure CLI) 或 -EnableFIPS (Azure PowerShell)。
更新 YAML 檔案
節點選取器是在 Windows 節點上放置 Windows Pod 最常見的建議選項。
藉由新增下列註釋,將節點選取器新增至 YAML 檔案:
nodeSelector: "kubernetes.io/os": windows註釋會尋找任何可用的 Windows 節點,並將 Pod 放在該節點上 (遵循所有其他排程規則)。 升級作業系統版本時,您必須在 Windows 節點和執行最新作業系統版本的節點上強制放置。 若要達成此目的,其中一個選項是使用不同的註解。 更新
<OSSKU>以符合您所需 Windows 作業系統版本的 ossku,例如Windows2025。nodeSelector: "kubernetes.azure.com/os-sku": <OSSKU>更新 YAML 檔案中的
nodeSelector之後,您也需要更新要使用的容器映像。 您可以從上一個步驟取得此資訊,在上一個步驟中您已透過變更 Dockerfile 上的FROM陳述式,建立新版的容器化應用程式。附註
您應該使用最初用於部署應用程式的相同 YAML 檔案。 這可確保除了
nodeSelector和容器映像之外,沒有任何其他組態變更。
將更新後的 YAML 檔案套用至現有的工作負載
使用
kubectl get nodes命令,檢視叢集中的節點。kubectl get nodes -o wide下列範例輸出會顯示叢集上的所有節點,包括您建立的新節點集區和現有的節點集區:
NAME STATUS ROLES AGE VERSION INTERNAL-IP EXTERNAL-IP OS-IMAGE KERNEL-VERSION CONTAINER-RUNTIME aks-agentpool-18877473-vmss000000 Ready agent 5h40m v1.33.12 10.240.0.4 <none> Ubuntu 22.04.5 LTS 5.15.0-1116-azure containerd://1.7.33-1 akspoolws000000 Ready agent 3h15m v1.33.12 10.240.0.208 <none> Windows Server 2022 Datacenter 10.0.20348.825 containerd://1.6.6+azure akspoolws000001 Ready agent 3h17m v1.33.12 10.240.0.239 <none> Windows Server 2022 Datacenter 10.0.20348.825 containerd://1.6.6+azure akspoolws000002 Ready agent 3h17m v1.33.12 10.240.1.14 <none> Windows Server 2022 Datacenter 10.0.20348.825 containerd://1.6.6+azure akswspool000000 Ready agent 5h37m v1.33.12 10.240.0.115 <none> Windows Server 2025 Datacenter 10.0.26100.32995 containerd://2.0.4+azure akswspool000001 Ready agent 5h37m v1.33.12 10.240.0.146 <none> Windows Server 2025 Datacenter 10.0.26100.32995 containerd://2.0.4+azure akswspool000002 Ready agent 5h37m v1.33.12 10.240.0.177 <none> Windows Server 2025 Datacenter 10.0.26100.32995 containerd://2.0.4+azure使用
kubectl apply命令將更新的 YAML 檔案套用至現有的工作負載,並指定 YAML 檔案名稱。kubectl apply -f <filename>下列範例輸出顯示了部署的狀態為 [已設定]:
deployment.apps/sample configured service/sample unchanged此時,AKS 會開始終止現有的 Pod,並將新的 Pod 部署至具有
nodeSelector註解的節點。使用
kubectl get pods命令檢查部署的狀態。kubectl get pods -o wide下列範例輸出顯示
default命名空間中的 Pod:NAME READY STATUS RESTARTS AGE IP NODE NOMINATED NODE READINESS GATES sample-7794bfcc4c-k62cq 1/1 Running 0 2m49s 10.240.0.238 akspoolws000000 <none> <none> sample-7794bfcc4c-rswq9 1/1 Running 0 2m49s 10.240.1.10 akspoolws000001 <none> <none> sample-7794bfcc4c-sh78c 1/1 Running 0 2m49s 10.240.0.228 akspoolws000000 <none> <none>
更新安全性與認證設定
如果使用群組受管理的服務帳戶 (GMSA),您必須為新節點集區更新受控識別設定。 gMSA 會使用秘密 (使用者帳戶和密碼),讓執行 Windows Pod 的節點可以針對 Microsoft Entra ID 驗證容器。 若要在 Azure Key Vault 上存取該秘密,節點會使用受控識別來允許節點存取資源。 由於受控識別是針對每個節點集區進行設定,而且 Pod 現在位於新的節點集區上,因此您必須更新該設定。 如需詳細資訊,請參閱為 Azure Kubernetes Service (AKS) 叢集上的 Windows 伺服器節點,啟用群組受管理的服務帳戶 (GMSA)。
相同原則適用於存取其他 Azure 資源時,用於任何其他 Pod 或節點集區的受控識別。 您必須更新受控識別提供的任何存取權,以反映新的節點集區。 若要檢視更新和登入活動,請參閱如何檢視受控識別活動。
後續步驟
在本文中,您已了解如何升級 AKS 上 Windows 工作負載的 OS 版本。 若要深入了解 AKS 上的 Windows 工作負載,請參閱在 Azure Kubernetes Service (AKS) 上部署 Windows 容器應用程式。