停用 Azure 本機上的 Windows nodepool 功能
適用於:Azure 本機版本 23H2
當您安裝 Azure 本機時,會自動下載三個虛擬硬碟 (VHD) - Azure Linux、Windows Server 2019 和 Windows Server 2022 。 需要 VHD 才能在 Azure 本機部署 AKS,因為它們可作為 AKS 叢集內 Kubernetes 節點的基底作業系統映像。 針對混合操作系統環境(Windows 和 Linux 節點),需要 Windows Server 2019 或 Windows Server 2022 VHD 才能布建 Windows Server 2019 或 2022 nodepool。 Linux nodepool 會使用針對執行 Kubernetes 優化的 Azure Linux VHD。 不過,在只使用 Linux 容器的環境中,不需要 Windows VHD。 您可以停用 Windows nodepool 功能,以避免下載並儲存此大型檔案,以節省頻寬和儲存空間。
本操作說明文章將逐步引導您瞭解如何在 Azure 本機上停用 Azure Kubernetes Service (AKS) 的 Windows nodepool 功能。 停用此功能可防止自動下載 Windows 虛擬硬碟 (VHD),其大小約為 20 GB,且需要建立以 Windows 為基礎的節點集區。 如此一來,具有有限因特網頻寬的企業可以避免不必要的下載,特別是當其工作負載專門使用Linux容器時。 這項功能有助於優化頻寬使用量,並簡化不需要 Windows 節點之環境的資源管理。
開始之前
開始之前,請先確認您已符合以下必要條件:
- 已部署 Azure 本機。 本文僅適用於您已部署 Azure 本機版本 2411 時。 部署 Azure 本機版本 2411 之前,您無法執行本文中的命令。 我們目前不支援在初始 Azure 本機版本 2411 部署之前進行這項變更的功能。
- 更新 Azure 本機設定的 Azure RBAC 許可權。 請確定您具有下列角色。 如需詳細資訊,請參閱 部署的必要許可權:
- Azure 本機系統管理員
- 讀取者
- 自訂位置。 自訂位置的名稱。 自定義位置是在 Azure 本機部署期間設定的。 如果您位於 Azure 入口網站,請移至 Azure 本機系統資源的 [概觀>伺服器] 頁面。 您應該會看到叢集的自定義位置。
- Azure 資源群組。 部署 Azure 本機的 Azure 資源群組。
建議選項:從 Azure CloudShell 會話停用 Windows nodepool
為了協助簡化設定,下列步驟會定義本文所參考的環境變數。 請記得將顯示的值取代為您自己的值。
設定環境變數中的自訂位置和資源群組值:
$customlocationName = <The custom location name for Azure Local>
$resourceGroup = <The Azure resource group in which Azure Local is deployed>
接下來,執行下列命令以取得 clusterName
參數。 此參數是您部署在 Azure 本機上的 Arc 資源網橋名稱:
az customlocation show -n $customlocationName -g $resourceGroup --query hostResourceId
預期輸出:
/subscriptions/f3dwer-00000-4383-2345-00000/resourceGroups/SanJose/providers/Microsoft.ResourceConnector/appliances/sanjose-arcbridge
在此輸出中, sanjose-arcbridge
是您在 Azure 本機叢集上部署的 Arc 資源網橋名稱。 此名稱與部署不同。
$clusterName = <Name of Arc resource bridge deployed on the Azure Local cluster>
接下來,取得您部署至自定義位置的 AKS Arc 延伸模組名稱。 若要取得此名稱,請執行下列命令來列出安裝在自定義位置上的延伸模組:
az customlocation show -n $customlocationID -g $resourceGroup --query clusterExtensionIds -o tsv
預期輸出:
/subscriptions/fbaf508b-cb61-4383-9cda-a42bfa0c7bc9/resourceGroups/SanJose/providers/Microsoft.ResourceConnector/appliances/sanjose-arcbridge/providers/Microsoft.KubernetesConfiguration/extensions/hybridaksextension
/subscriptions/fbaf508b-cb61-4383-9cda-a42bfa0c7bc9/resourceGroups/SanJose/providers/Microsoft.ResourceConnector/appliances/sanjose-arcbridge/providers/Microsoft.KubernetesConfiguration/extensions/vmss-hci
您的自定義位置上應該已安裝兩個延伸模組:AKS Arc 和Arc VM管理。 將 AKS 的延伸模組名稱複製到環境變數中。 在範例輸出中,延伸模組名稱為 hybridaksextension
。 它可能與您所看到的不同:
$extensionName = <Name of AKS Arc extension you deployed on the custom location>
取得擴充功能名稱之後,請為下列參數建立變數,然後停用 Windows nodepool 功能:
$extensionVersion = "$(az k8s-extension show -n $extensionName -g $resourceGroup -c $clusterName --cluster-type appliances --query version -o tsv)"
$releaseTrain = "$(az k8s-extension show -n $extensionName -g $resourceGroup -c $clusterName --cluster-type appliances --query releaseTrain -o tsv)"
az k8s-extension update --resource-group $resourceGroup --cluster-name $clusterName --cluster-type appliances --name $extensionName --version $extensionVersion --release-train $releaseTrain --config disable-windows-nodepool=true --yes
替代選項:透過遠端桌面連線到 Azure 本機實體節點之後,停用 Windows nodepool
如果基於某些原因,您無法使用 Azure CloudShell 或連線至 Azure 的電腦來停用 Windows nodepool,您可以在使用遠端桌面連線到任一個 Azure 本機實體節點之後停用 Windows nodepool。 您必須先登入 Azure:
az k8s-extension update --resource-group $resourceGroup --cluster-name $clusterName --cluster-type appliances --name $extensionName --version $extensionVersion --release-train $releaseTrain --config disable-windows-nodepool=true --yes
驗證 Windows nodepool 功能是否已停用
您可以執行 az k8s-extension show
檢查組態設定是否已套用,如下所示:
az k8s-extension show --name $extensionName --resource-group $resourceGroup --cluster-name $clusterName --cluster-type appliances --query configurationSettings
預期輸出:
...
"disable-windows-nodepool": "true",
...
接下來,執行下列命令來檢查是否已停用 Windows nodepools:
az aksarc get-versions --resource-group $resourceGroup --custom-location $customlocationName
的 osType=Windows
輸出應該會指出「Windows nodepool 功能已停用」,而且 ready
每個 Kubernetes 版本選項的狀態應該是 false
:
...
"1.27.7": {
"readiness": [
{
"errorMessage": null,
"osSku": "CBLMariner",
"osType": "Linux",
"ready": true
},
{
"errorMessage": "Windows nodepool feature is disabled",
"osSku": "Windows2019",
"osType": "Windows",
"ready": false
},
{
"errorMessage": "Windows nodepool feature is disabled",
"osSku": "Windows2022",
"osType": "Windows",
"ready": false
}
],
...
常見問題集
如果我嘗試停用 Windows nodepool 和 Windows 節點集區,會發生什麼情況?Azure 本機部署上至少 1 個 AKS 叢集上存在?
您必須先手動刪除 Windows nodepool,才能停用此功能。 如果有現有的 Windows 節點集區,您無法停用此功能。
如果我停用 Windows 節點集區,下載的 Windows VHD 會發生什麼事?
如果 Windows nodepools 功能已停用,則會自動刪除先前下載的 Windows VHD。 您可以確認是否已從 Azure 本機記憶體路徑中移除 Windows VHD。 刪除可能需要一些時間。 檢查前等候 30 分鐘。 您必須檢查所有記憶體路徑,因為 Windows VHD 是以迴圈配置資源的方式指派給記憶體路徑,根據可用的儲存容量。