共用方式為


針對 Azure Arc VM 管理進行疑難解答

適用於:Azure Stack HCI 版本 23H2

本文提供如何收集記錄,並針對 Azure Stack HCI 叢集中的 Azure Arc 虛擬機 (VM) 問題進行疑難解答的指引。 它也會列出 Azure Arc VM 管理目前存在的限制和已知問題。

收集記錄

您可以收集記錄,以找出 Azure Stack HCI 系統中 Arc VM 的問題並進行疑難解答。 請先使用這些記錄來收集重要資訊,再連絡Microsoft支持人員以取得其他協助。

請確定您有最新的 PowerShell 模組進行記錄收集。 若要更新 PowerShell 模組,請執行下列命令:

#Update the PowerShell module
Install-Module -Name ArcHci -Force -Confirm:$false -SkipPublisherCheck -AcceptLicense

若要收集 Azure Stack HCI 叢集中 Arc VM 的記錄,請執行下列命令:

$csv_path="<input-from-admin>"
$VMIP_1="<input-from-admin>"
az login --use-device-code
Get-ArcHCILogs -workDirectory $csv_path\ResourceBridge -kvaTokenPath $csv_path\ResourceBridge\kvatoken.tok -ip $VMIP_1

其中:

  • $csv_path 是叢集共用磁碟區的完整路徑,可供建立Arc資源網橋。

  • $VMIP_1 是 Arc Resource Bridge VM 的 IP 位址。

  • 選擇性地設定 -logDir 參數,以指定儲存所產生記錄檔之目錄的路徑。 如果您未指定路徑或參數,則記錄預設會儲存在目前的工作目錄中。

針對 Azure Arc VM 進行疑難解答

本節說明與 Azure Arc VM 管理及其建議解決方案相關的錯誤。

嘗試啟用來賓管理時失敗

試著執行 命令以啟用來賓管理時,您會看到下列錯誤:

錯誤Deployment failed. Correlation ID: 5d0c4921-78e0-4493-af16-dffee5cbf9d8. VM Spec validation failed for guest agent provisioning: Invalid managed identity. A system-assigned managed identity must be enabled in parent resource: Invalid Configuration

上述失敗是因為未為此 VM 建立受控識別。 需要系統指派的受控識別才能啟用來賓管理。

解決方法:

請遵循下列步驟來確認未為此 VM 建立受控識別,然後啟用系統指派的受控識別。

  1. 在 Azure 入口網站 中,移至 VM。 流覽至 [ 概觀 ] 頁面。 在 [屬性] 索引標籤的 [設定] 底下[來賓管理] 應該會顯示為 [已停用]。 從右上角選取 [JSON 檢視]。

    如何取得 JSON 檢視的螢幕快照。

  2. 在 參數下 Identity ,應該 type 會顯示為 None

    JSON 檢視的螢幕快照,指出受控識別不存在。

  3. 若要建立受控識別,請透過 RDP 連線到 Azure Stack HCI 伺服器。 執行以下命令:

    az extension add --name connectedmachine
    
  4. 確認連線的機器 CLI 擴充功能已安裝在叢集上。 以下是已成功安裝延伸模組的範例輸出。 connectedmachine表示已安裝 0.7.0 版。

    [v-hostl]: PS C:\Clusterstorage\lnfrastructure_l\ArcHci> az version
    {
    "azure-cli": "2.53.0",
    "azure-cli-core": "2.53.0",
    "azure-cli-telemetry": "1.1.0",
    "extensions": {
        "akshybrid": "0.1.1",
        "arcappliance"^ "1.0.2",
        "connectedk8s": "1.5.4",
        "connectedmachine": "0.7.0",
        "customlocation": "0.1.3",
        "hybridaks": "0.2.4",
        "k8s-extension": "1.4.5",
        "stack-hci-vm": "0.1.8"
        }
    }
    [v-hostl]: PS C:\ClusterStorage\Infrastructure_l\ArcHci>
        ```
    
  5. 執行下列命令,將系統受控識別指派給 VM。

    az connectedmachine update --ids "<Resource Manager ID for the VM>" --set identity.type="SystemAssigned"
    
  6. 移至 Azure 入口網站 並流覽至 [概觀] 頁面。 JSON 檢視應該指出系統受控識別現在已指派給 VM。

    啟用受控識別時的 JSON 檢視螢幕快照。

部署 Arc VM 失敗

嘗試在 Azure Stack HCI 叢集上部署 Arc VM 時,您會看到下列錯誤:

錯誤{"code":"ConflictingOperation","message":"Unable to process request 'Microsoft.AzureStackHCI/virtualMachineInstances'. There is already a previous running operation for resource '/subscriptions/<subscription ID>/resourceGroups/<Resource group name>/providers/Microsoft.HybridCompute/machines/<VM name>/providers/Microsoft.AzureStackHCI/virtualMachineInstances/default'. Please wait for the previous operation to complete."}

上述失敗是因為 SystemAssigned 受控識別物件不在資源類型下 Microsoft.HybridCompute/machines

解決方法:

在部署範本中確認:

受控 SystemAssigned 識別對象位於資源類型之下 Microsoft.HybridCompute/machines ,而不是在資源類型下 Microsoft.AzureStackHCI/VirtualMachineInstances

部署範本應該符合提供的範例範本。 如需詳細資訊,請參閱在 Azure Stack HCI 上建立 Arc 虛擬機中的範例範本。

刪除記憶體路徑失敗

嘗試刪除 Azure Stack HCI 叢集上的記憶體路徑時,您可能會看到類似下列訊息的錯誤。 您的案例中,資源號碼和版本可能會有所不同。

錯誤"errorMessage" serviceClient returned an error during deletion: The storage container service returned an error during deletion: rpc error: code = Unknown desc = Container is in ACTIVE use by Resources [6:
- linux-cblmariner-0.2.0.10503
- windows-windows2019-0.2.0.10503
- windows-windows2022-0.2.0.10503
].
Remove all the Resources from this container, before trying to delete: In Use: Failed,

解決方法:

錯誤訊息中列出的映像與一般工作負載不同,這些工作負載會以 azure Resource Manager (ARM) 物件表示於 Azure 入口網站 和 CLI 上。 之所以發生此錯誤,是因為這些映像會直接下載到無法辨識 Azure 的文件系統上。

請先遵循下列步驟,再嘗試移除記憶體路徑:

  1. 拿掉您想要刪除之記憶體路徑上相關聯的工作負載和映像。 在映像名稱上尋找下列前置詞:linux-cblmariner、、、windows-windows2019windows_k8swindows-windows2022aks-image-mergedlinux-K8s
  2. 在 Azure 入口網站 中提出支援票證。

無法辨識 Azure CLI 安裝

如果您的環境在安裝后無法辨識 Azure CLI,請執行下列程式代碼區塊,將 Azure CLI 安裝路徑新增至環境路徑。

        if ( -not( $env:PATH -like '*C:\Program Files (x86)\Microsoft SDKs\Azure\CLI2\wbin*') ) {
            $env:PATH += "C:\Program Files (x86)\Microsoft SDKs\Azure\CLI2\wbin;"
            Write-Host "Updated path $env:PATH"
        }

下一步