共用方式為


教學課程:使用 OS Guard 將節點移轉至 Azure Linux (預覽版)

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

  • 移除現有的節點集區,並使用 OS Guard 節點集區新增新的 Azure Linux。
  • 就地 OS SKU 移轉。

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

考慮事項與限制條件

開始之前,請檢閱下列 Azure Linux with OS Guard (預覽) 的考量與限制:

  • 具有 OS Guard 的 Azure Linux 需要 Kubernetes 1.32.0 版或更新版本。
  • 所有 Azure Linux with OS Guard 映像都已啟用聯邦資訊處理標準 (FIPS)可信啟動
  • 在預覽階段中,Azure CLI 和 ARM 範本是唯一支援在 AKS 上部署 Azure Linux with OS Guard 的方法。 不支援 PowerShell 和 Terraform。
  • 在預覽階段中,Azure Linux with OS Guard 不支援 Arm64 映像在 AKS 上進行部署。
  • NodeImage ,並且 None 是 AKS 上具有 OS 防護的 Azure Linux 唯一支援的 OS 升級通道Unmanaged 而且 SecurityPatch 由於不可變的 /usr 目錄,因此與具有 OS Guard 的 Azure Linux 不相容。
  • 不支援工件串流
  • 不支援 Pod 沙箱
  • 不支援機密虛擬機器 (CVM)。
  • 不支援第 1 代虛擬機器 (VM)。

先決條件

安裝 aks-preview Azure CLI 延伸模組

這很重要

AKS 預覽功能可透過自助服務,以加入方式使用。 預覽是「依現況」及「可用時」提供的,並不包括在服務等級協定和有限保固之內。 客戶支援部門會盡最大努力,部分支援 AKS 預覽。 因此,這些功能不適合實際執行用途。 如需詳細資訊,請參閱下列支援文章:

  • 使用 aks-preview 命令安裝az extension add延伸模組。

    az extension add --name aks-preview
    
  • 使用 az extension update 命令,更新為最新版的延伸模組。

    az extension update --name aks-preview
    

註冊 Azure Linux OS Guard 預覽功能旗標

  1. 使用 AzureLinuxOSGuardPreview 命令註冊 az feature register 功能旗標。

    az feature register --namespace "Microsoft.ContainerService" --name "AzureLinuxOSGuardPreview"
    

    狀態需要幾分鐘的時間才會顯示「已註冊」

  2. 使用 az feature show 命令驗證註冊狀態。

    az feature show --namespace "Microsoft.ContainerService" --name "AzureLinuxOSGuardPreview"
    
  3. 當狀態顯示為已註冊時,請使用az provider register命令來重新整理Microsoft.ContainerService資源提供者的註冊。

    az provider register --namespace "Microsoft.ContainerService"
    

使用 OS Guard 節點集區新增 Azure Linux,並移除現有的節點集區

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

    # Declare environment variables with a random suffix for uniqueness
    export RANDOM_SUFFIX=$(openssl rand -hex 3)
    export NODE_POOL_NAME="np$RANDOM_SUFFIX"
    az aks nodepool add --resource-group $RESOURCE_GROUP --cluster-name $CLUSTER_NAME --name $NODE_POOL_NAME --mode System --os-sku AzureLinuxOSGuard --node-osdisk-type Managed --enable-fips-image --enable-secure-boot --enable-vtpm
    

    輸出範例:

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

    az aks nodepool delete --resource-group $RESOURCE_GROUP --cluster-name $CLUSTER_NAME --name $NODE_POOL_NAME 
    

就地 OS SKU 移轉的限制

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

  • OS SKU 移轉功能無法透過 PowerShell 或 Azure 入口網站取得。 使用 Azure Linux 和 OS Guard(預覽版)的 OS SKU 移轉功能時,不能透過 Terraform、PowerShell 或 Azure 入口網站實現。
  • OS SKU 移轉功能不支援重新命名現有的節點集區。
  • Ubuntu、Azure Linux 和 Azure Linux with OS Guard 是唯一支援的 Linux OS SKU 移轉目標。
  • 預設情況下,具有 OS Guard 的 Azure Linux 需要信任啟動。 您必須啟用信任啟動,才能使用 OS Guard 移轉至 Azure Linux。 這可能需要建立新的節點集區。
  • 使用 OS Guard 啟用 Azure Linux 時,需要 FIPS。 如果您目前未使用 FIPS 映像,則可以在節點集區更新命令中包含 --enable-fips
  • 不支援第 1 代虛擬機器 (VM)。
  • 已啟用 UseGPUDedicatedVHD 的 Ubuntu OS SKU 無法執行 OS SKU 移轉。
  • 不支援機密虛擬機器 (CVM)。
  • 不支援 Pod 沙箱
  • 不支援 Windows OS SKU 移轉。
  • 支援將 OS SKU 從 Mariner 移轉至 Azure Linux,但不支援復原至 Mariner。

就地 OS SKU 移轉的先決條件

  • 具有至少一個 Azure Linux 節點集區的現有 AKS 叢集。
  • 建議您在嘗試使用 OS SKU 移轉功能之前,先確定您的工作負載已在具有 OS Guard 容器主機的 Azure Linux 上成功設定並執行,方法是在 dev/prod 中 部署具有 OS Guard 叢集的 Azure Linux ,並確認您的服務是否狀況良好。
  • 在生產叢集上使用該程序之前,在測試/開發中確保移轉功能對您可運作。
  • 確保 Pod 有足夠的 Pod 中斷預算,可讓 AKS 於升級期間在 VM 之間移動 Pod。
  • 您需要 Azure CLI 2.61.0 (部分機器翻譯) 版或更高版本。 使用指令 az version 來尋找版本。 若要升級至最新版本,請使用命令 az upgrade

執行就地 OS SKU 移轉

您可以透過變更節點集區的 OS SKU,將現有的 Ubuntu 或 Azure Linux 節點集區移轉至具有 OS Guard 的 Azure Linux,這將使叢集通過標準節點映像升級流程。 這項新功能不需要建立新的節點集區;相反地,您現有的節點集區會自動重新映像。

使用 OS Guard 將 Azure Linux 容器主機節點集區的 OS SKU 移轉至 Azure Linux

  • 使用命令 az aks nodepool update ,使用 OS Guard 將節點集區的 OS SKU 移轉至 Azure Linux。 此命令會觸發對您的節點集區進行重新安裝映像,將節點集區的 OS SKU 從 Azure Linux 更新為 Azure Linux with OS Guard。 OS SKU 變更會觸發立即升級作業,這需要幾分鐘的時間才能完成。

    az aks nodepool update --resource-group $RESOURCE_GROUP --cluster-name $CLUSTER_NAME --name $NODE_POOL_NAME --os-sku AzureLinuxOSGuard --node-osdisk-type Managed --enable-fips-image --enable-secure-boot --enable-vtpm
    

    輸出範例:

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

備註

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

驗證 OS SKU 移轉

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

  • 如果您的移轉目標是具有 OS Guard 的 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 命令以驗證已升級節點集區中的所有節點標籤都是您所預期。

小提示

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

復原為先前的 OS SKU

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

備註

OS SKU 移轉不支援復原為 OS SKU Mariner。

  • 使用 az aks nodepool update 命令復原為先前的 OS SKU。 此命令會將節點集區的 OS SKU 從 Azure Linux 與 OS Guard 更新回 Azure Linux。

後續步驟

在本教學課程中,您已使用 OS Guard 將現有的節點移轉至 Azure Linux。 在下一個教學課程中,您會了解如何啟用遙測來監視叢集。