Gerenciar um dispositivo GPU do Azure Stack Edge Pro por meio do Windows PowerShell
APLICA-SE A: Azure Stack Edge Pro - GPUAzure Stack Edge Pro 2Azure Stack Edge Pro RAzure 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 emC:\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.
Execute uma sessão do Windows PowerShell como administrador.
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.
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.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
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.
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:
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
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.
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:
Antes de começar, certifique-se de que:
- Você configurou e ativou seu dispositivo Azure Stack Edge Pro com um recurso do Azure Stack Edge no Azure.
- Você configurou a computação neste dispositivo no portal do Azure.
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.
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.
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:
Use o cmdlet para obter as
Get-HcsApplianceInfo
configurações atuaisKubernetesPlatform
doKubernetesWorkloadProfile
seu dispositivo.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>
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.
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.
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>
Depurar problemas do Kubernetes relacionados ao IoT Edge
Antes de começar, você deve ter:
- Rede de computação configurada. Consulte Tutorial: Configurar rede para o Azure Stack Edge Pro com GPU.
- Função de computação configurada no seu dispositivo.
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:
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
eCompute
sobResources
a seção.MemoryInBytes
eProcessorCount
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>
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
,DhcpEnabled
IPv4SubnetMask
.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
,IPv4Gateway
eIPv4SubnetMask
.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 paraEdgeUser
. 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.