在本教學課程中,您會在五部分中的第三部分中,使用 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)。
先決條件
- 在上一個教學課程中,您已建立並部署具有 OS Guard 叢集的 Azure Linux。 如果您尚未完成這些步驟,而且想要遵循,請參閱 教學課程 1:使用 Azure Linux 和適用於 AKS 的 OS Guard 建立叢集。
- 您需要最新版的 Azure CLI。 使用指令
az version來尋找版本。 若要升級至最新版本,請使用命令az upgrade。
安裝 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 預覽功能旗標
使用
AzureLinuxOSGuardPreview命令註冊az feature register功能旗標。az feature register --namespace "Microsoft.ContainerService" --name "AzureLinuxOSGuardPreview"狀態需要幾分鐘的時間才會顯示「已註冊」。
使用
az feature show命令驗證註冊狀態。az feature show --namespace "Microsoft.ContainerService" --name "AzureLinuxOSGuardPreview"當狀態顯示為已註冊時,請使用
az provider register命令來重新整理Microsoft.ContainerService資源提供者的註冊。az provider register --namespace "Microsoft.ContainerService"
使用 OS Guard 節點集區新增 Azure Linux,並移除現有的節點集區
使用命令
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" }使用
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。 在下一個教學課程中,您會了解如何啟用遙測來監視叢集。