你当前正在访问 Microsoft Azure Global Edition 技术文档网站。 如果需要访问由世纪互联运营的 Microsoft Azure 中国技术文档网站,请访问 https://docs.azure.cn

通过 Windows PowerShell 管理 Azure Stack Edge Pro FPGA 设备

重要

Azure Stack Edge Pro FPGA 设备将于 2024 年 2 月停用。 如果正在考虑进行新部署,我们建议你了解适合你的工作负载的 Azure Stack Edge Pro 2Azure Stack Edge Pro GPU 设备。

Azure Stack Edge Pro FPGA 解决方案可让你处理数据,并通过网络将数据发送到 Azure。 本文介绍了为 Azure Stack Edge Pro FPGA 设备执行的一些配置和管理任务。 可以使用 Azure 门户、本地 Web UI 或 Windows PowerShell 界面来管理设备。

本文重点介绍使用 PowerShell 界面执行的任务。

本文包括以下过程:

  • 连接到 PowerShell 接口
  • 创建支持包
  • 上传证书
  • 重置设备
  • 查看设备信息
  • 获取计算日志
  • 计算模块的监视和故障排除

连接到 PowerShell 接口

远程连接到设备的过程不同,具体取决于客户端的操作系统。

从 Windows 客户端远程连接

在开始之前,请确保 Windows 客户端运行的是 Windows PowerShell 5.0 或更高版本。

请按照以下步骤从 Windows 客户端进行远程连接。

  1. 以管理员身份运行 Windows PowerShell 会话。

  2. 确保 Windows 远程管理服务正在客户端上运行。 在命令提示符处,键入:

    winrm quickconfig

    有关详细信息,请参阅 Windows 远程管理的安装和配置

  3. 为设备 IP 地址分配一个变量。

    $ip = "<device_ip>"

    <device_ip> 替换为设备的 IP 地址。

  4. 若要将设备的 IP 地址添加到客户端的受信任主机列表,请键入以下命令:

    Set-Item WSMan:\localhost\Client\TrustedHosts $ip -Concatenate -Force

  5. 在设备上启动 Windows PowerShell 会话:

    Enter-PSSession -ComputerName $ip -Credential $ip\EdgeUser -ConfigurationName Minishell

  6. 根据提示提供密码。 使用登录到本地 Web UI 时所用的同一密码。 默认的本地 Web UI 密码为 Password1。 使用远程 PowerShell 成功连接到设备后,可以看到以下示例输出:

    Windows PowerShell
    Copyright (C) Microsoft Corporation. All rights reserved.
    
    PS C:\WINDOWS\system32> winrm quickconfig
    WinRM service is already running on this machine.
    PS C:\WINDOWS\system32> $ip = "10.100.10.10"
    PS C:\WINDOWS\system32> Set-Item WSMan:\localhost\Client\TrustedHosts $ip -Concatenate -Force
    PS C:\WINDOWS\system32> Enter-PSSession -ComputerName $ip -Credential $ip\EdgeUser -ConfigurationName Minishell
    
    WARNING: The Windows PowerShell interface of your device is intended to be used only for the initial network configuration. Please engage Microsoft Support if you need to access this interface to troubleshoot any potential issues you may be experiencing. Changes made through this interface without involving Microsoft Support could result in an unsupported configuration.
    [10.100.10.10]: PS>
    

从 Linux 客户端远程连接

在将用于连接的 Linux 客户端上:

有关详细信息,请参阅通过 SSH 进行 PowerShell 远程处理

请按照以下步骤从 NFS 客户端进行远程连接。

  1. 若要打开 PowerShell 会话,请键入:

    pwsh

  2. 若要使用远程客户端进行连接,请键入:

    Enter-PSSession -ComputerName $ip -Authentication Negotiate -ConfigurationName Minishell -Credential ~\EdgeUser

    出现提示时,提供用于登录设备的密码。

注意

此过程不适用于 Mac OS。

创建支持包

如果遇到任何设备问题,可通过系统日志创建支持包。 Microsoft 支持部门使用此包来解决此问题。 按照以下步骤创建支持包:

  1. 连接到设备的 PowerShell 界面

  2. 使用 Get-HcsNodeSupportPackage 命令创建支持包。 此 cmdlet 的用法如下所示:

    Get-HcsNodeSupportPackage [-Path] <string> [-Zip] [-ZipFileName <string>] [-Include {None | RegistryKeys | EtwLogs
            | PeriodicEtwLogs | LogFiles | DumpLog | Platform | FullDumps | MiniDumps | ClusterManagementLog | ClusterLog |
            UpdateLogs | CbsLogs | StorageCmdlets | ClusterCmdlets | ConfigurationCmdlets | KernelDump | RollbackLogs |
            Symbols | NetworkCmdlets | NetworkCmds | Fltmc | ClusterStorageLogs | UTElement | UTFlag | SmbWmiProvider |
            TimeCmds | LocalUILogs | ClusterHealthLogs | BcdeditCommand | BitLockerCommand | DirStats | ComputeRolesLogs |
            ComputeCmdlets | DeviceGuard | Manifests | MeasuredBootLogs | Stats | PeriodicStatLogs | MigrationLogs |
            RollbackSupportPackage | ArchivedLogs | Default}] [-MinimumTimestamp <datetime>] [-MaximumTimestamp <datetime>]
            [-IncludeArchived] [-IncludePeriodicStats] [-Credential <pscredential>]  [<CommonParameters>]
    

    cmdlet 从设备收集日志,并将这些日志复制到指定的网络或本地共享。

    使用的参数如下:

    • -Path - 指定要将支持包复制到的网络或本地路径。 (必需)
    • -Credential - 指定用于访问受保护路径的凭据。
    • -Zip - 指定该参数可生成 zip 文件。
    • -Include - 指定该参数可包含要包含在支持包中的组件。 如果未指定,则假定为 Default
    • -IncludeArchived - 指定该参数可在支持包中包含存档日志。
    • -IncludePeriodicStats - 指定该参数可在支持包中包含定期统计日志。

上传证书

适当的 SSL 证书可确保将加密信息发送到正确的服务器。 除加密以外,证书还允许进行身份验证。 你可以通过设备的 PowerShell 接口上传自己的受信任的 SSL 证书。

  1. 连接到 PowerShell 接口

  2. 使用 Set-HcsCertificate cmdlet 上传证书。 出现提示时,请提供以下参数:

    • CertificateFilePath - 包含 .pfx 格式的证书文件的共享路径

    • CertificatePassword - 用于保护证书的密码。

    • Credentials - 可访问包含证书的共享的用户名。 出现提示时向网络共享提供密码。

      以下示例显示了此 cmdlet 的用法:

      Set-HcsCertificate -Scope LocalWebUI -CertificateFilePath "\\myfileshare\certificates\mycert.pfx" -CertificatePassword "mypassword" -Credential "Username"
      

还可上传 IoT Edge 证书,在 IoT Edge 设备和可能与其进行连接的下游设备之间启用安全连接。 有三个需要安装的文件(pem 格式)

  • 根 CA 证书或所有者 CA
  • 设备 CA 证书
  • 设备私钥

以下示例演示如何使用此 cmdlet 来安装 IoT Edge 证书:

Set-HcsCertificate -Scope IotEdge -RootCACertificateFilePath "\\hcfs\root-ca-cert.pem" -DeviceCertificateFilePath "\\hcfs\device-ca-cert.pem\" -DeviceKeyFilePath "\\hcfs\device-private-key.pem" -Credential "username"

在运行此 cmdlet 时,系统将会提示你提供网络共享的密码。

有关证书的详细信息,请转到 Azure IoT Edge 证书在网关上安装证书

查看设备信息

  1. 连接到 PowerShell 接口

  2. 使用 Get-HcsApplianceInfo 获取设备的信息。

    以下示例显示了此 cmdlet 的用法:

    [10.100.10.10]: PS>Get-HcsApplianceInfo
    
    Id                            : b2044bdb-56fd-4561-a90b-407b2a67bdfc
    FriendlyName                  : DBE-NBSVFQR94S6
    Name                          : DBE-NBSVFQR94S6
    SerialNumber                  : HCS-NBSVFQR94S6
    DeviceId                      : 40d7288d-cd28-481d-a1ea-87ba9e71ca6b
    Model                         : Virtual
    FriendlySoftwareVersion       : Data Box Gateway 1902
    HcsVersion                    : 1.4.771.324
    IsClustered                   : False
    IsVirtual                     : True
    LocalCapacityInMb             : 1964992
    SystemState                   : Initialized
    SystemStatus                  : Normal
    Type                          : DataBoxGateway
    CloudReadRateBytesPerSec      : 0
    CloudWriteRateBytesPerSec     : 0
    IsInitialPasswordSet          : True
    FriendlySoftwareVersionNumber : 1902
    UploadPolicy                  : All
    DataDiskResiliencySettingName : Simple
    ApplianceTypeFriendlyName     : Data Box Gateway
    IsRegistered                  : False
    

    下表汇总了一些重要的设备信息:

    参数 说明
    FriendlyName 在部署设备期间通过本地 Web UI 配置的设备易记名称。 默认的友好名称为设备序列号。
    SerialNumber 设备序列号是出厂分配的唯一编号。
    模型 Azure Stack Edge 或 Data Box Gateway 设备的模型。 对于 Azure Stack Edge,该模型为物理模型,对于 Data Box Gateway,则为虚拟模型。
    FriendlySoftwareVersion 对应于设备软件版本的友好字符串。 对于运行预览版的系统,友好软件版本将为 Data Box Edge 1902。
    HcsVersion 设备上运行的 HCS 软件版本。 例如,与 Data Box Edge 1902 对应的 HCS 软件版本为 1.4.771.324。
    LocalCapacityInMb 设备的总本地容量(以 MB 为单位)。
    IsRegistered 此值用于指示设备是否已通过该服务激活。

重置设备

若要重置设备,需要安全地擦除设备的数据磁盘和启动磁盘上的所有数据。

使用 Reset-HcsAppliance cmdlet 可擦除数据磁盘和启动磁盘上的数据,或者只擦除数据磁盘上的数据。 使用 SecureWipeBootDiskSecureWipeDataDisks 开关可以分别擦除启动磁盘和数据磁盘上的数据。

SecureWipeBootDisk 开关会擦除启动磁盘上的数据并使设备不可用。 仅当需要将设备退回到 Microsoft 时,才应使用此开关。 有关详细信息,请参阅将设备退回到 Microsoft

如果在本地 Web UI 中使用设备重置,则只会安全地擦除数据磁盘上的数据,而启动磁盘会保持不变。 启动磁盘包含设备配置。

  1. 连接到 PowerShell 接口

  2. 在命令提示符处,键入:

    Reset-HcsAppliance -SecureWipeBootDisk -SecureWipeDataDisks

    下面的示例演示如何使用此 cmdlet:

    [10.128.24.33]: PS>Reset-HcsAppliance -SecureWipeBootDisk -SecureWipeDataDisks
    
    Confirm
    Are you sure you want to perform this action?
    Performing the operation "Reset-HcsAppliance" on target "ShouldProcess appliance".
    [Y] Yes  [A] Yes to All  [N] No  [L] No to All  [?] Help (default is "Y"): N
    

获取计算日志

如果在设备上配置了计算角色,则还可以通过 PowerShell 界面获取计算日志。

  1. 连接到 PowerShell 接口

  2. 使用 Get-AzureDataBoxEdgeComputeRoleLogs 获取设备的计算日志。

    以下示例显示了此 cmdlet 的用法:

    Get-AzureDataBoxEdgeComputeRoleLogs -Path "\\hcsfs\logs\myacct" -Credential "username" -FullLogCollection
    

    下面是用于该 cmdlet 的参数的说明:

    • Path:提供要在其中创建计算日志包的共享的网络路径。
    • Credential:提供网络共享的用户名。 在运行此 cmdlet 时,需要提供共享密码。
    • FullLogCollection:此参数确保日志包中包含所有计算日志。 在默认情况下,日志包只包含一部分日志。

计算模块的监视和故障排除

在配置了计算角色的 Azure Stack Edge 设备上,可以使用两个不同的命令集对设备进行故障排除或监视。

  • 使用 iotedge 命令。 这些命令适用于针对设备的基本操作。
  • 使用 dkrdbe 命令。 这些命令适用于针对设备的更广泛操作。

若要执行上述任一命令集,需要连接到 PowerShell 界面

使用 iotedge 命令

若要查看可用命令的列表,请连接到 PowerShell 界面并使用 iotedge 函数。

[10.100.10.10]: PS>iotedge -?                                                                                                                                                                                                 Usage: iotedge COMMAND

Commands:
   check
   list
   logs
   restart

[10.100.10.10]: PS>

下表简要说明了适用于 iotedge 的命令:

命令 说明
check 对常见配置和连接问题执行自动检查
list 列出模块
logs 提取模块的日志
restart 停止和重启模块

使用 dkrdbe 命令

若要查看可用命令的列表,请连接到 PowerShell 界面并使用 dkrdbe 函数。

[10.100.10.10]: PS>dkrdbe -?
Usage: dkrdbe COMMAND

Commands:
   image [prune]
   images
   inspect
   login
   logout
   logs
   port
   ps
   pull
   start
   stats
   stop
   system [df]
   top

[10.100.10.10]: PS>

下表简要说明了适用于 dkrdbe 的命令:

命令 说明
image 管理映像。 若要删除未使用的映像,请使用 dkrdbe image prune -a -f
images 列出映像
inspect 返回 Docker 对象的详细信息
login 登录到 Docker 注册表
logout 从 Docker 注册表注销
logs 提取容器的日志
port 列出容器的端口映射或特定映射
ps 列出容器
pull 从注册表中拉取映像或存储库
start 启动一个或多个已停止的容器
stats 显示容器资源使用情况统计信息的实时传送流
stop 停止一个或多个正在运行的容器
system 管理 Docker
top 显示正在运行的容器进程

若要获取任何可用命令的帮助,请使用 dkrdbe <command-name> --help

例如,若要了解 port 命令的用法,请键入:

[10.100.10.10]: P> dkrdbe port --help

Usage:  dkr port CONTAINER [PRIVATE_PORT[/PROTO]]

List port mappings or a specific mapping for the container
[10.100.10.10]: P> dkrdbe login --help

Usage:  docker login [OPTIONS] [SERVER]

Log in to a Docker registry.
If no server is specified, the default is defined by the daemon.

Options:
  -p, --password string   Password
      --password-stdin    Take the password from stdin
  -u, --username string   Username
[10.100.10.10]: PS>

dkrdbe 函数的可用命令使用的参数与普通 docker 命令所使用的参数相同。 对于 docker 命令使用的选项和参数,请参阅使用 Docker 命令行

检查模块是否已成功部署

计算模块是已实现业务逻辑的容器。 若要检查计算模块是否已成功部署,请运行 ps 命令,并检查容器(对应于计算模块的容器)是否正在运行。

若要获取所有容器(包括暂停的容器)的列表,请运行 ps -a 命令。

[10.100.10.10]: P> dkrdbe ps -a
CONTAINER ID        IMAGE                                                COMMAND                   CREATED             STATUS              PORTS                                                                  NAMES
d99e2f91d9a8        edgecompute.azurecr.io/filemovemodule2:0.0.1-amd64   "dotnet FileMoveModu…"    2 days ago          Up 2 days                                                                                  movefile
0a06f6d605e9        edgecompute.azurecr.io/filemovemodule2:0.0.1-amd64   "dotnet FileMoveModu…"    2 days ago          Up 2 days                                                                                  filemove
2f8a36e629db        mcr.microsoft.com/azureiotedge-hub:1.0               "/bin/sh -c 'echo \"$…"   2 days ago          Up 2 days           0.0.0.0:443->443/tcp, 0.0.0.0:5671->5671/tcp, 0.0.0.0:8883->8883/tcp   edgeHub
acce59f70d60        mcr.microsoft.com/azureiotedge-agent:1.0             "/bin/sh -c 'echo \"$…"   2 days ago          Up 2 days                                                                                  edgeAgent
[10.100.10.10]: PS>

如果在创建容器映像或在拉取映像时出现错误,请运行 logs edgeAgentEdgeAgent 是负责预配其他容器的 IoT Edge 运行时容器。

由于 logs edgeAgent 转储所有日志,因此查看最近发生的错误的适当方法是使用 --tail 20 选项。

[10.100.10.10]: PS>dkrdbe logs edgeAgent --tail 20
2019-02-28 23:38:23.464 +00:00 [DBG] [Microsoft.Azure.Devices.Edge.Util.Uds.HttpUdsMessageHandler] - Connected socket /var/run/iotedge/mgmt.sock
2019-02-28 23:38:23.464 +00:00 [DBG] [Microsoft.Azure.Devices.Edge.Util.Uds.HttpUdsMessageHandler] - Sending request http://mgmt.sock/modules?api-version=2018-06-28
2019-02-28 23:38:23.464 +00:00 [DBG] [Microsoft.Azure.Devices.Edge.Agent.Core.Agent] - Getting edge agent config...
2019-02-28 23:38:23.464 +00:00 [DBG] [Microsoft.Azure.Devices.Edge.Agent.Core.Agent] - Obtained edge agent config
2019-02-28 23:38:23.469 +00:00 [DBG] [Microsoft.Azure.Devices.Edge.Agent.Edgelet.ModuleManagementHttpClient] - Received a valid Http response from unix:///var/run/iotedge/mgmt.soc
k for List modules
--------------------CUT---------------------
--------------------CUT---------------------
08:28.1007774+00:00","restartCount":0,"lastRestartTimeUtc":"2019-02-26T20:08:28.1007774+00:00","runtimeStatus":"running","version":"1.0","status":"running","restartPolicy":"always
","type":"docker","settings":{"image":"edgecompute.azurecr.io/filemovemodule2:0.0.1-amd64","imageHash":"sha256:47778be0602fb077d7bc2aaae9b0760fbfc7c058bf4df192f207ad6cbb96f7cc","c
reateOptions":"{\"HostConfig\":{\"Binds\":[\"/home/hcsshares/share4-dl460:/home/input\",\"/home/hcsshares/share4-iot:/home/output\"]}}"},"env":{}}
2019-02-28 23:38:28.480 +00:00 [DBG] [Microsoft.Azure.Devices.Edge.Agent.Core.Planners.HealthRestartPlanner] - HealthRestartPlanner created Plan, with 0 command(s).

获取容器日志

若要获取特定容器的日志,请首先列出该容器,然后获取你感兴趣的容器的日志。

  1. 连接到 PowerShell 接口

  2. 若要获取正在运行的容器的列表,请运行 ps 命令。

    [10.100.10.10]: P> dkrdbe ps
    CONTAINER ID        IMAGE                                                COMMAND                   CREATED             STATUS              PORTS                                                                  NAMES
    d99e2f91d9a8        edgecompute.azurecr.io/filemovemodule2:0.0.1-amd64   "dotnet FileMoveModu…"    2 days ago          Up 2 days                                                                                  movefile
    0a06f6d605e9        edgecompute.azurecr.io/filemovemodule2:0.0.1-amd64   "dotnet FileMoveModu…"    2 days ago          Up 2 days                                                                                  filemove
    2f8a36e629db        mcr.microsoft.com/azureiotedge-hub:1.0               "/bin/sh -c 'echo \"$…"   2 days ago          Up 2 days           0.0.0.0:443->443/tcp, 0.0.0.0:5671->5671/tcp, 0.0.0.0:8883->8883/tcp   edgeHub
    acce59f70d60        mcr.microsoft.com/azureiotedge-agent:1.0             "/bin/sh -c 'echo \"$…"   2 days ago          Up 2 days                                                                                  edgeAgent
    
  3. 记下需要其日志的容器的容器 ID。

  4. 若要获取特定容器的日志,请运行提供容器 ID 的 logs 命令。

    [10.100.10.10]: PS>dkrdbe logs d99e2f91d9a8
    02/26/2019 18:21:45: Info: Opening module client connection.
    02/26/2019 18:21:46: Info: Initializing with input: /home/input, output: /home/output.
    02/26/2019 18:21:46: Info: IoT Hub module client initialized.
    02/26/2019 18:22:24: Info: Received message: 1, SequenceNumber: 0 CorrelationId: , MessageId: 081886a07e694c4c8f245a80b96a252a Body: [{"ChangeType":"Created","ShareRelativeFilePath":"\\__Microsoft Data Box Edge__\\Upload\\Errors.xml","ShareName":"share4-dl460"}]
    02/26/2019 18:22:24: Info: Moving input file: /home/input/__Microsoft Data Box Edge__/Upload/Errors.xml to /home/output/__Microsoft Data Box Edge__/Upload/Errors.xml
    02/26/2019 18:22:24: Info: Processed event.
    02/26/2019 18:23:38: Info: Received message: 2, SequenceNumber: 0 CorrelationId: , MessageId: 30714d005eb048e7a4e7e3c22048cf20 Body: [{"ChangeType":"Created","ShareRelativeFilePath":"\\f [10]","ShareName":"share4-dl460"}]
    02/26/2019 18:23:38: Info: Moving input file: /home/input/f [10] to /home/output/f [10]
    02/26/2019 18:23:38: Info: Processed event.
    

监视设备的使用情况统计信息

若要监视设备上的内存、CPU 使用率和 IO,请使用 stats 命令。

  1. 连接到 PowerShell 接口

  2. 运行 stats 命令,以禁用实时传送流并仅拉取第一个结果。

    dkrdbe stats --no-stream
    

    以下示例显示了此 cmdlet 的用法:

    [10.100.10.10]: P> dkrdbe stats --no-stream
    CONTAINER ID        NAME          CPU %         MEM USAGE / LIMIT     MEM %         NET I/O             BLOCK I/O           PIDS
    d99e2f91d9a8        movefile      0.0           24.4MiB / 62.89GiB    0.04%         751kB / 497kB       299kB / 0B          14
    0a06f6d605e9        filemove      0.00%         24.11MiB / 62.89GiB   0.04%         679kB / 481kB       49.5MB / 0B         14
    2f8a36e629db        edgeHub       0.18%         173.8MiB / 62.89GiB   0.27%         4.58MB / 5.49MB     25.7MB / 2.19MB     241
    acce59f70d60        edgeAgent     0.00%         35.55MiB / 62.89GiB   0.06%         2.23MB / 2.31MB     55.7MB / 332kB      14
    [10.100.10.10]: PS>
    

退出远程会话

若要退出远程 PowerShell 会话,请关闭 PowerShell 窗口。

后续步骤