你当前正在访问 Microsoft Azure Global Edition 技术文档网站。 如果需要访问由世纪互联运营的 Microsoft Azure 中国技术文档网站,请访问 https://docs.azure.cn。
通过 Windows PowerShell 管理 Azure Stack Edge Pro GPU 设备
适用范围:Azure Stack Edge Pro - GPUAzure Stack Edge Pro 2Azure Stack Edge Pro RAzure Stack Edge Mini R
Azure Stack Edge Pro GPU 解决方案可让你处理数据,并通过网络将数据发送到 Azure。 本文介绍了为 Azure Stack Edge Pro GPU 设备执行的一些配置和管理任务。 可以使用 Azure 门户、本地 Web UI 或 Windows PowerShell 界面来管理设备。
本文重点介绍如何连接到设备的 PowerShell 界面,以及使用此界面可以执行的任务。
连接到 PowerShell 接口
远程连接到设备的过程不同,具体取决于客户端的操作系统。
从 Windows 客户端远程连接
先决条件
在开始之前,请确保:
Windows 客户端运行 Windows PowerShell 5.0 或更高版本。
你的 Windows 客户端的签名链(根证书)与设备上安装的节点证书相对应。 有关详细说明,请参阅在 Windows 客户端上安装证书。
hosts
文件位于 Windows 客户端的C:\Windows\System32\drivers\etc
,具有与节点证书对应的条目,格式如下:<Device IP> <Node serial number>.<DNS domain of the device>
下面是
hosts
文件的示例条目:10.100.10.10 1HXQG13.wdshcsso.com
详细步骤
请按照以下步骤从 Windows 客户端进行远程连接。
以管理员身份运行 Windows PowerShell 会话。
确保 Windows 远程管理服务正在客户端上运行。 在命令提示符处,键入:
winrm quickconfig
有关详细信息,请参阅 Windows 远程管理的安装和配置。
将变量分配给
hosts
文件中使用的连接字符串。$Name = "<Node serial number>.<DNS domain of the device>"
将
<Node serial number>
和<DNS domain of the device>
替换为设备的节点序列号和 DNS 域。 可以从设备的本地 Web UI 中的“证书”页获取节点序列号的值,从“设备”页获取 DNS 域。若要将设备的连接字符串添加到客户端的受信任主机列表,请键入以下命令:
Set-Item WSMan:\localhost\Client\TrustedHosts $Name -Concatenate -Force
在设备上启动 Windows PowerShell 会话:
Enter-PSSession -ComputerName $Name -Credential ~\EdgeUser -ConfigurationName Minishell -UseSSL
如果看到与信任关系相关的错误,请检查上传到你的设备的节点证书的签名链是否也安装在访问设备的客户端上。
根据提示提供密码。 使用登录到本地 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> $Name = "1HXQG13.wdshcsso.com" PS C:\WINDOWS\system32> Set-Item WSMan:\localhost\Client\TrustedHosts $Name -Concatenate -Force PS C:\WINDOWS\system32> Enter-PSSession -ComputerName $Name -Credential ~\EdgeUser -ConfigurationName Minishell -UseSSL 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. [1HXQG13.wdshcsso.com]: PS>
使用 -UseSSL
选项时,将在 https 上通过 PowerShell 进行远程处理。 建议始终使用 https 通过 PowerShell 进行远程连接。 在受信任的网络中,可以使用 http 通过 PowerShell 进行远程连接。 首先在本地 UI 中通过 http 启用远程 PowerShell。 然后,可以使用上述过程(无需 -UseSSL
选项)连接到设备的 PowerShell 接口。
如果使用的不是证书(建议使用证书!),可使用会话选项跳过证书验证检查:-SkipCACheck -SkipCNCheck -SkipRevocationCheck
。
$sessOptions = New-PSSessionOption -SkipCACheck -SkipCNCheck -SkipRevocationCheck
Enter-PSSession -ComputerName $Name -Credential ~\EdgeUser -ConfigurationName Minishell -UseSSL -SessionOption $sessOptions
下面是跳过证书检查时的示例输出:
PS C:\WINDOWS\system32> $Name = "1HXQG13.wdshcsso.com"
PS C:\WINDOWS\system32> $sessOptions = New-PSSessionOption -SkipCACheck -SkipCNCheck -SkipRevocationCheck
PS C:\WINDOWS\system32> $sessOptions
MaximumConnectionRedirectionCount : 5
NoCompression : False
NoMachineProfile : False
ProxyAccessType : None
ProxyAuthentication : Negotiate
ProxyCredential :
SkipCACheck : True
SkipCNCheck : True
SkipRevocationCheck : True
OperationTimeout : 00:03:00
NoEncryption : False
UseUTF16 : False
IncludePortInSPN : False
OutputBufferingMode : None
MaxConnectionRetryCount : 0
Culture :
UICulture :
MaximumReceivedDataSizePerCommand :
MaximumReceivedObjectSize :
ApplicationArguments :
OpenTimeout : 00:03:00
CancelTimeout : 00:01:00
IdleTimeout : -00:00:00.0010000
PS C:\WINDOWS\system32> Enter-PSSession -ComputerName $Name -Credential ~\EdgeUser -ConfigurationName Minishell -UseSSL -SessionOption $sessOptions
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.
[1HXQG13.wdshcsso.com]: PS>
重要
在当前版本中,只能通过 Windows 客户端连接到设备的 PowerShell 接口。 -UseSSL
选项不适用于 Linux 客户端。
创建支持包
如果遇到任何设备问题,可通过系统日志创建支持包。 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
- 指定该参数可在支持包中包含定期统计日志。
查看设备信息
使用
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 此值用于指示设备是否已通过该服务激活。
查看 GPU 驱动程序信息
如果在设备上配置了计算角色,则还可以通过 PowerShell 界面获取 GPU 驱动程序信息。
使用
Get-HcsGpuNvidiaSmi
获取设备的 GPU 驱动程序信息。以下示例显示了此 cmdlet 的用法:
Get-HcsGpuNvidiaSmi
请记下此 cmdlet 的示例输出中的驱动程序信息。
+-----------------------------------------------------------------------------+ | NVIDIA-SMI 440.64.00 Driver Version: 440.64.00 CUDA Version: 10.2 | |-------------------------------+----------------------+----------------------+ | GPU Name Persistence-M| Bus-Id Disp.A | Volatile Uncorr. ECC | | Fan Temp Perf Pwr:Usage/Cap| Memory-Usage | GPU-Util Compute M. | |===============================+======================+======================| | 0 Tesla T4 On | 000029CE:00:00.0 Off | 0 | | N/A 60C P0 29W / 70W | 1539MiB / 15109MiB | 0% Default | +-------------------------------+----------------------+----------------------+ | 1 Tesla T4 On | 0000AD50:00:00.0 Off | 0 | | N/A 58C P0 29W / 70W | 330MiB / 15109MiB | 0% Default | +-------------------------------+----------------------+----------------------+
启用多进程服务 (MPS)
Nvidia GPU 上的多进程服务 (MPS) 提供下述机制:GPU 可供多个作业共享,而每个作业分配有某个百分比的 GPU 资源。 MPS 是 Azure Stack Edge Pro GPU 设备上的预览版功能。 若要在设备上启用 MPS,请执行以下步骤:
在开始之前,请确保:
- 已在 Azure 中使用 Azure Stack Edge 资源配置并激活 Azure Stack Edge Pro 设备。
- 已在 Azure 门户中的此设备上配置了计算。
使用以下命令在设备上启用 MPS。
Start-HcsGpuMPS
注意
在更新设备软件和 Kubernetes 群集时,不会为工作负载保留 MPS 设置。 需要重新启用 MPS。
重置设备
若要重置设备,需要安全地擦除设备的数据磁盘和启动磁盘上的所有数据。
使用 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
:此参数确保日志包中包含所有计算日志。 在默认情况下,日志包只包含一部分日志。
更改 Kubernetes 工作负载配置文件
在已形成和配置群集并新建虚拟交换机后,可以添加或删除与虚拟交换机关联的虚拟网络。 有关详细步骤,请参阅配置虚拟交换机。
创建虚拟交换机后,可以为 Kubernetes 计算流量启用交换机以指定 Kubernetes 工作负载配置文件。 要使用本地 UI 执行此操作,请使用配置计算 IPS中的步骤。 要使用 PowerShell 执行此操作,请执行以下步骤:
使用
Get-HcsApplianceInfo
cmdlet 获取设备的当前KubernetesPlatform
和KubernetesWorkloadProfile
设置。使用
Get-HcsKubernetesWorkloadProfiles
cmdlet 确定 Azure Stack Edge 设备上可用的配置文件。[Device-IP]: PS>Get-HcsKubernetesWorkloadProfiles Type Description ---- ----------- AP5GC an Azure Private MEC solution SAP a SAP Digital Manufacturing for Edge Computing or another Microsoft partner solution NONE other workloads [Device-IP]: PS>
使用
Set-HcsKubernetesWorkloadProfile
cmdlet 为 AP5GC(Azure 专用 MEC 解决方案)设置工作负载配置文件。以下示例显示了此 cmdlet 的用法:
Set-HcsKubernetesWorkloadProfile -Type "AP5GC"
下面是此 cmdlet 的示例输出:
[10.100.10.10]: PS>KubernetesPlatform : AKS [10.100.10.10]: PS>KubernetesWorkloadProfile : AP5GC [10.100.10.10]: PS>
更改 Kubernetes Pod 和服务子网
如果正在环境中运行其他工作负载选项,则默认情况下,Azure Stack Edge 设备上的 Kubernetes 分别为 pod 和服务使用子网 172.27.0.0/16 和 172.28.0.0/16。 如果这些子网在网络中已被使用,你可以运行 Set-HcsKubeClusterNetworkInfo
cmdlet 来更改这些子网。
最好是在从 Azure 门户配置计算之前执行此项配置,因为 Kubernetes 群集就是在此配置计算的步骤中创建的。
在设备的 PowerShell 界面中,运行:
Set-HcsKubeClusterNetworkInfo -PodSubnet <subnet details> -ServiceSubnet <subnet details>
请将 <子网详细信息> 替换为要使用的子网范围。
运行此命令后,可以使用
Get-HcsKubeClusterNetworkInfo
命令来验证 pod 和服务子网是否已更改。
下面是此命令的示例输出。
[10.100.10.10]: PS>Set-HcsKubeClusterNetworkInfo -PodSubnet 10.96.0.1/16 -ServiceSubnet 10.97.0.1/16
[10.100.10.10]: PS>Get-HcsKubeClusterNetworkInfo
Id PodSubnet ServiceSubnet
-- --------- -------------
6dbf23c3-f146-4d57-bdfc-76cad714cfd1 10.96.0.1/16 10.97.0.1/16
[10.100.10.10]: PS>
调试与 IoT Edge 相关的 Kubernetes 问题
在开始之前,必须:
- 已配置计算网络。 请参阅教程:为带有 GPU 的 Azure Stack Edge Pro 配置网络。
- 已在设备上配置计算角色。
在配置了计算角色的 Azure Stack Edge Pro GPU 设备上,可以使用两个不同的命令集对设备进行故障排除或监视。
- 使用
iotedge
命令。 这些命令适用于针对设备的基本操作。 - 使用
kubectl
命令。 这些命令适用于针对设备的更广泛操作。
若要执行上述任一命令集,需要连接到 PowerShell 界面。
使用 iotedge
命令
若要查看可用命令的列表,请连接到 PowerShell 界面并使用 iotedge
函数。
[10.100.10.10]: PS>iotedge -?
Usage: iotedge COMMAND
Commands:
list
logs
restart
[10.100.10.10]: PS>
下表简要说明了适用于 iotedge
的命令:
命令 | 说明 |
---|---|
list |
列出模块 |
logs |
提取模块的日志 |
restart |
停止和重启模块 |
列出所有 IoT Edge 模块
若要列出设备上运行的所有模块,请使用 iotedge list
命令。
下面是此命令的示例输出。 此命令列出所有模块、关联的配置,以及与模块关联的外部 IP。 例如,可以通过 https://10.128.44.244
访问 webserver 应用。
[10.100.10.10]: PS>iotedge list
NAME STATUS DESCRIPTION CONFIG EXTERNAL-IP
---- ------ ----------- ------ -----
gettingstartedwithgpus Running Up 10 days mcr.microsoft.com/intelligentedge/solutions:latest
iotedged Running Up 10 days azureiotedge/azureiotedge-iotedged:0.1.0-beta10 <none>
edgehub Running Up 10 days mcr.microsoft.com/azureiotedge-hub:1.0 10.128.44.243
edgeagent Running Up 10 days azureiotedge/azureiotedge-agent:0.1.0-beta10
webserverapp Running Up 10 days nginx:stable 10.128.44.244
[10.100.10.10]: PS>
重启模块
可使用 list
命令列出设备上运行的所有模块。 然后,确定要重启的模块的名称并对其使用 restart
命令。
下面是演示如何重启模块的示例输出。 根据模块运行时长的说明,可以看到 cuda-sample1
已重启。
[10.100.10.10]: PS>iotedge list
NAME STATUS DESCRIPTION CONFIG EXTERNAL-IP PORT(S)
---- ------ ----------- ------ ----------- -------
edgehub Running Up 5 days mcr.microsoft.com/azureiotedge-hub:1.0 10.57.48.62 443:31457/TCP,5671:308
81/TCP,8883:31753/TCP
iotedged Running Up 7 days azureiotedge/azureiotedge-iotedged:0.1.0-beta13 <none> 35000/TCP,35001/TCP
cuda-sample2 Running Up 1 days nvidia/samples:nbody
edgeagent Running Up 7 days azureiotedge/azureiotedge-agent:0.1.0-beta13
cuda-sample1 Running Up 1 days nvidia/samples:nbody
[10.100.10.10]: PS>iotedge restart cuda-sample1
[10.100.10.10]: PS>iotedge list
NAME STATUS DESCRIPTION CONFIG EXTERNAL-IP PORT(S)
---- ------ ----------- ------ ----------- -------
edgehub Running Up 5 days mcr.microsoft.com/azureiotedge-hub:1.0 10.57.48.62 443:31457/TCP,5671:30
881/TCP,8883:31753/TC
P
iotedged Running Up 7 days azureiotedge/azureiotedge-iotedged:0.1.0-beta13 <none> 35000/TCP,35001/TCP
cuda-sample2 Running Up 1 days nvidia/samples:nbody
edgeagent Running Up 7 days azureiotedge/azureiotedge-agent:0.1.0-beta13
cuda-sample1 Running Up 4 minutes nvidia/samples:nbody
[10.100.10.10]: PS>
获取模块日志
使用 logs
命令获取设备上运行的任何 IoT Edge 模块的日志。
如果在创建容器映像或在拉取映像时出现错误,请运行 logs edgeagent
。 edgeagent
是负责预配其他容器的 IoT Edge 运行时容器。 由于 logs edgeagent
转储所有日志,因此查看最近发生的错误的适当方法是使用 --tail
0` 选项。
下面是一个示例输出。
[10.100.10.10]: PS>iotedge logs cuda-sample2 --tail 10
[10.100.10.10]: PS>iotedge logs edgeagent --tail 10
<6> 2021-02-25 00:52:54.828 +00:00 [INF] - Executing command: "Report EdgeDeployment status: [Success]"
<6> 2021-02-25 00:52:54.829 +00:00 [INF] - Plan execution ended for deployment 11
<6> 2021-02-25 00:53:00.191 +00:00 [INF] - Plan execution started for deployment 11
<6> 2021-02-25 00:53:00.191 +00:00 [INF] - Executing command: "Create an EdgeDeployment with modules: [cuda-sample2, edgeAgent, edgeHub, cuda-sample1]"
<6> 2021-02-25 00:53:00.212 +00:00 [INF] - Executing command: "Report EdgeDeployment status: [Success]"
<6> 2021-02-25 00:53:00.212 +00:00 [INF] - Plan execution ended for deployment 11
<6> 2021-02-25 00:53:05.319 +00:00 [INF] - Plan execution started for deployment 11
<6> 2021-02-25 00:53:05.319 +00:00 [INF] - Executing command: "Create an EdgeDeployment with modules: [cuda-sample2, edgeAgent, edgeHub, cuda-sample1]"
<6> 2021-02-25 00:53:05.412 +00:00 [INF] - Executing command: "Report EdgeDeployment status: [Success]"
<6> 2021-02-25 00:53:05.412 +00:00 [INF] - Plan execution ended for deployment 11
[10.100.10.10]: PS>
注意
在 Azure Stack Edge 上,Kubernetes 上的 IoT Edge 不支持 GetModuleLogs 或 UploadModuleLogs 等直接方法。
使用 kubectl 命令
在配置了计算角色的 Azure Stack Edge Pro GPU 设备上,所有 kubectl
命令均可用于对模块进行监视或故障排除。 若要查看可用命令的列表,请在命令窗口中运行 kubectl --help
。
C:\Users\myuser>kubectl --help
kubectl controls the Kubernetes cluster manager.
Find more information at: https://kubernetes.io/docs/reference/kubectl/overview/
Basic Commands (Beginner):
create Create a resource from a file or from stdin.
expose Take a replication controller, service, deployment or pod and expose it as a new Kubernetes Service
run Run a particular image on the cluster
set Set specific features on objects
run-container Run a particular image on the cluster. This command is deprecated, use "run" instead
==============CUT=============CUT============CUT========================
Usage:
kubectl [flags] [options]
Use "kubectl <command> --help" for more information about a given command.
Use "kubectl options" for a list of global command-line options (applies to all commands).
C:\Users\myuser>
有关 kubectl
命令的完整列表,请参阅 kubectl
速查表。
获取在 Kubernetes 群集外部公开的服务或模块的 IP
若要获取在 Kubernetes 外部公开的负载均衡服务的 IP,请运行以下命令:
kubectl get svc -n iotedge
下面是在 Kubernetes 群集外部公开的所有服务或模块的示例输出。
[10.100.10.10]: PS>kubectl get svc -n iotedge
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
edgehub LoadBalancer 10.103.52.225 10.128.44.243 443:31987/TCP,5671:32336/TCP,8883:30618/TCP 34h
iotedged ClusterIP 10.107.236.20 <none> 35000/TCP,35001/TCP 3d8h
webserverapp LoadBalancer 10.105.186.35 10.128.44.244 8080:30976/TCP 16h
[10.100.10.10]: PS>
“外部 IP”列中的 IP 地址对应于服务或模块的外部终结点。 还可以在 Kubernetes 仪表板中获取外部 IP。
检查模块是否已成功部署
计算模块是已实现业务逻辑的容器。 一个 Kubernetes pod 可以包含多个运行的容器。
若要检查是否已成功部署计算模块,请连接到设备的 PowerShell 界面。
运行 get pods
命令,然后检查容器(对应于计算模块)是否正在运行。
若要获取特定命名空间中运行的所有 pod 的列表,请运行以下命令:
get pods -n <namespace>
若要检查通过 IoT Edge 部署的模块,请运行以下命令:
get pods -n iotedge
下面是 iotedge
命名空间中运行的所有 pod 的示例输出。
[10.100.10.10]: PS>kubectl get pods -n iotedge
NAME READY STATUS RESTARTS AGE
edgeagent-cf6d4ffd4-q5l2k 2/2 Running 0 20h
edgehub-8c9dc8788-2mvwv 2/2 Running 0 56m
filemove-66c49984b7-h8lxc 2/2 Running 0 56m
iotedged-675d7f4b5f-9nml4 1/1 Running 0 20h
[10.100.10.10]: PS>
“Status”列下的状态指示命名空间中的所有 pod 正在运行,“Ready”指示 pod 中部署的容器数。 在以上示例中,所有 pod 正在运行,部署在每个 pod 中的所有模块也正在运行。
若要检查通过 Azure Arc 部署的模块,请运行以下命令:
get pods -n azure-arc
或者,可以连接到 Kubernetes 仪表板以查看 IoT Edge 或 Azure Arc 部署。
要获取给定命名空间的特定 pod 的更详细输出,可运行以下命令:
kubectl describe pod <pod name> -n <namespace>
下面显示了示例输出。
[10.100.10.10]: PS>kubectl describe pod filemove-66c49984b7 -n iotedge
Name: filemove-66c49984b7-h8lxc
Namespace: iotedge
Priority: 0
Node: k8s-1hwf613cl-1hwf613/10.139.218.12
Start Time: Thu, 14 May 2020 12:46:28 -0700
Labels: net.azure-devices.edge.deviceid=myasegpu-edge
net.azure-devices.edge.hub=myasegpu2iothub.azure-devices.net
net.azure-devices.edge.module=filemove
pod-template-hash=66c49984b7
Annotations: net.azure-devices.edge.original-moduleid: filemove
Status: Running
IP: 172.17.75.81
IPs: <none>
Controlled By: ReplicaSet/filemove-66c49984b7
Containers:
proxy:
Container ID: docker://fd7975ca78209a633a1f314631042a0892a833b7e942db2e7708b41f03e8daaf
Image: azureiotedge/azureiotedge-proxy:0.1.0-beta8
Image ID: docker://sha256:5efbf6238f13d24bab9a2b499e5e05bc0c33ab1587d6cf6f289cdbe7aa667563
Port: <none>
Host Port: <none>
State: Running
Started: Thu, 14 May 2020 12:46:30 -0700
Ready: True
Restart Count: 0
Environment:
PROXY_LOG: Debug
=============CUT===============================CUT===========================
Volumes:
config-volume:
Type: ConfigMap (a volume populated by a ConfigMap)
Name: iotedged-proxy-config
Optional: false
trust-bundle-volume:
Type: ConfigMap (a volume populated by a ConfigMap)
Name: iotedged-proxy-trust-bundle
Optional: false
myasesmb1local:
Type: PersistentVolumeClaim (a reference to a PersistentVolumeClaim in the same namespace)
ClaimName: myasesmb1local
ReadOnly: false
myasesmb1:
Type: PersistentVolumeClaim (a reference to a PersistentVolumeClaim in the same namespace)
ClaimName: myasesmb1
ReadOnly: false
filemove-token-pzvw8:
Type: Secret (a volume populated by a Secret)
SecretName: filemove-token-pzvw8
Optional: false
QoS Class: BestEffort
Node-Selectors: <none>
Tolerations: node.kubernetes.io/not-ready:NoExecute for 300s
node.kubernetes.io/unreachable:NoExecute for 300s
Events: <none>
[10.100.10.10]: PS>
获取容器日志
若要获取模块的日志,请在设备的 PowerShell 界面中运行以下命令:
kubectl logs <pod_name> -n <namespace> --all-containers
由于 all-containers
标志将转储所有容器的所有日志,因此查看最近发生的错误的适当方法是使用选项 --tail 10
。
下面是示例输出。
[10.100.10.10]: PS>kubectl logs filemove-66c49984b7-h8lxc -n iotedge --all-containers --tail 10
DEBUG 2020-05-14T20:40:42Z: loop process - 0 events, 0.000s
DEBUG 2020-05-14T20:40:44Z: loop process - 0 events, 0.000s
DEBUG 2020-05-14T20:40:44Z: loop process - 0 events, 0.000s
DEBUG 2020-05-14T20:40:44Z: loop process - 1 events, 0.000s
DEBUG 2020-05-14T20:40:44Z: loop process - 0 events, 0.000s
DEBUG 2020-05-14T20:42:12Z: loop process - 0 events, 0.000s
DEBUG 2020-05-14T20:42:14Z: loop process - 0 events, 0.000s
DEBUG 2020-05-14T20:42:14Z: loop process - 0 events, 0.000s
DEBUG 2020-05-14T20:42:14Z: loop process - 1 events, 0.000s
DEBUG 2020-05-14T20:42:14Z: loop process - 0 events, 0.000s
05/14/2020 19:46:44: Info: Opening module client connection.
05/14/2020 19:46:45: Info: Open done.
05/14/2020 19:46:45: Info: Initializing with input: /home/input, output: /home/output, protocol: Amqp.
05/14/2020 19:46:45: Info: IoT Hub module client initialized.
[10.100.10.10]: PS>
更改 Kubernetes 工作器节点的内存或处理器限制
若要更改 Kubernetes 工作器节点的内存或处理器限制,请执行以下步骤:
若要获取工作器节点和角色选项的当前资源,请运行以下命令:
Get-AzureDataBoxEdgeRole
下面是一个示例输出。 请注意
Resources
节下的Name
和Compute
值。MemoryInBytes
和ProcessorCount
表示当前为 Kubernetes 工作器节点分配的内存和处理器计数值。[10.100.10.10]: PS>Get-AzureDataBoxEdgeRole ImageDetail : Name:mcr.microsoft.com/azureiotedge-agent Tag:1.0 PlatformType:Linux EdgeDeviceConnectionString : IotDeviceConnectionString : HubHostName : ase-srp-007.azure-devices.net IotDeviceId : srp-007-storagegateway EdgeDeviceId : srp-007-edge Version : Id : 6ebeff9f-84c5-49a7-890c-f5e05520a506 Name : IotRole Type : IOT Resources : Compute: MemoryInBytes:34359738368 ProcessorCount:12 VMProfile: Storage: EndpointMap: EndpointId:c0721210-23c2-4d16-bca6-c80e171a0781 TargetPath:mysmbedgecloudshare1 Name:mysmbedgecloudshare1 Protocol:SMB EndpointId:6557c3b6-d3c5-4f94-aaa0-6b7313ab5c74 TargetPath:mysmbedgelocalshare Name:mysmbedgelocalshare Protocol:SMB RootFileSystemStorageSizeInBytes:0 HostPlatform : KubernetesCluster State : Created PlatformType : Linux HostPlatformInstanceId : 994632cb-853e-41c5-a9cd-05b36ddbb190 IsHostPlatformOwner : True IsCreated : True [10.100.10.10]: PS>
若要更改工作器节点的内存和处理器值,请运行以下命令:
Set-AzureDataBoxEdgeRoleCompute -Name <Name value from the output of Get-AzureDataBoxEdgeRole> -Memory <Value in Bytes> -ProcessorCount <No. of cores>
下面是一个示例输出。
[10.100.10.10]: PS>Set-AzureDataBoxEdgeRoleCompute -Name IotRole -MemoryInBytes 32GB -ProcessorCount 16 ImageDetail : Name:mcr.microsoft.com/azureiotedge-agent Tag:1.0 PlatformType:Linux EdgeDeviceConnectionString : IotDeviceConnectionString : HubHostName : ase-srp-007.azure-devices.net IotDeviceId : srp-007-storagegateway EdgeDeviceId : srp-007-edge Version : Id : 6ebeff9f-84c5-49a7-890c-f5e05520a506 Name : IotRole Type : IOT Resources : Compute: MemoryInBytes:34359738368 ProcessorCount:16 VMProfile: Storage: EndpointMap: EndpointId:c0721210-23c2-4d16-bca6-c80e171a0781 TargetPath:mysmbedgecloudshare1 Name:mysmbedgecloudshare1 Protocol:SMB EndpointId:6557c3b6-d3c5-4f94-aaa0-6b7313ab5c74 TargetPath:mysmbedgelocalshare Name:mysmbedgelocalshare Protocol:SMB RootFileSystemStorageSizeInBytes:0 HostPlatform : KubernetesCluster State : Created PlatformType : Linux HostPlatformInstanceId : 994632cb-853e-41c5-a9cd-05b36ddbb190 IsHostPlatformOwner : True IsCreated : True [10.100.10.10]: PS>
更改内存和处理器使用率时,请遵循以下指导原则。
- 默认内存为设备规格的 25%。
- 默认处理器计数为设备规格的 30%。
- 更改内存和处理器计数值时,我们建议在设备内存和处理器计数的 15% 到 60% 之间改变值。
- 建议的上限为 60%,以便为系统组件提供足够的资源。
连接到 BMC
注意
基板管理控制器 (BMC) 在 Azure Stack Edge Pro 2 和 Azure Stack Edge Mini R 上不可用。本部分所述的 cmdlet 仅适用于 Azure Stack Edge Pro GPU 和 Azure Stack Edge Pro R。
BMC 用于远程监视和管理设备。 本部分介绍可用于管理 BMC 配置的 cmdlet。 在运行其中的任何 cmdlet 之前,请连接到设备的 PowerShell 界面。
Get-HcsNetBmcInterface
:使用此 cmdlet 可以获取 BMC 的网络配置属性,例如IPv4Address
、IPv4Gateway
、IPv4SubnetMask
和DhcpEnabled
。下面是示例输出:
[10.100.10.10]: PS>Get-HcsNetBmcInterface IPv4Address IPv4Gateway IPv4SubnetMask DhcpEnabled ----------- ----------- -------------- ----------- 10.128.53.186 10.128.52.1 255.255.252.0 False [10.100.10.10]: PS>
Set-HcsNetBmcInterface
:可通过以下两种方式使用此 cmdlet。使用该 cmdlet 并通过对
UseDhcp
参数使用适当的值,为 BMC 启用或禁用 DHCP 配置。Set-HcsNetBmcInterface -UseDhcp $true
下面是示例输出:
[10.100.10.10]: PS>Set-HcsNetBmcInterface -UseDhcp $true [10.100.10.10]: PS>Get-HcsNetBmcInterface IPv4Address IPv4Gateway IPv4SubnetMask DhcpEnabled ----------- ----------- -------------- ----------- 10.128.54.8 10.128.52.1 255.255.252.0 True [10.100.10.10]: PS>
使用此 cmdlet 可以配置 BMC 的静态配置。 可以指定
IPv4Address
、IPv4Gateway
和IPv4SubnetMask
的值。Set-HcsNetBmcInterface -IPv4Address "<IPv4 address of the device>" -IPv4Gateway "<IPv4 address of the gateway>" -IPv4SubnetMask "<IPv4 address for the subnet mask>"
下面是示例输出:
[10.100.10.10]: PS>Set-HcsNetBmcInterface -IPv4Address 10.128.53.186 -IPv4Gateway 10.128.52.1 -IPv4SubnetMask 255.255.252.0 [10.100.10.10]: PS>Get-HcsNetBmcInterface IPv4Address IPv4Gateway IPv4SubnetMask DhcpEnabled ----------- ----------- -------------- ----------- 10.128.53.186 10.128.52.1 255.255.252.0 False [10.100.10.10]: PS>
Set-HcsBmcPassword
:使用此 cmdlet 可以修改EdgeUser
的 BMC 密码。 用户名EdgeUser
区分大小写。下面是示例输出:
[10.100.10.10]: PS> Set-HcsBmcPassword -NewPassword "Password1" [10.100.10.10]: PS>
退出远程会话
若要退出远程 PowerShell 会话,请关闭 PowerShell 窗口。
后续步骤
- 在 Azure 门户中部署 Azure Stack Edge Pro GPU。