Gerenciar um dispositivo GPU do Azure Stack Edge Pro por meio do Windows PowerShell

APLICA-SE A:Yes for Pro GPU SKUAzure Stack Edge Pro - GPUYes for Pro 2 SKUAzure Stack Edge Pro 2Yes for Pro R SKUAzure Stack Edge Pro RYes for Mini R SKUAzure Stack Edge Mini R

A solução de GPU Azure Stack Edge Pro permite processar dados e enviá-los pela rede para o Azure. Este artigo descreve algumas das tarefas de configuração e gerenciamento para seu dispositivo de GPU do Azure Stack Edge Pro. Você pode usar o portal do Azure, a interface do usuário da Web local ou a interface do Windows PowerShell para gerenciar seu dispositivo.

Este artigo se concentra em como você pode se conectar à interface do PowerShell do dispositivo e nas tarefas que você pode fazer usando essa interface.

Ligue-se à interface do PowerShell

Dependendo do sistema operacional do cliente, os procedimentos para se conectar remotamente ao dispositivo são diferentes.

Conectar-se remotamente a partir de um cliente Windows

Pré-requisitos

Antes de começar, certifique-se de que:

  • Seu cliente Windows está executando o Windows PowerShell 5.0 ou posterior.

  • Seu cliente Windows tem a cadeia de assinatura (certificado raiz) correspondente ao certificado de nó instalado no dispositivo. Para obter instruções detalhadas, consulte Instalar certificado no cliente Windows.

  • O hosts arquivo localizado em C:\Windows\System32\drivers\etc para seu cliente Windows tem uma entrada correspondente ao certificado do nó no seguinte formato:

    <Device IP> <Node serial number>.<DNS domain of the device>

    Aqui está uma entrada de exemplo para o hosts arquivo:

    10.100.10.10 1HXQG13.wdshcsso.com

Passos detalhados

Siga estas etapas para se conectar remotamente a partir de um cliente Windows.

  1. Execute uma sessão do Windows PowerShell como administrador.

  2. Certifique-se de que o serviço de Gestão Remota do Windows está em execução no seu cliente. Na linha de comandos, escreva:

    winrm quickconfig
    

    Para obter mais informações, consulte Instalação e configuração do Gerenciamento Remoto do Windows.

  3. Atribua uma variável à cadeia de conexão usada no hosts arquivo.

    $Name = "<Node serial number>.<DNS domain of the device>"
    

    Substitua <Node serial number> e <DNS domain of the device> pelo número de série do nó e domínio DNS do seu dispositivo. Você pode obter os valores para o número de série do nó na página Certificados e no domínio DNS na página Dispositivo na interface do usuário da Web local do seu dispositivo.

  4. Para adicionar essa cadeia de conexão do seu dispositivo à lista de hosts confiáveis do cliente, digite o seguinte comando:

    Set-Item WSMan:\localhost\Client\TrustedHosts $Name -Concatenate -Force
    
  5. Inicie uma sessão do Windows PowerShell no dispositivo:

    Enter-PSSession -ComputerName $Name -Credential ~\EdgeUser -ConfigurationName Minishell -UseSSL
    

    Se vir um erro relacionado com a relação de confiança, verifique se a cadeia de assinatura do certificado de nó carregado para o dispositivo também está instalada no cliente que acede ao dispositivo.

  6. Forneça a senha quando solicitado. Use a mesma senha usada para entrar na interface do usuário da Web local. A senha padrão da interface do usuário da Web local é Password1. Quando você se conecta com êxito ao dispositivo usando o PowerShell remoto, você vê a seguinte saída de exemplo:

    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>
    

Ao usar a -UseSSL opção, você está se comunicando via PowerShell sobre https. Recomendamos que você sempre use https para se conectar remotamente via PowerShell. Em redes confiáveis, a comunicação remota via PowerShell sobre http é aceitável. Primeiro, você habilita o PowerShell remoto sobre http na interface do usuário local. Em seguida, você pode se conectar à interface do PowerShell do dispositivo usando o procedimento anterior sem a -UseSSL opção.

Se você não estiver usando os certificados (recomendamos que você use os certificados!), você pode ignorar a verificação de validação de certificado usando as opções de sessão: -SkipCACheck -SkipCNCheck -SkipRevocationCheck.

$sessOptions = New-PSSessionOption -SkipCACheck -SkipCNCheck -SkipRevocationCheck 
Enter-PSSession -ComputerName $Name -Credential ~\EdgeUser -ConfigurationName Minishell -UseSSL -SessionOption $sessOptions    

Aqui está um exemplo de saída ao ignorar a verificação de certificado:

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

Na versão atual, você pode se conectar à interface do PowerShell do dispositivo somente por meio de um cliente Windows. A -UseSSL opção não funciona com os clientes Linux.

Criar um pacote de suporte

Se você tiver algum problema de dispositivo, você pode criar um pacote de suporte a partir dos logs do sistema. O Suporte da Microsoft usa este pacote para solucionar os problemas. Siga estas etapas para criar um pacote de suporte:

  1. Conecte-se à interface do PowerShell do seu dispositivo.

  2. Use o Get-HcsNodeSupportPackage comando para criar um pacote de suporte. O uso do cmdlet é o seguinte:

    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>]
    

    O cmdlet coleta logs do seu dispositivo e copia esses logs para uma rede especificada ou compartilhamento local.

    Os parâmetros utilizados são os seguintes:

    • -Path - Especifique a rede ou o caminho local para o qual copiar o pacote de suporte. (necessário)
    • -Credential - Especifique as credenciais para acessar o caminho protegido.
    • -Zip - Especifique para gerar um arquivo zip.
    • -Include - Especificar para incluir os componentes a serem incluídos no pacote de suporte. Se não for especificado, Default é assumido.
    • -IncludeArchived - Especifique para incluir logs arquivados no pacote de suporte.
    • -IncludePeriodicStats - Especifique para incluir logs de estatísticas periódicos no pacote de suporte.

Ver informações do dispositivo

  1. Ligar à interface do PowerShell.

  2. Use o Get-HcsApplianceInfo para obter as informações do seu dispositivo.

    O exemplo a seguir mostra o uso desse 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
    

    Aqui está uma tabela resumindo algumas das informações importantes do dispositivo:

    Parâmetro Description
    FriendlyName O nome amigável do dispositivo, conforme configurado por meio da interface do usuário da Web local durante a implantação do dispositivo. O nome amigável padrão é o número de série do dispositivo.
    SerialNumber O número de série do dispositivo é um número exclusivo atribuído na fábrica.
    Modelo O modelo para seu dispositivo Azure Stack Edge ou Data Box Gateway. O modelo é físico para o Azure Stack Edge e virtual para o Data Box Gateway.
    FriendlySoftwareVersion A cadeia de caracteres amigável que corresponde à versão do software do dispositivo. Para um sistema executando a visualização, a versão de software amigável seria Data Box Edge 1902.
    HcsVersion A versão do software HCS em execução no seu dispositivo. Por exemplo, a versão do software HCS correspondente ao Data Box Edge 1902 é 1.4.771.324.
    LocalCapacityInMb A capacidade local total do dispositivo em Megabits.
    IsRegistered Este valor indica se o seu dispositivo está ativado com o serviço.

Veja as informações do driver da GPU

Se a função de computação estiver configurada em seu dispositivo, você também poderá obter as informações do driver da GPU por meio da interface do PowerShell.

  1. Ligar à interface do PowerShell.

  2. Use o Get-HcsGpuNvidiaSmi para obter as informações do driver da GPU para o seu dispositivo.

    O exemplo a seguir mostra o uso desse cmdlet:

    Get-HcsGpuNvidiaSmi
    

    Anote as informações do driver da saída de exemplo deste 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 |
    +-------------------------------+----------------------+----------------------+
    

Habilitar o MPS (Multi-Process Service, serviço multiprocesso)

Um Multi-Process Service (MPS) em GPUs Nvidia fornece um mecanismo onde as GPUs podem ser compartilhadas por vários trabalhos, onde cada trabalho é alocado uma porcentagem dos recursos da GPU. MPS é um recurso de visualização em seu dispositivo de GPU Azure Stack Edge Pro. Para ativar o MPS no seu dispositivo, siga estes passos:

  1. Antes de começar, certifique-se de que:

    1. Você configurou e ativou seu dispositivo Azure Stack Edge Pro com um recurso do Azure Stack Edge no Azure.
    2. Você configurou a computação neste dispositivo no portal do Azure.
  2. Ligar à interface do PowerShell.

  3. Use o seguinte comando para ativar o MPS no seu dispositivo.

    Start-HcsGpuMPS
    

Nota

Quando o software do dispositivo e o cluster Kubernetes são atualizados, a configuração MPS não é mantida para as cargas de trabalho. Você precisará habilitar o MPS novamente.

Repor o dispositivo

Para repor o seu dispositivo, tem de limpar de forma segura todos os dados do disco de dados e do disco de arranque do seu dispositivo.

Utilize o cmdlet Reset-HcsAppliance para limpar tanto os discos de dados como o disco de arranque ou apenas os discos de dados. Os SecureWipeBootDisk switches e SecureWipeDataDisks permitem que você limpe o disco de inicialização e os discos de dados, respectivamente.

O comutador SecureWipeBootDisk limpa o disco de arranque e torna o dispositivo inutilizável. Só deve utilizá-lo quando tiver de devolver o dispositivo à Microsoft. Para obter mais informações, veja Devolver o dispositivo à Microsoft.

Se utilizar a reposição do dispositivo na IU da Web local, apenas os discos de dados são limpos de forma segura, mas o disco de arranque mantém-se intacto. O disco de arranque contém a configuração do dispositivo.

  1. Ligar à interface do PowerShell.

  2. Na linha de comandos, escreva:

    Reset-HcsAppliance -SecureWipeBootDisk -SecureWipeDataDisks

    O seguinte exemplo mostra como 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
    

Obter logs de computação

Se a função de computação estiver configurada em seu dispositivo, você também poderá obter os logs de computação por meio da interface do PowerShell.

  1. Ligar à interface do PowerShell.

  2. Use o Get-AzureDataBoxEdgeComputeRoleLogs para obter os logs de computação para o seu dispositivo.

    O exemplo a seguir mostra o uso desse cmdlet:

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

    Aqui está uma descrição dos parâmetros usados para o cmdlet:

    • Path: Forneça um caminho de rede para o compartilhamento onde você deseja criar o pacote de log de computação.
    • Credential: Forneça o nome de usuário para o compartilhamento de rede. Ao executar esse cmdlet, você precisará fornecer a senha de compartilhamento.
    • FullLogCollection: Este parâmetro garante que o pacote de log conterá todos os logs de computação. Por padrão, o pacote de log contém apenas um subconjunto de logs.

Alterar perfis de carga de trabalho do Kubernetes

Depois de formar e configurar um cluster e criar novos comutadores virtuais, você pode adicionar ou excluir redes virtuais associadas aos comutadores virtuais. Para obter etapas detalhadas, consulte Configurar comutadores virtuais.

Depois que os comutadores virtuais são criados, você pode habilitar os switches para o tráfego de computação do Kubernetes para especificar um perfil de carga de trabalho do Kubernetes. Para fazer isso usando a interface do usuário local, use as etapas em Configurar IPS de computação. Para fazer isso usando o PowerShell, use as seguintes etapas:

  1. Ligar à interface do PowerShell.

  2. Use o cmdlet para obter as Get-HcsApplianceInfo configurações atuais KubernetesPlatform do KubernetesWorkloadProfile seu dispositivo.

  3. Use o Get-HcsKubernetesWorkloadProfiles cmdlet para identificar os perfis disponíveis em seu 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>
    
  4. Use o Set-HcsKubernetesWorkloadProfile cmdlet para definir o perfil de carga de trabalho para AP5GC, uma solução MEC privada do Azure.

    O exemplo a seguir mostra o uso desse cmdlet:

    Set-HcsKubernetesWorkloadProfile -Type "AP5GC"
    

    Aqui está a saída de exemplo para este cmdlet:

    [10.100.10.10]: PS>KubernetesPlatform : AKS
    [10.100.10.10]: PS>KubernetesWorkloadProfile : AP5GC
    [10.100.10.10]: PS>
    

Alterar sub-redes de serviço e pod do Kubernetes

Se você estiver executando a opção de outras cargas de trabalho em seu ambiente, por padrão, o Kubernetes em seu dispositivo Azure Stack Edge usa as sub-redes 172.27.0.0/16 e 172.28.0.0/16 para pod e serviço, respectivamente. Se essas sub-redes já estiverem em uso na rede, você poderá executar o Set-HcsKubeClusterNetworkInfo cmdlet para alterá-las.

Você deseja executar essa configuração antes de configurar a computação do portal do Azure à medida que o cluster do Kubernetes é criado nesta etapa.

  1. Conecte-se à interface do PowerShell do dispositivo.

  2. Na interface do PowerShell do dispositivo, execute:

    Set-HcsKubeClusterNetworkInfo -PodSubnet <subnet details> -ServiceSubnet <subnet details>

    Substitua os detalhes> da <sub-rede pelo intervalo de sub-redes que você deseja usar.

  3. Depois de executar esse comando, você pode usá-lo Get-HcsKubeClusterNetworkInfo para verificar se as sub-redes pod e service foram alteradas.

Aqui está uma saída de exemplo para 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>

Antes de começar, você deve ter:

Em um dispositivo de GPU do Azure Stack Edge Pro que tenha a função de computação configurada, você pode solucionar problemas ou monitorar o dispositivo usando dois conjuntos diferentes de comandos.

  • Usando iotedge comandos. Estes comandos estão disponíveis para operações básicas para o seu dispositivo.
  • Usando kubectl comandos. Estes comandos estão disponíveis para um conjunto extensivo de operações para o seu dispositivo.

Para executar qualquer um dos comandos acima, você precisa se conectar à interface do PowerShell.

Usar iotedge comandos

Para ver uma lista de comandos disponíveis, conecte-se à interface do PowerShell e use a iotedge função.

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

Commands:
   list
   logs
   restart

[10.100.10.10]: PS>

A tabela a seguir tem uma breve descrição dos comandos disponíveis para iotedge:

comando Description
list Listar módulos
logs Buscar os logs de um módulo
restart Parar e reiniciar um módulo

Listar todos os módulos do IoT Edge

Para listar todos os módulos em execução no seu dispositivo, use o iotedge list comando.

Aqui está uma saída de exemplo deste comando. Este comando lista todos os módulos, a configuração associada e os IPs externos associados aos módulos. Por exemplo, você pode acessar o aplicativo do servidor Web em 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>

Reiniciar módulos

Você pode usar o list comando para listar todos os módulos em execução no seu dispositivo. Em seguida, identifique o nome do módulo que você deseja reiniciar e use-o com o restart comando.

Aqui está uma saída de exemplo de como reiniciar um módulo. Com base na descrição de quanto tempo o módulo está sendo executado, você pode ver que cuda-sample1 foi 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>

Obter logs de módulo

Use o logs comando para obter logs para qualquer módulo do IoT Edge em execução no seu dispositivo.

Se houve um erro na criação da imagem do contêiner ou ao extrair a imagem, execute logs edgeagent. edgeagent é o contêiner de tempo de execução do IoT Edge responsável pelo provisionamento de outros contêineres. Como logs edgeagent despeja todos os logs, uma boa maneira de ver os erros recentes é usar a opção --tail 0'.

Aqui está um exemplo de saída.

[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

Os métodos diretos, como GetModuleLogs ou UploadModuleLogs, não são suportados no IoT Edge no Kubernetes em seu Azure Stack Edge.

Usar comandos kubectl

Em um dispositivo de GPU do Azure Stack Edge Pro que tenha a função de computação configurada, todos os kubectl comandos estão disponíveis para monitorar ou solucionar problemas de módulos. Para ver uma lista de comandos disponíveis, execute kubectl --help a partir da janela 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>

Para obter uma lista abrangente dos kubectl comandos, vá para kubectl cheatsheet.

Para obter IP de serviço ou módulo exposto fora do cluster do Kubernetes

Para obter o IP de um serviço ou módulos de balanceamento de carga expostos fora do Kubernetes, execute o seguinte comando:

kubectl get svc -n iotedge

A seguir está uma saída de exemplo de todos os serviços ou módulos expostos fora do cluster do 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>

O endereço IP na coluna IP externo corresponde ao ponto de extremidade externo do serviço ou do módulo. Você também pode Obter o IP externo no painel do Kubernetes.

Para verificar se o módulo implantado com êxito

Os módulos de computação são contêineres que têm uma lógica de negócios implementada. Um pod do Kubernetes pode ter vários contêineres em execução.

Para verificar se um módulo de computação foi implantado com êxito, conecte-se à interface do PowerShell do dispositivo. Execute o get pods comando e verifique se o contêiner (correspondente ao módulo de computação) está em execução.

Para obter a lista de todos os pods em execução em um namespace específico, execute o seguinte comando:

get pods -n <namespace>

Para verificar os módulos implantados via IoT Edge, execute o seguinte comando:

get pods -n iotedge

A seguir está uma saída de exemplo de todos os pods em execução no iotedge namespace.

[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>

O status Status indica que todos os pods no namespace estão em execução e o Ready indica o número de contêineres implantados em um pod. No exemplo anterior, todos os pods estão em execução e todos os módulos implantados em cada um dos pods estão em execução.

Para verificar os módulos implantados por meio do Azure Arc, execute o seguinte comando:

get pods -n azure-arc

Como alternativa, você pode se conectar ao painel do Kubernetes para ver as implantações do IoT Edge ou do Azure Arc.

Para uma saída mais detalhada de um pod específico para um determinado namespace, você pode executar o seguinte comando:

kubectl describe pod <pod name> -n <namespace>

A saída de exemplo é mostrada aqui.

[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 obter logs de contêiner

Para obter os logs de um módulo, execute o seguinte comando na interface do PowerShell do dispositivo:

kubectl logs <pod_name> -n <namespace> --all-containers

Como all-containers o flag despeja todos os logs de todos os contêineres, uma boa maneira de ver os erros recentes é usar a opção --tail 10.

Segue-se um exemplo de saída.

[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>

Alterar a memória e os limites do processador para o nó de trabalho do Kubernetes

Para alterar os limites de memória ou processador para o nó de trabalho do Kubernetes, execute as seguintes etapas:

  1. Conecte-se à interface do PowerShell do dispositivo.

  2. Para obter os recursos atuais para o nó de trabalho e as opções de função, execute o seguinte comando:

    Get-AzureDataBoxEdgeRole

    Aqui está um exemplo de saída. Observe os valores para Name e Compute sob Resources a seção. MemoryInBytes e ProcessorCount denotar os valores atualmente atribuídos memória e contagem de processador para o nó de trabalho do 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>
    
  3. Para alterar os valores de memória e processadores para o nó de trabalho, execute o seguinte comando:

    Set-AzureDataBoxEdgeRoleCompute -Name <Name value from the output of Get-AzureDataBoxEdgeRole> -Memory <Value in Bytes> -ProcessorCount <No. of cores>
    

    Aqui está um exemplo de saída.

    [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>    
    

Ao alterar o uso da memória e do processador, siga estas diretrizes.

  • A memória padrão é 25% da especificação do dispositivo.
  • A contagem de processadores padrão é de 30% da especificação do dispositivo.
  • Ao alterar os valores das contagens de memória e processador, recomendamos que você varie os valores entre 15% a 60% da memória do dispositivo e da contagem do processador.
  • Recomendamos um limite máximo de 60% para que haja recursos suficientes para os componentes do sistema.

Conecte-se à BMC

Nota

O controlador de gerenciamento de placa base (BMC) não está disponível no Azure Stack Edge Pro 2 e no Azure Stack Edge Mini R. Os cmdlets descritos nesta seção só se aplicam à GPU do Azure Stack Edge Pro e ao Azure Stack Edge Pro R.

O BMC é usado para monitorar e gerenciar remotamente seu dispositivo. Esta seção descreve os cmdlets que podem ser usados para gerenciar a configuração do BMC. Antes de executar qualquer um desses cmdlets, conecte-se à interface do PowerShell do dispositivo.

  • Get-HcsNetBmcInterface: Use este cmdlet para obter as propriedades de configuração de rede do BMC, por exemplo, IPv4Address, , IPv4Gateway, DhcpEnabledIPv4SubnetMask.

    Eis uma saída de exemplo:

    [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: Você pode usar esse cmdlet das duas maneiras a seguir.

    • Use o cmdlet para habilitar ou desabilitar a configuração DHCP para BMC usando o valor apropriado para UseDhcp o parâmetro.

      Set-HcsNetBmcInterface -UseDhcp $true
      

      Eis uma saída de exemplo:

      [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 configurar a configuração estática para o BMC. Você pode especificar os valores para IPv4Address, IPv4Gatewaye IPv4SubnetMask.

      Set-HcsNetBmcInterface -IPv4Address "<IPv4 address of the device>" -IPv4Gateway "<IPv4 address of the gateway>" -IPv4SubnetMask "<IPv4 address for the subnet mask>"
      

      Eis uma saída de exemplo:

      [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 a senha do BMC para EdgeUser. O nome de usuário - EdgeUser- diferencia maiúsculas de minúsculas.

    Eis uma saída de exemplo:

    [10.100.10.10]: PS> Set-HcsBmcPassword -NewPassword "Password1"
    [10.100.10.10]: PS>
    

Sair da sessão remota

Para sair da sessão remota do PowerShell, feche a janela do PowerShell.

Próximos passos

  • Implante a GPU do Azure Stack Edge Pro no portal do Azure.