Gerir um dispositivo GPU Pro Azure Stack Edge através de Windows PowerShell

APLICA-SE A:Yes for Pro GPU SKU Azure Stack Edge Pro - GPUAzureYes for Pro 2 SKU Stack Edge Pro 2AzureYes for Pro R SKU Stack Edge Pro RAzureYes for Mini R SKU Stack Edge Mini R

A solução GPU Azure Stack Edge Pro permite processar dados e enviá-lo pela rede para o Azure. Este artigo descreve algumas das tarefas de configuração e gestão para o seu dispositivo GPU Azure Stack Edge Pro. Pode utilizar a portal do Azure, a web UI local ou a interface Windows PowerShell para gerir o seu dispositivo.

Este artigo foca-se na forma como pode ligar-se à interface PowerShell do dispositivo e às tarefas que pode fazer utilizando esta interface.

Ligue-se à interface do PowerShell

Dependendo do sistema operativo do cliente, os procedimentos para ligar remotamente ao dispositivo são diferentes.

Ligação remota de um cliente Windows

Pré-requisitos

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

  • O seu cliente Windows está a correr Windows PowerShell 5.0 ou mais tarde.

  • O seu cliente Windows tem a corrente de assinatura (certificado raiz) correspondente ao certificado de nó instalado no dispositivo. Para obter instruções detalhadas, consulte o certificado de instalação no seu Windows cliente.

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

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

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

    10.100.10.10 1HXQG13.wdshcsso.com

Passos detalhados

Siga estes passos para ligar remotamente a partir de um cliente Windows.

  1. Executar uma sessão de Windows PowerShell como administrador.

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

    winrm quickconfig
    

    Para obter mais informações, consulte a instalação e a configuração para Windows Gestão Remota.

  3. Atribua uma variável à cadeia de ligação utilizada no hosts ficheiro.

    $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. Pode obter os valores do número de série do nó na página de Certificados e no domínio DNS a partir da página dispositivo na UI web local do seu dispositivo.

  4. Para adicionar esta cadeia de ligação para o seu dispositivo à lista de anfitriões fidedignos do cliente, digite o seguinte comando:

    Set-Item WSMan:\localhost\Client\TrustedHosts $Name -Concatenate -Force
    
  5. Inicie uma sessão de 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ó enviado para o seu dispositivo também está instalada no cliente que acede ao seu dispositivo.

  6. Forneça a palavra-passe quando solicitado. Use a mesma palavra-passe que é usada para iniciar súm na UI web local. A senha de acesso web local padrão é Password1. Quando se liga com sucesso ao dispositivo utilizando o PowerShell remoto, vê a seguinte saída da amostra:

    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>
    

Quando utiliza a opção -UseSSL , está a remoe através do PowerShell em https. Recomendamos que utilize sempre https para ligar remotamente através do PowerShell. Dentro de redes fidedignas, a remoesso através do PowerShell em http é aceitável. Primeiro, ativa o PowerShell remoto em http na UI local. Em seguida, pode ligar-se à interface PowerShell do dispositivo utilizando o procedimento anterior sem a opção -UseSSL .

Se não estiver a utilizar os certificados (recomendamos que utilize os certificados!), pode ignorar a verificação de validação do certificado utilizando 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á uma saída de exemplo ao saltar 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, pode ligar-se à interface PowerShell do dispositivo apenas através de um Windows cliente. A -UseSSL opção não funciona com os clientes Linux.

Criar um pacote de suporte

Se sentir algum problema com o dispositivo, pode criar um pacote de suporte a partir dos registos do sistema. Suporte da Microsoft usa este pacote para resolver problemas. Siga estes passos para criar um pacote de suporte:

  1. Ligação à interface PowerShell do seu dispositivo.

  2. Utilize o Get-HcsNodeSupportPackage comando para criar um pacote de suporte. A utilização do cmdlet é a 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 recolhe registos do seu dispositivo e copia esses registos para uma rede especificada ou partilha local.

    Os parâmetros utilizados são os seguintes:

    • -Path - Especifique a rede ou o caminho local para copiar o pacote de suporte para. (obrigatório)
    • -Credential - Especificar as credenciais para aceder ao caminho protegido.
    • -Zip - Especificar para gerar um ficheiro zip.
    • -Include - Especificar para incluir os componentes a incluir no pacote de suporte. Se não for especificado, Default é assumido.
    • -IncludeArchived - Especificar para incluir registos arquivados no pacote de suporte.
    • -IncludePeriodicStats - Especificar para incluir registos periódicos de estatísticas no pacote de suporte.

Ver informações do dispositivo

  1. Ligação à interface PowerShell.

  2. Use o Get-HcsApplianceInfo para obter a informação para o seu dispositivo.

    O exemplo a seguir mostra a utilização 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 configurado através da UI web local durante a implementação do dispositivo. O nome padrão amigável é o número de série do dispositivo.
    SerialNumber O número de série do dispositivo é um número único atribuído na fábrica.
    Modelação O modelo para o seu dispositivo Azure Stack Edge ou Data Box Gateway. O modelo é físico para Azure Stack Edge e virtual para Data Box Gateway.
    FriendlySoftwareVersion A cadeia 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 de software HCS em execução no seu dispositivo. Por exemplo, a versão de software HCS correspondente ao Data Box Edge 1902 é de 1.4.771.324.
    Capacidade LocalInMb A capacidade local total do dispositivo em Megabits.
    IsRegistered Este valor indica se o seu dispositivo está ativado com o serviço.

Ver informações do condutor da GPU

Se a função de cálculo estiver configurada no seu dispositivo, também pode obter a informação do controlador GPU através da interface PowerShell.

  1. Ligação à interface PowerShell.

  2. Use o Get-HcsGpuNvidiaSmi para obter a informação do condutor da GPU para o seu dispositivo.

    O exemplo a seguir mostra a utilização deste cmdlet:

    Get-HcsGpuNvidiaSmi
    

    Tome nota das informações do condutor a partir da saída da amostra 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 |
    +-------------------------------+----------------------+----------------------+
    

Ativar o serviço multi-processo (MPS)

Um Serviço Multi-Processo (MPS) em GPUs da Nvidia fornece um mecanismo onde as GPUs podem ser partilhadas por múltiplos empregos, onde cada trabalho é atribuído em alguma percentagem dos recursos da GPU. MPS é uma funcionalidade de pré-visualização no seu dispositivo 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. Configuraste e Ativaste o teu dispositivo Azure Stack Edge Pro com um recurso Azure Stack Edge em Azure.
    2. Configurou o cálculo deste dispositivo no portal do Azure.
  2. Ligação à interface PowerShell.

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

    Start-HcsGpuMPS
    

Nota

Quando o software do dispositivo e o cluster Kubernetes são atualizados, a definição de MPS não é retida para as cargas de trabalho. Terá de voltar a ativar o MPS.

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 Reset-HcsAppliance cmdlet para eliminar tanto os discos de dados como o disco de arranque ou apenas os discos de dados. Os SecureWipeBootDisk interruptores permitem SecureWipeDataDisks limpar o disco de arranque e os discos de dados, respectivamente.

O SecureWipeBootDisk interruptor 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, consulte 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. Ligação à interface PowerShell.

  2. Na linha de comandos, escreva:

    Reset-HcsAppliance -SecureWipeBootDisk -SecureWipeDataDisks

    O exemplo a seguir 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
    

Obtenha registos de cálculo

Se a função de cálculo estiver configurada no seu dispositivo, também pode obter os registos de cálculo através da interface PowerShell.

  1. Ligação à interface PowerShell.

  2. Utilize o Get-AzureDataBoxEdgeComputeRoleLogs para obter os registos computacional do seu dispositivo.

    O exemplo a seguir mostra a utilização deste cmdlet:

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

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

    • Path: Providenciar um caminho de rede para a partilha onde pretende criar o pacote de registo de cálculo.
    • Credential: Forneça o nome de utilizador para a partilha de rede. Quando executar este cmdlet, terá de fornecer a senha de partilha.
    • FullLogCollection: Este parâmetro assegura que a embalagem de registo conterá todos os registos computatórios. Por predefinição, o pacote de registos contém apenas um subconjunto de registos.

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

Por predefinição, kubernetes no seu dispositivo Azure Stack Edge utiliza sub-redes 172.27.0.0/16 e 172.28.0.0/16 para pod e serviço respectivamente. Se estas subnetas já estiverem a ser utilizadas na sua rede, então pode executar o Set-HcsKubeClusterNetworkInfo cmdlet para alterar estas sub-redes.

Pretende executar esta configuração antes de configurar o cálculo a partir do portal do Azure à medida que o cluster Kubernetes é criado neste passo.

  1. Ligação à interface PowerShell do dispositivo.

  2. A partir da interface PowerShell do dispositivo, executar:

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

    Substitua os detalhes> da <sub-rede pela gama de sub-redes que pretende utilizar.

  3. Uma vez executado este comando, pode utilizar o Get-HcsKubeClusterNetworkInfo comando para verificar se as sub-redes de pod e serviço mudaram.

Aqui está uma amostra de saída 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, deve ter:

Num dispositivo GPU Azure Stack Edge Pro que tenha a função computacional configurada, pode resolver problemas ou monitorizar o dispositivo utilizando 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 vasto conjunto de operações para o seu dispositivo.

Para executar qualquer um dos comandos acima, é necessário Ligação à interface PowerShell.

Use iotedge comandos

Para ver uma lista de comandos disponíveis, ligue-se à interface PowerShell e utilize 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:

command Description
list Listar módulos
logs Pegue os troncos de um módulo
restart Parar e reiniciar um módulo

Listar todos os módulos IoT Edge

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

Aqui está uma amostra de saída deste comando. Este comando lista todos os módulos, configuração associada e os IPs externos associados aos módulos. Por exemplo, pode aceder à aplicação 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

Pode utilizar o list comando para listar todos os módulos em execução no seu dispositivo. Em seguida, identifique o nome do módulo que pretende reiniciar e usá-lo com o restart comando.

Aqui está uma amostra de como reiniciar um módulo. Com base na descrição de quanto tempo o módulo está a funcionar, 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>

Obtenha registos de módulos

Utilize o logs comando para obter registos para qualquer IoT Edge módulo em funcionamento no seu dispositivo.

Se houve um erro na criação da imagem do contentor ou ao puxar a imagem, corra logs edgeagent. edgeagenté o IoT Edge recipiente de tempo de execução que é responsável pelo provisionamento de outros contentores. Porque logs edgeagent despeja todos os registos, uma boa maneira de ver os erros recentes é usar a opção --tail 0'.

Aqui está uma amostra 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 tais como GetModuleLogs ou UploadModuleLogs não são suportados em IoT Edge em Kubernetes no seu Azure Stack Edge.

Use comandos kubectl

Num dispositivo GPU Azure Stack Edge Pro que tem a função de computação configurada, todos os kubectl comandos estão disponíveis para monitorizar ou resolver problemas. Para ver uma lista de comandos disponíveis, corra kubectl --help a partir da 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 uma lista completa dos kubectl comandos, vá para a kubectl batoteira.

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

Para obter o IP de um serviço de equilíbrio de carga ou módulos expostos fora dos Kubernetes, executar o seguinte comando:

kubectl get svc -n iotedge

Segue-se uma saída de amostra de todos os serviços ou módulos expostos fora do cluster 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 Externa corresponde ao ponto final externo para o serviço ou para o módulo. Também pode obter o IP externo no painel Kubernetes.

Para verificar se o módulo foi implantado com sucesso

Os módulos computacional são contentores que têm uma lógica de negócio implementada. Uma cápsula Kubernetes pode ter vários contentores em funcionamento.

Para verificar se um módulo computacional é implantado com sucesso, ligue-se à interface PowerShell do dispositivo. Executar o get pods comando e verificar se o recipiente (correspondente ao módulo de cálculo) está em funcionamento.

Para obter a lista de todas as cápsulas em execução num espaço de nome específico, executar o seguinte comando:

get pods -n <namespace>

Para verificar os módulos implantados através de IoT Edge, executar o seguinte comando:

get pods -n iotedge

Segue-se uma saída de amostra de todas as cápsulas que correm no espaço de iotedge nomes.

[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 estado indica que todas as cápsulas do espaço de nome estão em funcionamento e o Ready indica o número de contentores implantados numa vagem. Na amostra anterior, todas as cápsulas estão em funcionamento e todos os módulos implantados em cada uma das cápsulas estão em funcionamento.

Para verificar os módulos implantados através do Arco Azure, execute o seguinte comando:

get pods -n azure-arc

Em alternativa, pode Ligação ao painel de instrumentos de Kubernetes para ver IoT Edge ou implementações do Arco Azure.

Para uma saída mais verbosa de uma cápsula específica para um determinado espaço de nome, pode executar o seguinte comando:

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

A saída da amostra é 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 troncos de contentores

Para obter os registos de um módulo, executar o seguinte comando a partir da interface PowerShell do dispositivo:

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

Como all-containers a bandeira despeja todos os troncos para todos os contentores, uma boa maneira de ver os erros recentes é usar a opção --tail 10.

Segue-se uma saída de amostra.

[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 do nó de trabalhador kubernetes, faça os seguintes passos:

  1. Ligação à interface PowerShell do dispositivo.

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

    Get-AzureDataBoxEdgeRole

    Aqui está uma amostra de saída. Note os valores para e Compute para Name a Resources secção. MemoryInBytes e ProcessorCount denotar os valores atualmente atribuídos a memória e a contagem de processador para o nó de trabalhador 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 da memória e dos processadores para o nó do trabalhador, executar o seguinte comando:

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

    Aqui está uma amostra 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 utilização da memória e do processador, siga estas diretrizes.

  • A memória predefinida é de 25% da especificação do dispositivo.
  • A contagem de processadores predefinidos é de 30% da especificação do dispositivo.
  • Ao alterar os valores da memória e da conta do processador, recomendamos que varie os valores entre 15% e 60% da memória do dispositivo e a contagem do processador.
  • Recomendamos que um limite superior de 60% seja para que haja recursos suficientes para os componentes do sistema.

Ligação para a BMC

O controlador de gestão do rodapé (BMC) é utilizado para monitorizar e gerir remotamente o seu dispositivo. Esta secção descreve os cmdlets que podem ser utilizados para gerir a configuração do BMC. Antes de executar qualquer um destes cmdlets, Ligação à interface PowerShell do dispositivo.

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

    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: Pode utilizar este cmdlet de duas formas.

    • Utilize o cmdlet para ativar ou desativar a configuração dhcp para BMC utilizando o valor adequado 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>
      
    • Utilize este cmdlet para configurar a configuração estática para o BMC. 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: Utilize este cmdlet para modificar a palavra-passe BMC para EdgeUser. O nome de EdgeUserutilizador é sensível a casos.

    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 powerShell, feche a janela PowerShell.

Passos seguintes