教學:將節點遷移至 Azure Container Linux (ACL)

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

  • 移除現有的節點池並新增新的 ACL 節點池。
  • 執行原地作業系統(OS)SKU 遷移。

本教學中的指令使用教學 1 中設定的環境變數:建立帶有 ACL 的叢集以支援 AKS。

如果您沒有任何要移轉的現有節點,請跳至 下一個教學課程。 在後續的教學中,你會學習如何在叢集中啟用遙測與監控,並升級 ACL 節點。

先決條件

  • 在之前的教學中,你建立了並部署了一個 ACL 叢集。 如果你還沒完成這些步驟,想跟著做,請參考 教學一:AKS 用 ACL 建立叢集。
  • Azure 容器 Linux 需要Azure CLI版本 2.86.0 或更高版本。 使用指令 az version 來尋找版本。 若要升級至最新版本,請使用命令 az upgrade 。

Azure Container Linux (ACL) 考慮事項與限制

在開始之前,請先回顧以下關於ACL的考量與限制:

新增 ACL 節點池並移除現有的節點池

  1. 用指令 az aks nodepool add 新增一個新的 ACL 節點池。 使用 --mode System 新池作為系統代理池,讓你在下一步刪除原本的節點池。 以下範例建立一個名為 aclsystem 的節點池,並在叢集中新增三個節點:

    az aks nodepool add \
        --resource-group $RESOURCE_GROUP \
        --cluster-name $CLUSTER_NAME \
        --name aclsystem \
        --mode System \
        --os-sku AzureContainerLinux \
        --node-count 3
    

    輸出範例:

    {
      "id": "/subscriptions/xxxxx/resourceGroups/myACLResourceGroup/providers/Microsoft.ContainerService/managedClusters/myACLCluster/nodePools/aclsystem",
      "name": "aclsystem",
      "osSku": "AzureContainerLinux",
      "provisioningState": "Succeeded"
    }
    
  2. 用這個 az aks nodepool delete 指令移除你現有的節點池。

    az aks nodepool delete \
        --resource-group $RESOURCE_GROUP \
        --cluster-name $CLUSTER_NAME \
        --name <existing-node-pool-name>
    

就地 OS SKU 移轉

就地 OS SKU 移轉的限制

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

  • OS SKU 移轉功能無法透過 PowerShell 或 Azure 入口網站取得。
  • OS SKU 移轉功能不支援重新命名現有的節點集區。
  • Ubuntu、Azure Linux 和 AzureContainerLinux 是唯一支援的 Linux 作業系統 SKU 遷移目標。
  • ACL 需要啟用 Trusted Launch。 若您的節點集區尚未啟用 --enable-secure-boot 和 --enable-vtpm,則在遷移至 AzureContainerLinux OS SKU 時,您必須包含 --enable-secure-boot 和 --enable-vtpm。 你的節點池的虛擬機大小也必須支援可信啟動。 如果你目前的虛擬機容量不支援,你需要在遷移前重新調整或重建支援的虛擬機容量的節點池。
  • 第一代虛擬機不被支援。
  • 已啟用 UseGPUDedicatedVHD 的 Ubuntu OS SKU 無法執行 OS SKU 移轉。
  • 不支援機密虛擬機器 (CVM)。
  • 不支援 Pod 沙箱。
  • 不支援 Windows OS SKU 移轉。

就地 OS SKU 移轉的先決條件

  • 一個已有的 AKS 叢集,至少有一個 Linux 節點池。
  • 我們建議您在遷移生產叢集前,先在開發或暫存環境中 部署 ACL 叢集 ,確認您的工作負載是否能在 ACL 上順利運行。
  • 在生產叢集上使用該程序之前,在測試/開發中確保移轉功能對您可運作。
  • 確保您的 Pod 具有足夠的 Pod 中斷預算 (PDB),讓 AKS 可以在升級期間於 VM 之間移動 Pod。
  • 您需要 Azure CLI 2.61.0 (部分機器翻譯) 版或更高版本。 使用指令 az version 來尋找版本。 若要升級至最新版本,請使用命令 az upgrade 。

使用原地 OS SKU 移轉來移轉至 ACL

你可以透過更改節點池的作業系統 SKU 來將現有的 Ubuntu 或 Azure Linux 節點池遷移到 ACL,這樣叢集就會通過標準的節點映像升級流程。 此方法不需要建立新的節點池;取而代之的是,你現有的節點池會自動重新映像。

Important

ACL 需要啟用 Trusted Launch。 遷移到 --enable-secure-boot OS SKU 時必須包含 --enable-vtpm 和 AzureContainerLinux 。 你的節點池的虛擬機大小也必須支援可信啟動。

用指令 az aks nodepool update 將你的節點池的作業系統 SKU 遷移到 ACL。 這個命令會觸發節點集區的重新安裝映像。 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/myACLResourceGroup/providers/Microsoft.ContainerService/managedClusters/myACLCluster/nodePools/nodepool1",
  "name": "nodepool1",
  "osSku": "AzureContainerLinux",
  "provisioningState": "Succeeded"
}

Note

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

驗證 OS SKU 移轉

當你的測試叢集遷移完成後,請檢查以下事項以確保遷移成功:

  1. 請使用以下指令確認新節點是否執行 ACL:

    kubectl get nodes -o wide
    
  2. 請使用以下指令確認所有 pod 和 daemonset 都在新節點池上運行:

    kubectl get pods -o wide -A
    
  3. 請使用以下指令驗證升級後節點池中所有的節點標籤是否符合您的預期:

    kubectl get nodes --show-labels
    
  4. 請用指令 az aks nodepool list 檢查節點映像檔版本。

    az aks nodepool list \
        --resource-group $RESOURCE_GROUP \
        --cluster-name $CLUSTER_NAME \
        --query '[].{name: name, osSku: osSku, nodeImageVersion: nodeImageVersion}'
    

    輸出範例:

    [
      {
        "name": "nodepool1",
        "nodeImageVersion": "AKSAzureContainerLinux-202606.01.0",
        "osSku": "AzureContainerLinux"
      }
    ]
    

Tip

我們建議在遷移生產叢集前,先監控服務健康狀況幾週。

復原為先前的 OS SKU

如果您在 OS SKU 移轉期間遇到問題,您可以復原為先前的 OS SKU。 要做到這點,請將作業系統 SKU 欄位改回先前的值並重新提交部署,這會觸發另一個升級操作,並將節點池映像回先前的作業系統 SKU。

使用 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。 在下一個教學中,你將學習如何啟用 ACL 叢集的遙測與監控。