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 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 emC:\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.
Execute uma sessão do Windows PowerShell como administrador.
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.
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.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
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.
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:
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
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.
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:
Antes de começar, verifique se:
- Você configurou e ativou o seu dispositivo Azure Stack Edge Pro com um recurso Azure Stack Edge no Azure.
- Você configurou a computação nesse dispositivo no portal do Azure.
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.
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.
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:
Use o cmdlet
Get-HcsApplianceInfo
para obter as configuraçõesKubernetesPlatform
eKubernetesWorkloadProfile
atuais para seu dispositivo.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>
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.
Conecte-se à interface do PowerShell do dispositivo.
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.
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>
Depurar problemas do Kubernetes relacionados ao IoT Edge
Antes de começar, você precisa ter:
- Rede de computação configurada. Consulte o Tutorial: configurar a rede para o Azure Stack Edge Pro com GPU.
- Função de computação configurada em seu dispositivo.
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 kubectl
folha 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:
Conecte-se à interface do PowerShell do dispositivo.
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
eCompute
na seçãoResources
.MemoryInBytes
eProcessorCount
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>
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
, eIPv4SubnetMask
.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 paraEdgeUser
. 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
- Implante o GPU do Azure Stack Edge Pro no portal do Azure.