教學課程:將節點移轉至 Azure Linux
在本教學課程五個部分的第三部分,您會將現有的節點移轉至 Azure Linux。 您可以使用下列其中一種方法,將現有的節點移轉至 Azure Linux:
- 移除現有的節點集區,並在新增 Azure Linux 節點集區。
- 就地 OS SKU 移轉。
如果您沒有要移轉至 Azure Linux 的任何現有節點,請跳至下一個教學課程。 在稍後的教學課程中,您會了解如何在叢集中啟用遙測和監視,以及升級 Azure Linux 節點。
必要條件
在先前的教學課程中,您已為 AKS 叢集建立並部署 Azure Linux 容器主機叢集。 若要完成本教學課程,您必須將 Azure Linux 節點集區新增至現有的叢集。 如果您尚未完成此步驟,而且想要跟著做,請從教學課程 2:將 Azure Linux 節點集區新增至現有的 AKS 叢集開始。
注意
新增新的 Azure Linux 節點集區時,至少必須有一個新增為
--mode System
。 否則,AKS 將不會允許您刪除現有的節點集區。您需要最新版的 Azure CLI。 執行
az --version
以尋找版本。 如果您需要安裝或升級,請參閱安裝 Azure CLI。
新增 Azure Linux 節點集區並移除現有的節點集區
使用
az aks nodepool add
命令新增新的 Azure Linux 節點集區。 此命令會使用--mode System
旗標將新的節點集區新增至叢集,使其成為系統節點集區。 Azure Linux 叢集需要系統節點集區。az aks nodepool add --resource-group <resource-group-name> --cluster-name <cluster-name> --name <node-pool-name> --mode System --os-sku AzureLinux
使用
az aks nodepool delete
命令移除現有的節點。az aks nodepool delete --resource-group <resource-group-name> --cluster-name <cluster-name> --name <node-pool-name>
就地 OS SKU 移轉
您現在可以將現有的 Ubuntu 節點集區移轉至 Azure Linux,方法是變更節點集區的 OS SKU,這會透過標準節點映像升級程序來復原叢集。 此新功能不需要建立新的節點集區。
限制
有數個設定可以封鎖 OS SKU 移轉要求。 若要確保移轉成功,請檢閱下列指導方針和限制:
- OS SKU 移轉功能無法透過 PowerShell 或 Azure 入口網站取得。
- OS SKU 移轉功能無法重新命名現有的節點集區。
- Ubuntu 和 Azure Linux 是唯一支援的 Linux OS SKU 移轉目標。
- 已啟用
UseGPUDedicatedVHD
的 Ubuntu OS SKU 無法執行 OS SKU 移轉。 - 已啟用 CVM 20.04 的 Ubuntu OS SKU 無法執行 OS SKU 移轉。
- 已啟用 Kata 的節點集區無法執行 OS SKU 移轉。
- 不支援 Windows OS SKU 移轉。
- 支援從 Mariner 移轉至 Azure Linux 的 OS SKU,但不支持復原至 Mariner。
必要條件
- 具有至少一個 Ubuntu 節點集區的現有 AKS 叢集。
- 建議您先確保工作負載在 Azure Linux 容器主機上設定並成功執行,然後再嘗試使用 OS SKU 移轉功能,方法是在開發/生產環境中部署 Azure Linux 叢集,並驗證您的服務維持良好狀態。
- 在生產叢集上使用該程序之前,在測試/開發中確保移轉功能對您可運作。
- 確保 Pod 有足夠的 Pod 中斷預算,可讓 AKS 於升級期間在 VM 之間移動 Pod。
- 您需要 Azure CLI 2.61.0 (部分機器翻譯) 版或更高版本。 執行
az --version
以尋找版本。 如果您需要安裝或升級,請參閱安裝 Azure CLI。 - 如果您使用 Terraform,則須具備 v3.111.0 (英文) 或更新版本的 AzureRM Terraform 模組。
移轉 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-name> --cluster-name <cluster-name> --name <node-pool-name> --os-sku AzureLinux
注意
如果您在 OS SKU 移轉期間遇到問題,您可以復原為先前的 OS SKU。
驗證 OS SKU 移轉
在測試叢集上完成移轉之後,您應該驗證下列項目以確保移轉成功:
- 如果您的移轉目標是 Azure Linux,請執行
kubectl get nodes -o wide
命令。 輸出應該會顯示CBL-Mariner/Linux
為您的 OS 映像,以及在核心版本尾端為.cm2
。 - 執行
kubectl get pods -o wide -A
命令以驗證所有 Pod 和精靈集都執行新的節點集區。 - 執行
kubectl get nodes --show-labels
命令以驗證已升級節點集區中的所有節點標籤都是您所預期。
提示
建議您在移轉生產叢集之前監視服務的健康情況數週。
在生產叢集上執行 OS SKU 移轉
- 更新您現有的範本以設定
OSSKU=AzureLinux
。 在 ARM 範本中,您會在agentPoolProfile
區段中使用"OSSKU: "AzureLinux"
。 在 Bicep 中,您會在agentPoolProfile
區段中使用osSku: "AzureLinux"
。 最後,針對 Terraform,您可在 [default_node_pool
] 區段中使用"os_sku = "AzureLinux"
。 請確定您的apiVersion
已設定為2023-07-01
或更新版本。 - 重新部署叢集的 ARM、Bicep 或 Terraform 範本以套用新的
OSSKU
設定。 在此部署期間,您的叢集的行為就像是進行節點映像升級一樣。 您的叢集容量會激增,然後從新的 OS SKU 將現有的節點逐一重新啟動至最新的 AKS 映像。
復原
如果您在 OS SKU 移轉期間遇到問題,您可以復原為先前的 OS SKU。 若要這樣做,您必須變更範本中的 OS SKU 欄位,然後重新提交部署,這會觸發另一個升級作業,並將節點集區還原至其先前的 OS SKU。
注意
OS SKU 移轉不支持回復至 OS SKU 水手。
使用
az aks nodepool update
命令復原為先前的 OS SKU。 此命令會將節點集區的 OS SKU 從 Azure Linux 更新回 Ubuntu。az aks nodepool update --resource-group myResourceGroup --cluster-name myAKSCluster --name mynodepool --os-sku Ubuntu
下一步
在本教學課程中,您已使用下列其中一種方法,將現有的節點移轉至 Azure Linux:
- 移除現有的節點集區,並在新增 Azure Linux 節點集區。
- 就地 OS SKU 移轉。
在下一個教學課程中,您會了解如何啟用遙測來監視叢集。