在本文中,您將學習如何將現有的 AKS 節點池遷移到 Azure Container Linux (ACL) for AKS。 您可以使用下列其中一種方法移轉現有節點:
- 原地作業系統 SKU 遷移:將現有節點池的作業系統 SKU 改為 ACL,這樣會自動重映像節點。
- 移除現有節點池並新增新的 ACL 節點池:建立新的 ACL 節點池,移動你的工作負載,並移除舊的節點池。
Important
如果你在 AKS 上使用 Azure 容器 Linux (ACL),請務必檢視以下考量與限制:
- ACL 通常從 AKS v1.34 開始提供。
- ACL 需要啟用 Trusted Launch,並搭配安全開機和 vTPM。 無法取得非可信啟動變體。
- 在 Arm64 上,ACL 若要啟用 Trusted Launch 相容性,必須使用 Cobalt 型(v6)SKU。
-
NodeImage並且None是唯一支援的 作業系統升級通道。Unmanaged且SecurityPatch因目錄不可變/usr而與 ACL 不相容。 - 不支援工件串流。
- 不支援 Pod 沙箱。
- 不支援機密虛擬機器 (CVM)。
- 第一代虛擬機不被支援。
原地作業系統 SKU 遷移限制
除了一般的 ACL 限制外,以下事項特別適用於原地作業系統 SKU 遷移:
- OS SKU 移轉功能無法透過 PowerShell 或 Azure 入口網站取得。
- OS SKU 移轉功能不支援重新命名現有的節點集區。
- 啟用
UseGPUDedicatedVHD的節點池無法執行作業系統 SKU 遷移。 - Windows 節點池無法遷移到 ACL。
先決條件
- 一個已有的 AKS 叢集,至少有一個 Linux 節點池。
- Azure CLI 版本 2.86.0 或更後版本。 執行
az --version以尋找版本。 如果您需要安裝或升級,請參閱 安裝 Azure CLI。 - 我們建議您在遷移生產叢集前,先在開發或暫存環境中 部署 ACL 叢集 ,確認您的工作負載是否能在 ACL 上順利運行。
- 在生產叢集上使用該程序之前,在測試/開發中確保移轉功能對您可運作。
- 確保您的 Pod 具有足夠的 Pod 中斷預算 (PDB),讓 AKS 可以在移轉期間能在 VM 之間移動 Pod。
新增 ACL 節點池並移除現有的節點池
用指令
az aks nodepool add新增一個新的 ACL 節點池。 使用--mode System新池作為系統代理池,讓你在下一步刪除原本的節點池。az aks nodepool add \ --resource-group <resource-group> \ --cluster-name <cluster-name> \ --name <new-node-pool-name> \ --os-sku AzureContainerLinux \ --mode System \ --node-count 3輸出範例:
{ "id": "/subscriptions/xxxxx/resourceGroups/myResourceGroup/providers/Microsoft.ContainerService/managedClusters/myAKSCluster/nodePools/myNewNodePool", "name": "myNewNodePool", "osSku": "AzureContainerLinux", "provisioningState": "Succeeded" }用這個
az aks nodepool delete指令移除你現有的節點池。az aks nodepool delete \ --resource-group <resource-group> \ --cluster-name <cluster-name> \ --name <existing-node-pool-name>
就地 OS SKU 移轉
你可以透過更改節點池的作業系統 SKU 來將現有的 Linux 節點池遷移到 ACL,這樣叢集就會經過標準的節點映像升級流程。 此方法不需要建立新的節點池;取而代之的是,你現有的節點池會自動重新映像。
執行就地 OS SKU 移轉
Important
ACL 需要啟用 Trusted Launch。 遷移到 --enable-secure-boot OS SKU 時必須包含 --enable-vtpm 和 AzureContainerLinux 。 你的節點池虛擬機(VM)大小也必須支援可信啟動。 如果你目前的虛擬機容量不支援,你需要在遷移前重新調整或重建支援的虛擬機容量的節點池。
用指令 az aks nodepool update 將你的節點池的作業系統 SKU 遷移到 ACL。 此指令會觸發節點池的重映像檔,並將作業系統 SKU 更新為 AzureContainerLinux。 OS SKU 變更會觸發立即升級作業,這需要幾分鐘的時間才能完成。
az aks nodepool update \
--resource-group <resource-group> \
--cluster-name <cluster-name> \
--name <existing-node-pool-name> \
--os-sku AzureContainerLinux \
--enable-secure-boot \
--enable-vtpm
輸出範例:
{
"id": "/subscriptions/xxxxx/resourceGroups/myResourceGroup/providers/Microsoft.ContainerService/managedClusters/myAKSCluster/nodePools/nodepool1",
"name": "nodepool1",
"osSku": "AzureContainerLinux",
"provisioningState": "Succeeded"
}
Note
如果您在 OS SKU 移轉期間遇到問題,您可以復原為先前的 OS SKU。
驗證 OS SKU 移轉
Tip
我們建議在遷移生產叢集前,先監控服務健康狀況幾週。
一旦測試叢集的遷移完成,我們建議先監控叢集和工作負載幾週,以確保一切正常運作,再進行生產叢集的遷移。 請使用以下指令驗證遷移並監控您的叢集:
請用指令
kubectl get nodes -o wide確認新節點是否執行 ACL。 輸出應該會顯示 ACL OS 映像檔。kubectl get nodes -o wide用指令
kubectl get pods -o wide -A確認你所有的 pod 和 daemonset 都在新的節點池上運行。kubectl get pods -o wide -A用指令
kubectl get nodes --show-labels確認升級後的節點池中所有節點標籤都是你預期的。kubectl get nodes --show-labels請用指令
az aks nodepool list檢查節點映像檔版本。az aks nodepool list \ --resource-group <resource-group> \ --cluster-name <cluster-name> \ --query '[].{name: name, osSku: osSku, nodeImageVersion: nodeImageVersion}'輸出範例:
[ { "name": "myNodePool", "nodeImageVersion": "AKSAzureContainerLinux-202606.01.0", "osSku": "AzureContainerLinux" } ]
復原為先前的 OS SKU
如果您在 OS SKU 移轉期間遇到問題,您可以復原為先前的 OS SKU。 要做到這點,請將作業系統 SKU 欄位改回先前的值並重新提交部署,這會觸發另一個升級操作,並將節點池映像回先前的作業系統 SKU。 如果你從 ACL 回復到先前的作業系統 SKU,節點集區預設會使用 Trusted Launch(Gen2)映像變體,除非已明確停用 Trusted Launch。
使用 az aks nodepool update 命令復原為先前的 OS SKU。 此範例會從 ACL 回復至 Azure Linux:
az aks nodepool update \
--resource-group <resource-group> \
--cluster-name <cluster-name> \
--name <existing-node-pool-name> \
--os-sku AzureLinux
相關內容
欲了解更多關於 ACL 的資訊,請參見 什麼是 Azure Azure Kubernetes Service (AKS) 的容器 Linux (ACL)?