为已迁移的 VM 启用来宾管理(预览版)

适用于:Azure Local 2311.2 及更高版本

本文介绍如何在 Azure 本地版本 23H2 上运行的 Arc 虚拟机(VM)迁移后启用来宾管理。

有关其他方案的详细信息,请参阅 管理 Azure 本地上的 Arc VM。

输出属性可能因 VM 是否已迁移而有所不同。

重要

此功能目前处于预览状态。 有关 beta 版本、预览版或尚未正式发布的版本的 Azure 功能所适用的法律条款,请参阅 Microsoft Azure 预览版的补充使用条款

先决条件

在开始之前,请完成以下操作:

  • 你有权访问已部署和注册的 Azure 本地实例,并配置了 Arc 资源桥和自定义位置。

  • 系统运行的是 Azure 本地版本 23H2 版本 2405 或更高版本。

  • Azure CLI 安装在 Azure 本地实例上。 有关说明,请参阅 安装适用于 Windows 的 Azure CLI。

  • 通过以管理员身份运行 PowerShell 添加 stack-hci-vm Azure 扩展:

    • 若要添加 stack-hci-vm 扩展,请运行以下 cmdlet:

      az extension add --name stack-hci-vm --upgrade 
      
    • 若要验证安装并检查 stack-hci-vm 版本是否为 1.1.5 或更高版本:

      PS C:\Users\AzureStackAdminD> az version
      {
          "azure-cli": ”2.60.0”,
          "azure-cli-core": ”2.60.0”,
          "azure-cli-telemetry": "1.1.0",
          "extensions": {
              "aksarc": ‘1. 2.20" ,
              "arcappliance": "1.1.1", 
              "connectedk8s": "1.6. 2‘ ,
              "customlocation": "0.1.3",
              "k8s-extension": "1.4. 5" ,
              "stack-hci-vm": "1.1.8"
      }
      
  • 熟悉 Arc VM 和来宾管理功能和注意事项 - 请参阅 “启用来宾管理”。

在迁移的 VM 上启用来宾代理

在继续执行以下步骤之前,必须先关闭所有 Hyper-V 第 1 代 VM。 Hyper-V 第 2 代 VM 没有此类要求,它们可以打开或关闭,并且两种电源状态都有望正常工作。

步骤 1:检查已迁移 VM 的电源状态,如下所示:

  1. 对于 Hyper-V 第 1 代,请确保 VM 已停止。 如果错误消息未停止,请参阅附录。

    使用Azure 门户(建议)

    1. 若要停止从Azure 门户迁移的 VM,请在 VM 详细信息页上选择“停止

    显示如何停止 VM 的Azure 门户屏幕截图。

    1. 等待并刷新页面以查看 VM 状态 显示为 “已停止”。

    使用 Azure CLI

    1. 连接到 Azure 本地计算机并打开 PowerShell 窗口。 使用 Azure CLI 登录。

      az login --use-device-code --tenant $tenantId
      
    2. 使用 Azure CLI 检查 VM 电源状态,如下所示:

      az stack-hci-vm show --name $vmName --resource-group $rgName --query "properties.status"
      

      示例输出:

      PS C : \Users\AzureStackAdminD> az stack-hci-vm show --name <VM name> --resource-group <resource group> --query "properties.status"
      {
          "errorCode":
          "errorMessage" :
          "powerstate": "Stopped",
          "provisioningstatus": null
      }
      
  2. 对于 Hyper-V 第 2 代 VM,请确保Azure 门户上显示的电源状态与 Hyper-V 管理器上迁移的 VM 的实际电源状态匹配,无论其是否为“开”“关”:

    Azure 门户视图

    显示Azure 门户中的 VM 电源状态的屏幕截图。

    Hyper-V 管理器视图

    显示 Hyper-V 管理器中的 VM 电源状态的屏幕截图。

步骤 2:在迁移的 VM 上附加来宾代理的 ISO,如下所示:

连接到 Azure 本地计算机并在 PowerShell 中运行以下命令,其中 $vmName 迁移的 VM 的名称已启用来宾代理, $rgName 并且是此 VM 位于 Azure 上的资源组的名称:

az stack-hci-vm update --name $vmName --resource-group $rgName --enable-vm-config-agent true

示例输出:

PS C:\Users\AzureStackAdminD> az stack-hci-vm update --name $vmName -enable-vm-config-agent true --resource-group $resourceGroup
{
"endTime": "2024-08-19T22:01:22.1060463z",
"error": {},
"extendedLocation": null ,
"id": "<ID>",
"identity": null,
"name": "<Name>",
"properties": null,
"resourceld": "<Resource ID>",
"startTime": "2024-08-19T22: 01:09.4898702z" ,
"status": "Succeeded",
"systemData" : null,
"type": null
}

附加了 ISO 的 VM 的示例状态,从 Azure 本地系统查看:

显示 ISO 附件的屏幕截图。

步骤 3:根据需要在Azure 门户中启用已迁移的 VM,并确保其具有公共网络连接,如下所示:

  1. 检查Azure 门户上的 VM 状态是否正在运行

    显示Azure 门户中的 VM 状态的屏幕截图。

  2. 通过在 PowerShell 窗口中的 Azure 本地计算机上运行以下命令,检查 VM powerState 是否 正在运行

    az stack-hci-vm show --name $vmName --resource-group $rgName --query “properties.status” 
    
    PS C: \Users\AzureStackAdminD> az stack-hci-vm show --name <Name> --resource-group <Resource group> --query "properties.status" 
    {
    "errorCode":
    "errorMessage":
    "powerState": "Running",
    "provisioningStatus": null
    }
    

步骤 4:在迁移的 VM 上安装来宾代理 ISO,如下所示:

  1. 使用特定于 OS 的步骤连接到 VM。

  2. 在 VM 上建立公共网络连接。

  3. 运行以下命令,基于使用的 OS 在 VM 上启用来宾代理:

    • 如果在 Linux 上,请打开 终端 并运行:

      sudo -- sh -c 'mkdir /mociso && mount -L mocguestagentprov /mociso && bash /mociso/install.sh && umount /mociso && rm -df /mociso'
      

      示例输出(Linux):

      migration@migration-virtual-machine: $ sudo -- sh -c 'mkdir /mociso && mount -L mocguestagentprov /nociso && bash /mociso/install.sh && umount /mociso && rm -df/mociso && eject LABEL=mocguestagentprov'
      [sudo] password for migration:
      mount: /moctso: WARNING: device write-protected, mounted read-only.
      Loading configuration version 've.16.5'...
      The agent could not find the '/opt/mocguestagent/v0.16.5/config.yaml' config file. Looking for older versions to upgrade from...
      Service installed.
      Service started.
      The guest agent was successfully installed.
      
    • 如果在 Windows 上,请以管理员身份打开 PowerShell 并运行:

        $d=Get-Volume -FileSystemLabel mocguestagentprov;$p=Join-Path ($d.DriveLetter+':\') 'install.ps1';powershell $p 
      

      示例输出(Windows):

PS C:\Users\Administrator> $d=Get-Volume -FilesystemLabel mocguestagentprov;$p=Join-Path ($d.DriveLetter+':\') 'install ps1';powershell $p

Directory : C : \ProgramData\mocguestagent


Mode	LastWriteTime	Length Name
----    -------------   -----------
d------	8/19/2024	5:46 PM	certs
Loading configuration version 'v0.16.5'...
The agent could not find the 'C:\ProgramData\mocguestagent\v0.16.5\config.yaml' config file. Looking for older versions to upgrade from...
Service installed.
Service started.
The guest agent was successfully installed.

启用来宾管理

可以在来宾代理运行后启用来宾管理,如下所示:

  1. 通过在 Azure CLI 中运行以下命令,从 Azure 本地实例启用来宾管理:

    az stack-hci-vm update --name $vmName --resource-group $rgName --enable-agent true
    

    示例输出:

    PS C:\Users\AzureStackAdminD> az stack-hci-vm update --name $vmName --resource-group $resourceGroup --enable-agent true
    {
    "endTime": "2024-08-19T22:59:13.9583373Z”,
    "error": {},
    "extendedLocation" : null,
    "id": "/<ID>",
    "identity": null,
    "name": "<Name>",
    "properties": null,
    "resourceld": "<Resource ID",
    "startTime": "2024-08-19t22:28:23.8158331Z",
    "status": "Succeeded",
    "systemData": null,
    "type": null
    }
    
  2. 检查Azure 门户中的来宾管理启用状态:

    Azure 门户中的来宾管理启用的屏幕截图。

  3. 现在可以添加所选的 Azure 扩展。

如果遇到任何问题,请联系Microsoft 支持部门并提供日志和部署详细信息。

附录

如果在运行更新命令--enable-vm-config-agent true之前忘记关闭 Hyper-V 第 1 代 VM,更新命令将失败,并且 VM 可能无法从Azure 门户管理:

PS C:\Users\AzureStackAdminD> az stack-hci-vm update --name <VM name> -- resource-group <Resource group> --enable-vm-config-agent true
(Failed) moc-operator virtualmachine serviceclient returned an error while reconciling: rpc error: code = Unknown dasc = AddlSODisk for IsoFile mocguestagentprov.iso failed. Error: ErrorCode[32768] ErrorDescription[<VM name>' failed to add device 'Synthetic DVD Drive'. (Virtual machine ID <VM ID>)] ErrorSummaryDescription [Failed to add device 'Synthetic DVD Drive'.]: WMI Error 0x00008000: Failed
Code: Failed
Message: moc-operator virtualmachine serviceclient returned an error while reconciling: rpc error: code = Unknown desc = AddlSODisk for IsoFile mocguestagentprov.iso failed. Error: ErrorCode[32768] ErrorDescription['<VM name>' failed to add device 'Synthetic DVD Drive'. (Virtual machine ID <VM ID>)] ErrorSummaryDescription [Failed to add device 'Synthetic DVD Drive'.]: WMI Error 0x00008000: Failed

若要解决此问题,请选择“停止,停止Azure 门户中的 VM。 如果不起作用,请从 Azure CLI 运行以下命令:

az stack-hci-vm stop --name $vmName --resource-group $rgName

在禁用“开始”、“重启”和“停止选择”Azure 门户中,可能会看到资源无法预配错误,但 Hyper-V 管理器应显示 VM 实际已停止:

显示“资源未能预配”错误的屏幕截图。

az stack-hci-vm update --name $vmName --resource-group $rgName --enable-vm-config-agent true 

后续步骤