Administración de un dispositivo Azure Stack Edge Pro con GPU mediante Windows PowerShell
SE APLICA A:Azure Stack Edge Pro con GPUAzure Stack Edge Pro 2Azure Stack Edge Pro RAzure Stack Edge Mini R
La solución Azure Stack Edge Pro GPU permite procesar datos y enviarlos a través de la red a Azure. En este artículo se describen algunas de las tareas de configuración y administración del dispositivo Azure Stack Edge Pro GPU. Puede usar Azure Portal, la interfaz de usuario web local o la interfaz de Windows PowerShell para administrar su dispositivo.
Este artículo se centra en cómo puede conectarse a la interfaz de PowerShell del dispositivo y las tareas que puede realizar con esta interfaz.
Conectarse a la interfaz de PowerShell
Dependiendo del sistema operativo del cliente, los procedimientos para conectarse de forma remota al dispositivo son diferentes.
Conexión de forma remota desde un cliente de Windows
Requisitos previos
Antes de comenzar, asegúrese de que:
El cliente de Windows ejecuta Windows PowerShell 5.0 o una versión posterior.
El cliente de Windows tiene la cadena de firma (certificado raíz) que corresponde al certificado de nodo instalado en el dispositivo. Para instrucciones detalladas, consulte Instalación de un certificado en el cliente de Windows.
El archivo
hosts
que se encuentra enC:\Windows\System32\drivers\etc
en el cliente de Windows tiene una entrada que corresponde al certificado de nodo en el siguiente formato:<Device IP> <Node serial number>.<DNS domain of the device>
Este es un ejemplo del archivo
hosts
:10.100.10.10 1HXQG13.wdshcsso.com
Pasos detallados
Siga estos pasos para conectarse de forma remota desde un cliente de Windows.
Ejecute una sesión de Windows PowerShell como administrador.
Asegúrese de que el servicio Administración remota de Windows se ejecuta en el cliente. En el símbolo del sistema, escriba:
winrm quickconfig
Para más información, vea Instalación y configuración de Administración remota de Windows.
Asigne una variable a la cadena de conexión utilizada en el archivo
hosts
.$Name = "<Node serial number>.<DNS domain of the device>"
Reemplace
<Node serial number>
y<DNS domain of the device>
por el número de serie del nodo y el dominio DNS del dispositivo. Puede obtener los valores del número de serie del nodo en la página Certificates (Certificados) y el dominio DNS en la página Device (Dispositivo) de la interfaz de usuario web local del dispositivo.Para agregar esta cadena de conexión del dispositivo a la lista de hosts de confianza del cliente, escriba el siguiente comando:
Set-Item WSMan:\localhost\Client\TrustedHosts $Name -Concatenate -Force
Inicie una sesión de Windows PowerShell en el dispositivo:
Enter-PSSession -ComputerName $Name -Credential ~\EdgeUser -ConfigurationName Minishell -UseSSL
Si ve un error que tiene que ver con la relación de confianza, compruebe que la cadena de firma del certificado de nodo cargado en el dispositivo también esté instalada en el cliente que tiene acceso al dispositivo.
Proporcione la contraseña cuando se le solicite. Use la misma contraseña que se emplea para iniciar sesión en la interfaz de usuario web local. La contraseña de la interfaz de usuario web local predeterminada es Password1. Cuando se conecte correctamente al dispositivo mediante PowerShell remoto, verá la siguiente salida de ejemplo:
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>
Cuando se usa la opción -UseSSL
, la comunicación remota se realiza a través de PowerShell a través de https. Se recomienda usar siempre https para conectarse de forma remota a través de PowerShell. En redes de confianza, la comunicación remota mediante PowerShell a través de HTTP es aceptable. En primer lugar, habilite PowerShell remoto a través de HTTP en la interfaz de usuario local. A continuación, puede conectarse a la interfaz de PowerShell del dispositivo mediante el procedimiento anterior sin la opción -UseSSL
.
Si no usa los certificados (se recomienda usarlos), puede omitir la comprobación de la validación de certificados mediante las opciones de sesión: -SkipCACheck -SkipCNCheck -SkipRevocationCheck
.
$sessOptions = New-PSSessionOption -SkipCACheck -SkipCNCheck -SkipRevocationCheck
Enter-PSSession -ComputerName $Name -Credential ~\EdgeUser -ConfigurationName Minishell -UseSSL -SessionOption $sessOptions
Este es un ejemplo de salida al omitir la comprobación de certificados:
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>
Importante
En la versión actual, solo puede conectarse a la interfaz de PowerShell del dispositivo mediante un cliente de Windows. La opción -UseSSL
no funciona con los clientes de Linux.
Crear un paquete de soporte
Si experimenta problemas con el dispositivo, puede crear un paquete de soporte técnico de los registros del sistema. El servicio de soporte técnico de Microsoft usa este paquete para solucionar los problemas. Siga estos pasos para crear un paquete de soporte técnico:
Conéctese a la interfaz de PowerShell del dispositivo.
Use el comando
Get-HcsNodeSupportPackage
para crear un paquete de soporte técnico. El uso del cmdlet es de esta manera: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>]
El cmdlet recopila registros de su dispositivo y copia esos registros en una red o un recurso compartido local especificados.
Los parámetros usados son los siguientes:
-Path
: especifica la red o la ruta de acceso local donde copiar el paquete de soporte técnico. (requerido)-Credential
: especifica las credenciales para acceder a la ruta de acceso protegida.-Zip
: especifica que se genere un archivo ZIP.-Include
: especifica los componentes que se incluirán en el paquete de soporte técnico. Si no se especifica, se da por hecho el valorDefault
.-IncludeArchived
: especifica que se incluyan los registros archivados en el paquete de soporte técnico.-IncludePeriodicStats
: especifica que se incluyan registros estadísticos periódicos en el paquete de soporte técnico.
Ver la información del dispositivo
Use
Get-HcsApplianceInfo
para obtener la información del dispositivo.En el ejemplo siguiente se muestra el uso de este 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
Esta es una tabla que resume alguna de la información importante del dispositivo:
Parámetro Descripción FriendlyName El nombre descriptivo del dispositivo, tal y como se configuró mediante la interfaz de usuario web local durante la implementación del dispositivo. El nombre descriptivo predeterminado es el número de serie del dispositivo. SerialNumber El número de serie del dispositivo es un número único asignado en la fábrica. Modelo El modelo del dispositivo Azure Stack Edge o Data Box Gateway. El modelo es físico para Azure Stack Edge y virtual para Data Box Gateway. FriendlySoftwareVersion La cadena descriptiva que corresponde a la versión de software del dispositivo. Para un sistema que ejecuta la versión preliminar, la versión de software descriptiva sería Data Box Edge 1902. HcsVersion La versión de software HCS que se ejecuta en el dispositivo. Por ejemplo, la versión de software HCS correspondiente a Data Box Edge 1902 es 1.4.771.324. LocalCapacityInMb La capacidad total local del dispositivo en megabits. IsRegistered Este valor indica si el dispositivo se activa con el servicio.
Visualización de la información del controlador de GPU
Si el rol de proceso está configurado en su dispositivo, también puede obtener la información del controlador de GPU mediante la interfaz de PowerShell.
Use
Get-HcsGpuNvidiaSmi
para obtener la información del controlador de GPU del dispositivo.En el ejemplo siguiente se muestra el uso de este cmdlet:
Get-HcsGpuNvidiaSmi
Anote la información del controlador que aparece en la salida de ejemplo de este 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 | +-------------------------------+----------------------+----------------------+
Habilitación servicio multiproceso (MPS)
Un servicio multiproceso (MPS) en las GPU de Nvidia proporciona un mecanismo donde varios trabajos pueden compartir las GPU, donde cada trabajo tiene asignado cierto porcentaje de los recursos de la GPU. MPS es una característica en vista previa (GB) en el dispositivo Azure Stack Edge Pro con GPU. Para habilitar MPS en el dispositivo, siga estos pasos:
Antes de comenzar, asegúrese de que:
- Ha configurado y activado el dispositivo Azure Stack Edge Pro con un recurso de Azure Stack Edge en Azure.
- Ha configurado el proceso en este dispositivo en Azure Portal.
Use el siguiente comando para habilitar MPS en el dispositivo.
Start-HcsGpuMPS
Nota:
Cuando se actualizan el software del dispositivo y el clúster de Kubernetes, la configuración de MPS para las cargas de trabajo no se conserva. Tendrá que volver a habilitar MPS.
Restablecer el dispositivo
Para restablecer el dispositivo, debe borrar de forma segura todos los datos del disco de datos y del disco de arranque del dispositivo.
Utilice el cmdlet Reset-HcsAppliance
para borrar tanto los discos de datos como el disco de arranque o solo los discos de datos. Los conmutadores SecureWipeBootDisk
y SecureWipeDataDisks
le permiten borrar el disco de arranque y los discos de datos, respectivamente.
El identificador SecureWipeBootDisk
borra el disco de arranque, lo que hace que el dispositivo no se pueda usar. Solo se debería usar cuando el dispositivo necesite devolverse a Microsoft. Para más información, consulte Devolución o sustitución del dispositivo Azure Data Box Edge.
Si utiliza el restablecimiento del dispositivo en la interfaz de usuario web local, solo los discos de datos se borran de forma segura, pero el disco de arranque se mantiene intacto. El disco de arranque contiene la configuración del dispositivo.
En el símbolo del sistema, escriba:
Reset-HcsAppliance -SecureWipeBootDisk -SecureWipeDataDisks
En el ejemplo siguiente se muestra cómo utilizar este 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
Obtener los registros de proceso
Si el rol de proceso está configurado en su dispositivo, también puede obtener los registros del proceso gracias a la interfaz de PowerShell.
Use
Get-AzureDataBoxEdgeComputeRoleLogs
para obtener los registros del proceso del dispositivo.En el ejemplo siguiente se muestra el uso de este cmdlet:
Get-AzureDataBoxEdgeComputeRoleLogs -Path "\\hcsfs\logs\myacct" -Credential "username" -FullLogCollection
Aquí tiene hay una descripción de los parámetros que se usan en el cmdlet:
Path
: proporcione una ruta de acceso de red al recurso compartido en el que quiere crear el paquete de registros del proceso.Credential
: proporcione el nombre de usuario del recurso compartido de red. Cuando ejecute este cmdlet, deberá proporcionar la contraseña del recurso compartido.FullLogCollection
: este parámetro garantiza que el paquete de registros contendrá todos los registros del proceso. De forma predeterminada, el paquete de registros contiene solo un subconjunto de registros.
Cambio de perfiles de carga de trabajo de Kubernetes
Después de haber formado y configurado un clúster y ha creado nuevos conmutadores virtuales, puede agregar o eliminar redes virtuales asociadas a los conmutadores virtuales. Para obtener pasos detallados, vea Configuración de conmutadores virtuales.
Una vez creados los conmutadores virtuales, puede habilitar los modificadores para el tráfico de proceso de Kubernetes para especificar un perfil de carga de trabajo de Kubernetes. Para ello, use la interfaz de usuario local, siga los pasos descritos en Configuración de IPS de proceso. Para ello, siga estos pasos para usar PowerShell:
Use el
Get-HcsApplianceInfo
cmdlet ara obtener la configuración actualKubernetesPlatform
yKubernetesWorkloadProfile
del dispositivo.Use el
Get-HcsKubernetesWorkloadProfiles
cmdlet para identificar los perfiles disponibles en el dispositivo 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>
Use el cmdlet
Set-HcsKubernetesWorkloadProfile
para establecer el perfil de carga de trabajo para AP5GC, una solución MEC privada de Azure.En el ejemplo siguiente se muestra el uso de este cmdlet:
Set-HcsKubernetesWorkloadProfile -Type "AP5GC"
Esta es la salida de ejemplo para este cmdlet:
[10.100.10.10]: PS>KubernetesPlatform : AKS [10.100.10.10]: PS>KubernetesWorkloadProfile : AP5GC [10.100.10.10]: PS>
Cambio de las subredes de pods y de servicio de Kubernetes
Si ejecuta la otras cargas de trabajo opción en el entorno, de forma predeterminada, Kubernetes en el dispositivo Azure Stack Edge usa subredes 172.27.0.0/16 y 172.28.0.0/16 para pod y servicio respectivamente. Si estas subredes ya están en uso en la red, puede ejecutar el cmdlet Set-HcsKubeClusterNetworkInfo
para cambiarlas.
Se debe realizar este cambio antes de configurar el proceso en Azure Portal, ya que el clúster de Kubernetes se crea en este paso.
Conexión a la interfaz de PowerShell del dispositivo.
Desde dicha interfaz de PowerShell, ejecute lo siguiente:
Set-HcsKubeClusterNetworkInfo -PodSubnet <subnet details> -ServiceSubnet <subnet details>
Reemplace los <detalles de subred> por el intervalo de subred que quiera usar.
Una vez que haya ejecutado este comando, puede usar el comando
Get-HcsKubeClusterNetworkInfo
para comprobar que las subredes de pods y de servicio han cambiado.
A continuación se muestra una salida de ejemplo de este comando.
[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>
Depurar problemas de Kubernetes relacionados con IoT Edge
Antes de empezar, debe disponer de lo siguiente:
- Red de proceso configurada. Vea Tutorial: Configuración de la red para Azure Stack Edge Pro con GPU.
- Rol de proceso configurado en el dispositivo.
En un dispositivo Azure Stack Edge Pro GPU que tenga configurado el rol de proceso, puede solucionar problemas o supervisar el dispositivo con dos conjuntos diferentes de comandos.
- Uso de comandos de
iotedge
Estos comandos están disponibles para las operaciones básicas del dispositivo. - Uso de comandos de
kubectl
Estos comandos están disponibles para un amplio conjunto de operaciones para el dispositivo.
Para ejecutar cualquiera de los comandos anteriores, debe conectarse a la interfaz de PowerShell.
Usar comandos iotedge
Para ver una lista de comandos disponibles, conéctese a la interfaz de PowerShell y utilice la función iotedge
.
[10.100.10.10]: PS>iotedge -?
Usage: iotedge COMMAND
Commands:
list
logs
restart
[10.100.10.10]: PS>
En la tabla siguiente se proporciona una breve descripción de los comandos disponibles para iotedge
:
comando | Descripción |
---|---|
list |
Enumere los módulos |
logs |
Captura los registros de un módulo. |
restart |
Detiene y reinicia un módulo. |
Enumeración de todos los módulos de IoT Edge
Para enumerar todos los módulos que se ejecutan en el dispositivo, use el comando iotedge list
.
Esta es una salida de ejemplo del comando. Este comando muestra todos los módulos, la configuración asociada y las direcciones IP externas asociadas a los módulos. Por ejemplo, puede acceder a la aplicación del servidor web en https://10.128.44.244
.
[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>
Reinicio de módulos
Puede usar el comando list
para enumerar todos los módulos que se ejecutan en el dispositivo. A continuación, identifique el nombre del módulo que desea reiniciar y úselo con el comando restart
.
A continuación, se muestra una salida de ejemplo de cómo reiniciar un módulo. En función de la descripción de cuánto tiempo se ejecuta el módulo, puede ver que cuda-sample1
se ha reiniciado.
[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>
Obtención de los registros del módulo
Use el comando logs
para obtener los registros de cualquier módulo de IoT Edge que se ejecute en el dispositivo.
Si se ha producido un error al crear la imagen de contenedor o durante la extracción de la imagen, ejecute logs edgeagent
. edgeagent
es el contenedor de tiempo de ejecución de IoT Edge, que es responsable del aprovisionamiento de otros contenedores. Dado que logs edgeagent
hace un volcado de todos los registros, una buena forma de ver los errores recientes consiste en usar la opción --tail
0`.
Esta es una salida de ejemplo.
[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>
Nota:
Los métodos directos como GetModuleLogs o UploadModuleLogs no se admiten en IoT Edge en Kubernetes en Azure Stack Edge.
Uso de comandos de kubectl
En un dispositivo de Azure Stack Edge Pro GPU con el rol de proceso configurado, están disponibles todos los comandos de kubectl
para supervisar o solucionar problemas de los módulos. Para ver una lista de los comandos disponibles, ejecute kubectl --help
desde la ventana de comandos.
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>
Si quiere obtener una lista completa de los comandos de kubectl
, vaya a la hoja de referencia de kubectl
.
Para obtener la dirección IP del servicio o módulo expuesto fuera del clúster de Kubernetes
Para obtener la dirección IP de un servicio de equilibrio de carga o los módulos expuestos fuera del Kubernetes, ejecute el siguiente comando:
kubectl get svc -n iotedge
A continuación se muestra una salida de ejemplo de todos los servicios o módulos que se exponen fuera del clúster de 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>
La dirección IP de la columna IP externa corresponde al punto de conexión externo del servicio o del módulo. También puede obtener la dirección IP externa en el panel de Kubernetes.
Comprobación de si el módulo se ha implementado correctamente
Los módulos de proceso son contenedores que tienen una lógica de negocios implementada. Un pod de Kubernetes puede tener varios contenedores en ejecución.
Para comprobar si un módulo de proceso se implementa correctamente, conéctese a la interfaz de PowerShell del dispositivo.
Ejecute el comando get pods
y compruebe si se está ejecutando el contenedor (que corresponde al módulo de proceso).
Para obtener la lista de todos los pods que se ejecutan en un espacio de nombres específico, ejecute el siguiente comando:
get pods -n <namespace>
Para comprobar los módulos implementados con IoT Edge, ejecute el siguiente comando:
get pods -n iotedge
A continuación se muestra una salida de ejemplo de todos los pods que se ejecutan en el espacio de nombres iotedge
.
[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>
El estado Estado indica que se están ejecutando todos los pods en el espacio de nombres y el estado Listo indica el número de contenedores implementados en un pod. En el ejemplo anterior, todos los pods están en ejecución y todos los módulos implementados en cada uno de los pods se están ejecutando.
Para comprobar los módulos implementados mediante Azure Arc, ejecute el siguiente comando:
get pods -n azure-arc
Como alternativa, puede conectarse al panel de Kubernetes para ver IoT Edge o implementaciones de Azure Arc.
Para obtener una salida más detallada de un pod específico para un espacio de nombres determinado, puede ejecutar el siguiente comando:
kubectl describe pod <pod name> -n <namespace>
A continuación se muestra la salida de ejemplo.
[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>
Para obtener registros de contenedores
Para obtener los registros de un módulo, ejecute el siguiente comando desde la interfaz de PowerShell del dispositivo:
kubectl logs <pod_name> -n <namespace> --all-containers
Dado que la marca all-containers
vuelca todos los registros de todos los contenedores, una buena manera de ver los errores recientes es usar la opción --tail 10
.
A continuación se muestra una salida de ejemplo.
[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>
Cambio de límites de memoria o procesador para el nodo de trabajo de Kubernetes
Para cambiar los límites de memoria o procesador para el nodo de trabajo de Kubernetes, siga estos pasos:
Conexión a la interfaz de PowerShell del dispositivo.
Para obtener los recursos actuales para el nodo de trabajo y las opciones de rol, ejecute el siguiente comando:
Get-AzureDataBoxEdgeRole
Esta es una salida de ejemplo. Tenga en cuenta los valores de
Name
yCompute
en la secciónResources
.MemoryInBytes
yProcessorCount
indican los valores asignados actualmente de memoria y número de procesadores para el nodo de trabajo de 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>
Para cambiar los valores de memoria y procesadores del nodo de trabajo, ejecute el siguiente comando:
Set-AzureDataBoxEdgeRoleCompute -Name <Name value from the output of Get-AzureDataBoxEdgeRole> -Memory <Value in Bytes> -ProcessorCount <No. of cores>
Esta es una salida de ejemplo.
[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>
Al cambiar el uso de la memoria y el procesador, siga estas instrucciones.
- La memoria predeterminada es el 25 % de la especificación del dispositivo.
- El número de procesadores predeterminado es el 30 % de la especificación del dispositivo.
- Al cambiar los valores de memoria y la cantidad de procesadores, se recomienda que varíe los valores entre el 15 % y el 60 % de la memoria del dispositivo y el número de procesadores.
- Se recomienda un límite superior del 60 % para que haya suficientes recursos para los componentes del sistema.
Conexión al BMC
Nota:
El controlador de administración de placa base (BMC) no está disponible en Azure Stack Edge Pro 2 y Azure Stack Edge Mini R. Los cmdlets descritos en esta sección solo se aplican a Azure Stack Edge Pro GPU y Azure Stack Edge Pro R.
BMC se usa para supervisar y administrar el dispositivo de forma remota. En esta sección se describen los cmdlets que se pueden usar para administrar la configuración de BMC. Antes de ejecutar cualquiera de estos cmdlets, conéctese a la interfaz de PowerShell del dispositivo.
Get-HcsNetBmcInterface
: Use este cmdlet para obtener las propiedades de configuración de red de BMC, por ejemplo,IPv4Address
,IPv4Gateway
,IPv4SubnetMask
,DhcpEnabled
.Esta es una salida de ejemplo:
[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
: Puede usar este cmdlet de las dos maneras siguientes.Use el cmdlet para habilitar o deshabilitar la configuración de DHCP para BMC con el valor adecuado del parámetro
UseDhcp
.Set-HcsNetBmcInterface -UseDhcp $true
Esta es una salida de ejemplo:
[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>
Use este cmdlet para realizar la configuración estática del BMC. Puede especificar los valores de
IPv4Address
,IPv4Gateway
yIPv4SubnetMask
.Set-HcsNetBmcInterface -IPv4Address "<IPv4 address of the device>" -IPv4Gateway "<IPv4 address of the gateway>" -IPv4SubnetMask "<IPv4 address for the subnet mask>"
Esta es una salida de ejemplo:
[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
: Use este cmdlet para modificar la contraseña de BMC paraEdgeUser
. El nombre de usuario,EdgeUser
, distingue mayúsculas de minúsculas.Esta es una salida de ejemplo:
[10.100.10.10]: PS> Set-HcsBmcPassword -NewPassword "Password1" [10.100.10.10]: PS>
Salir de la sesión remota
Para salir de la sesión remota de PowerShell, cierre la ventana de PowerShell.
Pasos siguientes
- Implemente Azure Stack Edge Pro GPU en Azure Portal.