教學課程:將節點移轉至 Azure Linux

這很重要

自 2026 年 12 月 10 日起,Azure Kubernetes Service (AKS) 不再支援 Azure Linux 搭配 OS Guard for AKS(預覽版)。 此時,AKS 將不再生產新的 Azure Linux 搭配 OS Guard 節點映像檔,也不再提供安全修補程式,且你也無法再用 Azure Linux 搭配 OS Guard 建立新的節點池。 2027 年 3 月 10 日,AKS 移除所有現有的 Azure Linux 與 OS Guard 節點映像,導致擴展與修復(重映像化與重新部署)操作失敗。 為避免中斷,請遷移至 Azure Container Linux(ACL)。 欲了解更多關於退休的資訊,請參閱退休 GitHub 議題及 Azure 更新退休公告。 想隨時掌握公告與更新,請參考 AKS 發布說明。

在這個教學中,五個部分中的第三部分,你會將現有節點移轉至 Azure Linux。 您可以使用下列其中一種方法,將現有的節點移轉至 Azure Linux:

  • 移除現有的節點集區,並在新增 Azure Linux 節點集區。
  • 執行原地作業系統(OS)SKU 遷移。

本教學課程中的命令會使用在 教學 1:使用適用於 AKS 的 Azure Linux 容器主機建立叢集 中設定的環境變數。

如果您沒有要移轉至 Azure Linux 的任何現有節點,請跳至下一個教學課程。 在稍後的教學課程中,您會了解如何在叢集中啟用遙測和監視,以及升級 Azure Linux 節點。

先決條件

Note

新增新的 Azure Linux 節點集區時,至少必須有一個新增為 --mode System。 否則,AKS 將不會允許您刪除現有的節點集區。

  • 您需要最新版的 Azure CLI。 執行 az --version 以尋找版本。 如果您需要安裝或升級,請參閱 安裝 Azure CLI。

設定環境變數

設定以下環境變數,為每個部署建立獨特的資源名稱。 用你選擇的名字取代佔位符 <your-node-pool-name> 。 你可以選擇性地加上隨機後綴以確保獨特性。 節點集區的名稱必須以小寫字母開頭,而且只能包含英數字元。 針對 Linux 節點集區,長度必須介於 1 到 12 個字元之間。

# Set random suffix for uniqueness
export RANDOM_SUFFIX=$(openssl rand -hex 3)

# Set node pool name
export NODE_POOL_NAME="<your-node-pool-name>$RANDOM_SUFFIX"

新增 Azure Linux 節點集區並移除現有的節點集區

  1. 使用 az aks nodepool add 命令新增新的 Azure Linux 節點集區。 此命令會使用 --mode System 旗標將新的節點集區新增至叢集,使其成為系統節點集區。 Azure Linux 叢集需要系統節點集區。

    az aks nodepool add --resource-group $RESOURCE_GROUP --cluster-name $CLUSTER_NAME --name $NODE_POOL_NAME --mode System --os-sku AzureLinux
    

    輸出範例:

    {
      "id": "/subscriptions/xxxxx/resourceGroups/myResourceGroupxxx/providers/Microsoft.ContainerService/managedClusters/myAKSCluster/nodePools/systempool",
      "name": "systempool",
      "provisioningState": "Succeeded"
    }
    
  2. 使用 az aks nodepool delete 命令移除現有的節點。

就地 OS SKU 移轉

你可以透過更改節點池的作業系統 SKU 來遷移現有的 Ubuntu 節點池到 Azure Linux,這樣叢集就會經過標準的節點映像升級流程。 此新功能不需要建立新的節點集區。

原地作業系統 SKU 遷移限制

有數個設定可以封鎖 OS SKU 移轉要求。 若要確保移轉成功,請檢閱下列指導方針和限制:

  • OS SKU 移轉功能無法透過 PowerShell 或 Azure 入口網站取得。
  • OS SKU 移轉功能無法重新命名現有的節點集區。
  • Ubuntu、Azure Linux 和 Azure Linux with OS Guard 是唯一支援的 Linux OS SKU 移轉目標。
  • 預設情況下,具有 OS Guard 的 Azure Linux 需要信任啟動。 你需要啟用 Trusted Launch,才能遷移到 Azure Linux 並搭配 OS Guard。 由於你無法在現有節點池啟用 Trusted Launch,你需要建立一個啟用 Trusted Launch 的新節點池,並將你的工作負載遷移到該節點池。
  • 使用僅限第 1 代虛擬機器 (VM) 大小的客戶,無法移轉到 Azure Linux with OS Guard,因為沒有受支援的第 1 代映像。 在這種情況下,你需要建立一個支援第二代虛擬機容量的新節點池。
  • 已啟用 UseGPUDedicatedVHD 的 Ubuntu OS SKU 無法執行 OS SKU 移轉。
  • 已啟用 CVM 20.04 的 Ubuntu OS SKU 無法執行 OS SKU 移轉。
  • 已啟用 Kata 的節點集區無法執行 OS SKU 移轉。
  • 不支援 Windows OS SKU 移轉。

原地作業系統 SKU 遷移前置條件

  • 具有至少一個 Ubuntu 節點集區的現有 AKS 叢集。
  • 建議您先確保工作負載在 Azure Linux 容器主機上設定並成功執行,然後再嘗試使用 OS SKU 移轉功能,方法是在開發/生產環境中部署 Azure Linux 叢集,並驗證您的服務維持良好狀態。
  • 在生產叢集上使用該程序之前,在測試/開發中確保移轉功能對您可運作。
  • 確保您的 Pod 具有足夠的 Pod 中斷預算 (PDB),讓 AKS 可以在升級期間於 VM 之間移動 Pod。
  • 您需要 Azure CLI 2.61.0 (部分機器翻譯) 版或更高版本。 執行 az --version 以尋找版本。 如果您需要安裝或升級,請參閱 安裝 Azure CLI。
  • 如果你用的是 Terraform,必須有 AzureRM Terraform 模組的 v3.111.0 或更高版本。

移轉 Ubuntu 節點集區的 OS SKU

使用 az aks nodepool update 命令將節點集區的 OS SKU 移轉至 Azure Linux。 此命令會將節點集區的 OS SKU 從 Ubuntu 更新為 Azure Linux。 OS SKU 變更會觸發立即升級作業,這需要幾分鐘的時間才能完成。

az aks nodepool update --resource-group $RESOURCE_GROUP --cluster-name $CLUSTER_NAME --name $NODE_POOL_NAME --os-sku AzureLinux

輸出範例:

{
  "id": "/subscriptions/xxxxx/resourceGroups/myResourceGroupxxx/providers/Microsoft.ContainerService/managedClusters/myAKSCluster/nodePools/nodepool1",
  "name": "nodepool1",
  "osSku": "AzureLinux",
  "provisioningState": "Succeeded"
}

Note

如果您在 OS SKU 移轉期間遇到問題,您可以復原為先前的 OS SKU。

驗證 OS SKU 移轉

在測試叢集上完成移轉之後,您應該驗證下列項目以確保移轉成功:

  • 如果您的移轉目標是 Azure Linux,請執行 kubectl get nodes -o wide 命令。 輸出應該會顯示 Microsoft Azure Linux 3.0 為您的 OS 映像,以及在核心版本尾端為 .azl3。
  • 執行 kubectl get pods -o wide -A 命令以驗證所有 Pod 和精靈集都執行新的節點集區。
  • 執行 kubectl get nodes --show-labels 命令以驗證已升級節點集區中的所有節點標籤都是您所預期。

Tip

建議您在移轉生產叢集之前監視服務的健康情況數週。

在生產叢集上執行 OS SKU 移轉

  1. 更新您現有的範本以設定 OSSKU=AzureLinux。 請確定您的 apiVersion 已設定為 2023-07-01 或更新版本。

    • ARM 範本:在本"OSSKU": "AzureLinux"節中使用agentPoolProfile。
    • Bicep:在osSku: "AzureLinux"區段中使用agentPoolProfile。
    • Terraform:在該os_sku = "AzureLinux"區段使用default_node_pool。
  2. 重新部署叢集的 ARM、Bicep 或 Terraform 範本以套用新的 OSSKU 設定。 在此部署期間,您的叢集的行為就像是進行節點映像升級一樣。 您的叢集容量會激增,然後從新的 OS SKU 將現有的節點逐一重新啟動至最新的 AKS 映像。

復原為先前的 OS SKU

如果您在 OS SKU 移轉期間遇到問題,您可以復原為先前的 OS SKU。 若要這樣做,您必須變更範本中的 OS SKU 欄位,然後重新提交部署,這會觸發另一個升級作業,並將節點集區還原至其先前的 OS SKU。

你可以使用 az aks nodepool update 指令還原至先前的作業系統 SKU。 此命令會將節點集區的 OS SKU 從 Azure Linux 更新回 Ubuntu。

後續步驟

在這個教學中,你透過移除現有節點池並新增新的 Azure Linux 節點池,或是執行原地作業系統 SKU 遷移,將現有節點遷移到 Azure Linux。

在下一個教學課程中,您會了解如何啟用遙測來監視叢集。