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 do Azure Stack Edge Pro permite processar dados e enviá-los ao Azure pela rede. Este artigo descreve algumas das tarefas de configuração e gerenciamento de um dispositivo GPU do Azure Stack Edge Pro. Você pode usar o portal do Azure, a IU 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 realizar usando essa interface.

Conectar-se à interface do PowerShell

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

Remotamente, conecte-se usando um cliente do Windows

Pré-requisitos

Antes de começar, verifique se:

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

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

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

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

    Veja a seguir uma entrada de exemplo do arquivo hosts:

    10.100.10.10 1HXQG13.wdshcsso.com

Etapas detalhadas

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

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

  2. Verifique se o serviço de Gerenciamento Remoto do Windows está em execução no cliente. No prompt de comando, digite:

    winrm quickconfig
    

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

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

    $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 pelo 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 do domínio DNS na página Dispositivo na interface do usuário da Web local do seu dispositivo.

  4. Para adicionar a 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 você vir um erro relacionado à relação de confiança, verifique se a cadeia de assinatura do certificado de nó carregado no dispositivo também está instalada no cliente que está acessando seu dispositivo.

  6. Forneça a senha quando solicitada. Use a mesma senha usada para entrar na IU da Web local. A senha da IU da web local padrão é Password1. Ao se conectar com êxito ao dispositivo usando o PowerShell remoto, você verá o seguinte exemplo de saída:

    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 opção -UseSSL, você estará em comunicação remota por meio do PowerShell por https. Recomendamos que você sempre use https para se conectar remotamente por meio do PowerShell. Em redes confiáveis, a comunicação remota com o PowerShell via http é aceitável. Primeiro, você deve habilitar o PowerShell remoto via http na interface do usuário local. Em seguida, você pode se conectar à interface do PowerShell do dispositivo usando o procedimento anterior sem a opção -UseSSL.

Se você não estiver usando os certificados (recomendamos que você use os certificados!), poderá ignorar a verificação de validação do 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 do 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 opção -UseSSL não funciona com os clientes Linux.

Criar um pacote de suporte

Se você tiver problemas com o dispositivo, 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 comando Get-HcsNodeSupportPackage para criar um pacote de suporte. O uso do cmdlet é como segue:

    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 específica ou compartilhamento local.

    Os parâmetros usados são os seguintes:

    • -Path - Especifique a rede ou o caminho local para onde copiar o pacote de suporte. (obrigatório)
    • -Credential - Especifique as credenciais para acessar o caminho protegido.
    • -Zip - Especifique para gerar um arquivo zip.
    • -Include - Especifique 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 periódicos de estatísticas no pacote de suporte.

Exibir informações do dispositivo

  1. Conectar-se à interface do PowerShell.

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

    O exemplo a seguir mostra o uso deste 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 que resume algumas das informações importantes do dispositivo:

    Parâmetro Descrição
    FriendlyName O nome amigável do dispositivo, conforme configurado por meio da IU 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.
    Modelar 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 uma pré-visualização do sistema em execução, a versão amigável do software 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.

Exibir informações do driver de GPU

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

  1. Conectar-se à interface do PowerShell.

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

    O exemplo a seguir mostra o uso deste cmdlet:

    Get-HcsGpuNvidiaSmi
    

    Anote as informações do driver da amostra de saída 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 Serviço de Vários Processos (MPS)

Nos GPUs Nvidia, um serviço de vários processos (MPS) fornece um mecanismo no qual as GPUs podem ser compartilhadas por vários trabalhos. Para cada trabalho é alocado algum percentual dos recursos da GPU. O MPS é um recurso de visualização prévia no dispositivo GPU do Azure Stack Edge Pro. Siga estas etapas para habilitar o MPS em seu dispositivo:

  1. Antes de começar, verifique se:

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

  3. Use o comando a seguir para habilitar o MPS no seu dispositivo.

    Start-HcsGpuMPS
    

Observação

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

Redefinir o seu dispositivo

Para redefinir o dispositivo, você precisa apagar com segurança todos os dados no disco de dados e no disco de inicialização do dispositivo.

Use o cmdlet Reset-HcsAppliance para apagar os discos de dados e o disco de inicialização ou apenas os discos de dados. As opções SecureWipeBootDisk e SecureWipeDataDisks permitem apagar os discos de dados e o disco de inicialização, respectivamente.

A opção SecureWipeBootDisk apaga o disco de inicialização e torna o dispositivo inutilizável. Ela deverá ser usada somente quando o dispositivo precisar ser devolvido à Microsoft. Para obter mais informações, confira Devolver o dispositivo à Microsoft.

Se você usar a redefinição do dispositivo na IU da Web local, somente os discos de dados serão apagados com segurança, mas o disco de inicialização permanecerá intacto. O disco de inicialização contém a configuração do dispositivo.

  1. Conectar-se à interface do PowerShell.

  2. No prompt de comando, digite:

    Reset-HcsAppliance -SecureWipeBootDisk -SecureWipeDataDisks

    O seguinte exemplo mostra como usar 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. Conectar-se à interface do PowerShell.

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

    O exemplo a seguir mostra o uso deste 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 no qual você deseja criar o pacote de log de computação.
    • Credential: forneça o nome de usuário para o compartilhamento de rede. Quando você executar esse cmdlet, será necessário fornecer a senha de compartilhamento.
    • FullLogCollection: esse 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 seus comutadores virtuais. Para obter etapas detalhadas, confira Configurar comutadores virtuais.

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

  1. Conectar-se à interface do PowerShell.

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

  3. Use o cmdlet Get-HcsKubernetesWorkloadProfiles 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 cmdlet Set-HcsKubernetesWorkloadProfile para definir o perfil de carga de trabalho para AP5GC, uma solução de MEC privado do Azure.

    O exemplo a seguir mostra o uso deste cmdlet:

    Set-HcsKubernetesWorkloadProfile -Type "AP5GC"
    

    Veja a saída de exemplo para esse cmdlet:

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

Mudar o pod do Kubernetes e as sub-redes de serviço

Se você estiver executando a opção de outras cargas de trabalho em seu ambiente, por padrão, o Kubernetes no dispositivo Azure Stack Edge usará 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 sua rede, você pode alterá-las usando o cmdlet Set-HcsKubeClusterNetworkInfo.

É recomendável executar essa configuração antes de configurar a computação do portal do Azure, visto que o cluster do Kubernetes é criado nesta etapa.

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

  2. Na interface do PowerShell, execute:

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

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

  3. Depois de executar esse comando, você pode usar o comando Get-HcsKubeClusterNetworkInfo para verificar se as sub-redes de pod e de serviço foram alteradas.

Veja a seguir um exemplo de saída deste 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ê precisa ter:

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

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

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

Usar os comandos do iotedge

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

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

command Descrição
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 em seu dispositivo, use o comando iotedge list.

Veja a seguir um exemplo de saída deste comando. Esse 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 webserver 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

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

Aqui está um exemplo de saída de como reiniciar um módulo. Com base na descrição de quanto tempo o módulo está em execução, é possível 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 comando logs para obter logs de qualquer módulo do IOT Edge em execução em seu dispositivo.

Se houver um erro na criação da imagem de contêiner ou durante a extração da imagem, execute logs edgeagent. edgeagent é o contêiner de runtime do IoT Edge que é responsável por provisionar outros contêineres. Como o 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>

Observação

Os métodos diretos, como GetModuleLogs ou UploadModuleLogs, não são compatíveis com o IoT Edge em Kubernetes no Azure Stack Edge.

Usar comandos do kubectl

Em um dispositivo GPU do Azure Stack Edge Pro que tem a função de computação configurada, todos os comandos kubectl estão disponíveis para monitorar ou solucionar problemas de módulos. Para ver uma lista de comandos disponíveis, execute kubectl --help na janela de comando.

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 comandos kubectl, acesse kubectlfolha de referência.

Obter o IP de um serviço ou módulo exposto fora do cluster do Kubernetes

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

kubectl get svc -n iotedge

Veja a seguir uma amostra de saída 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.

Verificar se o módulo foi 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 comando get pods e verifique se o contêiner (correspondente ao módulo de computação) está em execução.

Para uma 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 por meio do IoT Edge, execute o seguinte comando:

get pods -n iotedge

Veja a seguir uma amostra de saída de todos os pods em execução no namespace 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>

O status Status indica que todos os pods no namespace estão em execução, e o status Pronto 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 Conectar-se ao painel do Kubernetes para consultar implantações do IoT Edge ou do Azure Arc.

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

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

Um exemplo de saída é mostrado abaixo.

[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 o sinalizador all-containers despeja todos os logs de todos os contêineres, uma boa maneira de ver os erros recentes é usando a opção --tail 10.

Veja o exemplo de saída a seguir.

[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 memória, 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, faça 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 de Name e Compute na seção Resources. MemoryInBytes e ProcessorCount representam os valores de memória e de contagem de processadores atribuídos ao nó de trabalho do Kubernetes no momento.

    [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 a memória e o uso do processador, siga estas diretrizes.

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

Conectar ao BMC

Observação

O controlador BMC não está disponível no Azure Stack Edge Pro 2 e no Azure Stack Edge Mini R. Os cmdlets descritos nessa seção se aplicam somente à 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, IPv4SubnetMask, DhcpEnabled.

    Aqui está uma amostra de saída:

    [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 este cmdlet das duas maneiras a seguir.

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

      Set-HcsNetBmcInterface -UseDhcp $true
      

      Aqui está uma amostra de saída:

      [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 do BMC. É possível especificar os valores de IPv4Address, IPv4Gateway, e IPv4SubnetMask.

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

      Aqui está uma amostra de saída:

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

    Aqui está uma amostra de saída:

    [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óximas etapas