你当前正在访问 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 2 或 Azure 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 客户端进行远程连接。
以管理员身份运行 Windows PowerShell 会话。
确保 Windows 远程管理服务正在客户端上运行。 在命令提示符处,键入:
winrm quickconfig
有关详细信息,请参阅 Windows 远程管理的安装和配置。
为设备 IP 地址分配一个变量。
$ip = "<device_ip>"
将
<device_ip>
替换为设备的 IP 地址。若要将设备的 IP 地址添加到客户端的受信任主机列表,请键入以下命令:
Set-Item WSMan:\localhost\Client\TrustedHosts $ip -Concatenate -Force
在设备上启动 Windows PowerShell 会话:
Enter-PSSession -ComputerName $ip -Credential $ip\EdgeUser -ConfigurationName Minishell
根据提示提供密码。 使用登录到本地 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 客户端上:
- 从 GitHub 安装最新的适用于 Linux 的 PowerShell Core 以获取 SSH 远程处理功能。
- 只安装 NTLM 模块中的
gss-ntlmssp
包。 对于 Ubuntu 客户端,请使用以下命令:sudo apt-get install gss-ntlmssp
有关详细信息,请参阅通过 SSH 进行 PowerShell 远程处理。
请按照以下步骤从 NFS 客户端进行远程连接。
若要打开 PowerShell 会话,请键入:
pwsh
若要使用远程客户端进行连接,请键入:
Enter-PSSession -ComputerName $ip -Authentication Negotiate -ConfigurationName Minishell -Credential ~\EdgeUser
出现提示时,提供用于登录设备的密码。
注意
此过程不适用于 Mac OS。
创建支持包
如果遇到任何设备问题,可通过系统日志创建支持包。 Microsoft 支持部门使用此包来解决此问题。 按照以下步骤创建支持包:
使用
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 证书。
使用
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 证书或在网关上安装证书。
查看设备信息
使用
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 可擦除数据磁盘和启动磁盘上的数据,或者只擦除数据磁盘上的数据。 使用 SecureWipeBootDisk
和 SecureWipeDataDisks
开关可以分别擦除启动磁盘和数据磁盘上的数据。
SecureWipeBootDisk
开关会擦除启动磁盘上的数据并使设备不可用。 仅当需要将设备退回到 Microsoft 时,才应使用此开关。 有关详细信息,请参阅将设备退回到 Microsoft。
如果在本地 Web UI 中使用设备重置,则只会安全地擦除数据磁盘上的数据,而启动磁盘会保持不变。 启动磁盘包含设备配置。
在命令提示符处,键入:
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 界面获取计算日志。
使用
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 edgeAgent
。 EdgeAgent
是负责预配其他容器的 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).
获取容器日志
若要获取特定容器的日志,请首先列出该容器,然后获取你感兴趣的容器的日志。
若要获取正在运行的容器的列表,请运行
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
记下需要其日志的容器的容器 ID。
若要获取特定容器的日志,请运行提供容器 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
命令。
运行
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 窗口。
后续步骤
- 在 Azure 门户中部署 Azure Stack Edge Pro FPGA。