Gestire un dispositivo AZURE Stack Edge Pro GPU tramite Windows PowerShell
SI APPLICA A:Azure Stack Edge Pro - GPUAzure Stack Edge Pro 2Azure Stack Edge Pro RAzure Stack Edge Mini R
La soluzione GPU Azure Stack Edge Pro consente di elaborare i dati e inviarli in rete ad Azure. Questo articolo descrive alcune delle attività di configurazione e gestione per il dispositivo AZURE Stack Edge Pro GPU. È possibile usare il portale di Azure, l'interfaccia utente Web locale o l'interfaccia di Windows PowerShell per gestire il dispositivo.
Questo articolo è incentrato su come connettersi all'interfaccia di PowerShell del dispositivo e sulle attività che è possibile eseguire usando questa interfaccia.
Connettersi all'interfaccia di PowerShell
A seconda del sistema operativo del client, le procedure per la connessione remota al dispositivo sono diverse.
Connettersi in remoto da un client Windows
Prerequisiti
Prima di iniziare, verificare che:
Il client Windows esegue Windows PowerShell 5.0 o versione successiva.
Il client Windows ha la catena di firma (certificato radice) corrispondente al certificato del nodo installato nel dispositivo. Per istruzioni dettagliate, vedere Installare il certificato nel client Windows.
Il
hosts
file che si trova inC:\Windows\System32\drivers\etc
per il client Windows ha una voce corrispondente al certificato del nodo nel formato seguente:<Device IP> <Node serial number>.<DNS domain of the device>
Di seguito è riportato un esempio di voce per il
hosts
file:10.100.10.10 1HXQG13.wdshcsso.com
Procedura dettagliata
Seguire questa procedura per connettersi in remoto da un client Windows.
Eseguire una sessione di Windows PowerShell come amministratore.
Assicurarsi che il servizio Gestione remota Windows sia in esecuzione nel client. Al prompt dei comandi digitare:
winrm quickconfig
Per altre informazioni, vedere Installazione e configurazione per Gestione remota Windows.
Assegnare una variabile al stringa di connessione usato nel
hosts
file.$Name = "<Node serial number>.<DNS domain of the device>"
Sostituire
<Node serial number>
e<DNS domain of the device>
con il numero di serie del nodo e il dominio DNS del dispositivo. È possibile ottenere i valori per il numero di serie del nodo dalla pagina Certificati e dal dominio DNS dalla pagina Dispositivo nell'interfaccia utente Web locale del dispositivo.Per aggiungere questo stringa di connessione per il dispositivo all'elenco di host attendibili del client, digitare il comando seguente:
Set-Item WSMan:\localhost\Client\TrustedHosts $Name -Concatenate -Force
Avviare una sessione di Windows PowerShell nel dispositivo:
Enter-PSSession -ComputerName $Name -Credential ~\EdgeUser -ConfigurationName Minishell -UseSSL
Se viene visualizzato un errore correlato alla relazione di trust, verificare se anche la catena di firma del certificato del nodo caricato nel dispositivo viene installata nel client che accede al dispositivo.
Specificare la password quando richiesto. Usare la stessa password usata per accedere all'interfaccia utente Web locale. La password predefinita dell'interfaccia utente Web locale è Password1. Quando si esegue correttamente la connessione al dispositivo usando PowerShell remoto, viene visualizzato l'output di esempio seguente:
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 si usa l'opzione , si esegue la -UseSSL
comunicazione remota tramite PowerShell tramite https. È consigliabile usare sempre https per connettersi in remoto tramite PowerShell. All'interno di reti attendibili, la comunicazione remota tramite PowerShell su HTTP è accettabile. Prima di tutto si abilita PowerShell remoto su http nell'interfaccia utente locale. È quindi possibile connettersi all'interfaccia di PowerShell del dispositivo usando la procedura precedente senza l'opzione -UseSSL
.
Se non si usano i certificati (è consigliabile usare i certificati!), è possibile ignorare il controllo di convalida del certificato usando le opzioni di sessione: -SkipCACheck -SkipCNCheck -SkipRevocationCheck
.
$sessOptions = New-PSSessionOption -SkipCACheck -SkipCNCheck -SkipRevocationCheck
Enter-PSSession -ComputerName $Name -Credential ~\EdgeUser -ConfigurationName Minishell -UseSSL -SessionOption $sessOptions
Di seguito è riportato un esempio di output quando si ignora il controllo del certificato:
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
Nella versione corrente è possibile connettersi all'interfaccia di PowerShell del dispositivo solo tramite un client Windows. L'opzione -UseSSL
non funziona con i client Linux.
Creare un pacchetto di supporto
Se si verificano problemi di dispositivo, è possibile creare un pacchetto di supporto dai log di sistema. supporto tecnico Microsoft usa questo pacchetto per risolvere i problemi. Per creare un pacchetto di supporto, seguire questa procedura:
Usare il
Get-HcsNodeSupportPackage
comando per creare un pacchetto di supporto. L'utilizzo del cmdlet è il seguente: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>]
Il cmdlet raccoglie i log dal dispositivo e copia tali log in una rete o in una condivisione locale specificata.
I parametri usati sono i seguenti:
-Path
- Specificare la rete o il percorso locale in cui copiare il pacchetto di supporto. (obbligatorio)-Credential
- Specificare le credenziali per accedere al percorso protetto.-Zip
- Specificare per generare un file ZIP.-Include
- Specificare di includere i componenti da includere nel pacchetto di supporto. Se non specificato,Default
viene utilizzato .-IncludeArchived
- Specificare per includere i log archiviati nel pacchetto di supporto.-IncludePeriodicStats
- Specificare per includere i log stat periodici nel pacchetto di supporto.
Visualizzare le informazioni sul dispositivo
Get-HcsApplianceInfo
Usare per ottenere le informazioni per il dispositivo.L'esempio seguente illustra l'utilizzo di questo 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
Ecco una tabella che riepiloga alcune delle informazioni importanti sul dispositivo:
Parametro Descrizione FriendlyName Nome descrittivo del dispositivo configurato tramite l'interfaccia utente Web locale durante la distribuzione del dispositivo. Il nome descrittivo predefinito è il numero di serie del dispositivo. SerialNumber Il numero di serie del dispositivo è un numero univoco assegnato alla factory. Modello Modello per il dispositivo Azure Stack Edge o Data Box Gateway. Il modello è fisico per Azure Stack Edge e virtuale per Data Box Gateway. FriendlySoftwareVersion Stringa descrittiva che corrisponde alla versione del software del dispositivo. Per un'anteprima di sistema in esecuzione, la versione software descrittiva sarebbe Data Box Edge 1902. HcsVersion Versione del software HCS in esecuzione nel dispositivo. Ad esempio, la versione del software HCS corrispondente a Data Box Edge 1902 è 1.4.771.324. LocalCapacityInMb Capacità locale totale del dispositivo in Megabit. IsRegistered Questo valore indica se il dispositivo è attivato con il servizio.
Visualizzare le informazioni sui driver GPU
Se il ruolo di calcolo è configurato nel dispositivo, è anche possibile ottenere le informazioni sul driver GPU tramite l'interfaccia di PowerShell.
Get-HcsGpuNvidiaSmi
Usare per ottenere le informazioni sul driver GPU per il dispositivo.L'esempio seguente illustra l'utilizzo di questo cmdlet:
Get-HcsGpuNvidiaSmi
Prendere nota delle informazioni sul driver dall'output di esempio di questo 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 | +-------------------------------+----------------------+----------------------+
Abilitare il servizio multiprocessore (MPS)
Un servizio Multi-Process (MPS) in GPU Nvidia fornisce un meccanismo in cui le GPU possono essere condivise da più processi, in cui ogni processo viene allocato una percentuale delle risorse della GPU. MPS è una funzionalità di anteprima nel dispositivo Azure Stack Edge Pro GPU. Per abilitare MPS nel dispositivo, seguire questa procedura:
Prima di iniziare, verificare che:
- Il dispositivo Azure Stack Edge Pro è stato configurato e attivato con una risorsa Azure Stack Edge in Azure.
- Il calcolo è stato configurato in questo dispositivo nel portale di Azure.
Usare il comando seguente per abilitare MPS nel dispositivo.
Start-HcsGpuMPS
Nota
Quando il software del dispositivo e il cluster Kubernetes vengono aggiornati, l'impostazione MPS non viene mantenuta per i carichi di lavoro. Sarà necessario abilitare nuovamente MPS.
Reimpostare il dispositivo
Per ripristinare il dispositivo, è necessario cancellare in modo sicuro tutti i dati presenti nel disco dati e nel disco di avvio del dispositivo.
Usare il cmdlet Reset-HcsAppliance
per cancellare i dati presenti nei dischi dati e nel disco di avvio oppure solo nei dischi dati. Le SecureWipeBootDisk
opzioni e SecureWipeDataDisks
consentono di cancellare il disco di avvio e i dischi dati rispettivamente.
L'opzione SecureWipeBootDisk
consente di cancellare i dati nel disco di avvio e di rendere inutilizzabile il dispositivo. Deve essere usata solo quando è necessario restituire il dispositivo a Microsoft. Per altre informazioni, vedere Restituire il dispositivo a Microsoft.
Se si usa il ripristino del dispositivo nell'interfaccia utente Web locale, vengono cancellati in modo sicuro i dati solo nei dischi dati, mentre il disco di avvio rimane intatto. Il disco di avvio contiene la configurazione del dispositivo.
Al prompt dei comandi digitare:
Reset-HcsAppliance -SecureWipeBootDisk -SecureWipeDataDisks
Nell'esempio seguente viene illustrato come usare questo 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
Ottenere i log di calcolo
Se il ruolo di calcolo è configurato nel dispositivo, è anche possibile ottenere i log di calcolo tramite l'interfaccia di PowerShell.
Get-AzureDataBoxEdgeComputeRoleLogs
Usare per ottenere i log di calcolo per il dispositivo.L'esempio seguente illustra l'utilizzo di questo cmdlet:
Get-AzureDataBoxEdgeComputeRoleLogs -Path "\\hcsfs\logs\myacct" -Credential "username" -FullLogCollection
Ecco una descrizione dei parametri usati per il cmdlet :
Path
: specificare un percorso di rete per la condivisione in cui si vuole creare il pacchetto di log di calcolo.Credential
: specificare il nome utente per la condivisione di rete. Quando si esegue questo cmdlet, sarà necessario specificare la password di condivisione.FullLogCollection
: questo parametro garantisce che il pacchetto di log conterrà tutti i log di calcolo. Per impostazione predefinita, il pacchetto di log contiene solo un subset di log.
Modificare i profili del carico di lavoro Kubernetes
Dopo aver creato e configurato un cluster e aver creato nuovi commutatori virtuali, è possibile aggiungere o eliminare reti virtuali associate ai commutatori virtuali. Per i passaggi dettagliati, vedere Configurare i commutatori virtuali.
Dopo aver creato i commutatori virtuali, è possibile abilitare i commutatori per il traffico di calcolo kubernetes per specificare un profilo del carico di lavoro Kubernetes. A tale scopo, usare l'interfaccia utente locale, seguire la procedura descritta in Configurare IPS di calcolo. A tale scopo, usare PowerShell, seguire questa procedura:
Usare il
Get-HcsApplianceInfo
cmdlet per ottenereKubernetesPlatform
le impostazioni correnti eKubernetesWorkloadProfile
per il dispositivo.Usare il
Get-HcsKubernetesWorkloadProfiles
cmdlet per identificare i profili disponibili nel 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>
Usare il
Set-HcsKubernetesWorkloadProfile
cmdlet per impostare il profilo del carico di lavoro per AP5GC, una soluzione MEC privata di Azure.L'esempio seguente illustra l'utilizzo di questo cmdlet:
Set-HcsKubernetesWorkloadProfile -Type "AP5GC"
Ecco l'output di esempio per questo cmdlet:
[10.100.10.10]: PS>KubernetesPlatform : AKS [10.100.10.10]: PS>KubernetesWorkloadProfile : AP5GC [10.100.10.10]: PS>
Cambiare le subnet del pod e del servizio Kubernetes
Se si esegue l'opzione altri carichi di lavoro nell'ambiente, per impostazione predefinita, Kubernetes nel dispositivo Azure Stack Edge usa subnet 172.27.0.0/16 e 172.28.0.0/16 rispettivamente per pod e servizio. Se queste subnet sono già in uso nella rete, è possibile eseguire il Set-HcsKubeClusterNetworkInfo
cmdlet per modificare queste subnet.
Si vuole eseguire questa configurazione prima di configurare il calcolo dal portale di Azure durante la creazione del cluster Kubernetes in questo passaggio.
Dall'interfaccia di PowerShell del dispositivo eseguire:
Set-HcsKubeClusterNetworkInfo -PodSubnet <subnet details> -ServiceSubnet <subnet details>
Sostituire i dettagli> della <subnet con l'intervallo di subnet che si vuole usare.
Dopo aver eseguito questo comando, è possibile usare il
Get-HcsKubeClusterNetworkInfo
comando per verificare che le subnet del pod e del servizio siano state modificate.
Ecco un output di esempio per questo 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>
Eseguire il debug dei problemi di Kubernetes correlati a IoT Edge
Prima di iniziare, è necessario disporre di:
- Rete di calcolo configurata. Vedere Esercitazione: Configurare la rete per Azure Stack Edge Pro con GPU.
- Ruolo di calcolo configurato nel dispositivo.
In un dispositivo Azure Stack Edge Pro GPU con il ruolo di calcolo configurato, è possibile risolvere i problemi o monitorare il dispositivo usando due diversi set di comandi.
- Uso
iotedge
dei comandi. Questi comandi sono disponibili per le operazioni di base per il dispositivo. - Uso
kubectl
dei comandi. Questi comandi sono disponibili per un set completo di operazioni per il dispositivo.
Per eseguire uno dei seguenti set di comandi, è necessario Connessione all'interfaccia di PowerShell.
Usare iotedge
i comandi
Per visualizzare un elenco dei comandi disponibili, connettersi all'interfaccia di PowerShell e usare la iotedge
funzione .
[10.100.10.10]: PS>iotedge -?
Usage: iotedge COMMAND
Commands:
list
logs
restart
[10.100.10.10]: PS>
La tabella seguente contiene una breve descrizione dei comandi disponibili per iotedge
:
Comando | Descrizione |
---|---|
list |
Elencare i moduli |
logs |
Recuperare i log di un modulo |
restart |
Arrestare e riavviare un modulo |
Elencare tutti i moduli IoT Edge
Per elencare tutti i moduli in esecuzione nel dispositivo, usare il iotedge list
comando .
Ecco un output di esempio di questo comando. Questo comando elenca tutti i moduli, la configurazione associata e gli indirizzi IP esterni associati ai moduli. Ad esempio, è possibile accedere all'app webserver all'indirizzo .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>
Riavviare i moduli
È possibile usare il list
comando per elencare tutti i moduli in esecuzione nel dispositivo. Identificare quindi il nome del modulo che si vuole riavviare e usarlo con il restart
comando .
Ecco un output di esempio di come riavviare un modulo. In base alla descrizione del tempo di esecuzione del modulo, è possibile vedere che cuda-sample1
è stato riavviato.
[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>
Ottenere i log dei moduli
Usare il logs
comando per ottenere i log per qualsiasi modulo IoT Edge in esecuzione nel dispositivo.
Se si è verificato un errore durante la creazione dell'immagine del contenitore o durante il pull dell'immagine, eseguire logs edgeagent
. edgeagent
è il contenitore di runtime di IoT Edge responsabile del provisioning di altri contenitori. Poiché logs edgeagent
esegue il dump di tutti i log, un buon modo per visualizzare gli errori recenti consiste nell'usare l'opzione --tail
0'.
Un esempio di output è riportato di seguito.
[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
I metodi diretti, ad esempio GetModuleLogs o UploadModuleLogs, non sono supportati in IoT Edge in Kubernetes in Azure Stack Edge.
Usare i comandi kubectl
In un dispositivo Azure Stack Edge Pro GPU con il ruolo di calcolo configurato, tutti i kubectl
comandi sono disponibili per monitorare o risolvere i problemi dei moduli. Per visualizzare un elenco dei comandi disponibili, eseguire kubectl --help
dalla finestra di 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>
Per un elenco completo dei kubectl
comandi, vedere kubectl
foglio informativo.
Per ottenere l'indirizzo IP del servizio o del modulo esposto all'esterno del cluster Kubernetes
Per ottenere l'indirizzo IP di un servizio o di un modulo di bilanciamento del carico esposto all'esterno di Kubernetes, eseguire il comando seguente:
kubectl get svc -n iotedge
Di seguito è riportato un output di esempio di tutti i servizi o i moduli esposti all'esterno del 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>
L'indirizzo IP nella colonna IP esterno corrisponde all'endpoint esterno per il servizio o il modulo. È anche possibile ottenere l'indirizzo IP esterno nel dashboard di Kubernetes.
Per verificare se il modulo è stato distribuito correttamente
I moduli di calcolo sono contenitori con una logica di business implementata. Un pod Kubernetes può avere più contenitori in esecuzione.
Per verificare se un modulo di calcolo viene distribuito correttamente, connettersi all'interfaccia di PowerShell del dispositivo.
Eseguire il get pods
comando e verificare se il contenitore (corrispondente al modulo di calcolo) è in esecuzione.
Per ottenere l'elenco di tutti i pod in esecuzione in uno spazio dei nomi specifico, eseguire il comando seguente:
get pods -n <namespace>
Per controllare i moduli distribuiti tramite IoT Edge, eseguire il comando seguente:
get pods -n iotedge
Di seguito è riportato un output di esempio di tutti i pod in esecuzione nello spazio dei iotedge
nomi .
[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>
Lo stato Indica che tutti i pod nello spazio dei nomi sono in esecuzione e Ready indica il numero di contenitori distribuiti in un pod. Nell'esempio precedente tutti i pod sono in esecuzione e tutti i moduli distribuiti in ognuno dei pod sono in esecuzione.
Per controllare i moduli distribuiti tramite Azure Arc, eseguire il comando seguente:
get pods -n azure-arc
In alternativa, è possibile Connessione al dashboard di Kubernetes per visualizzare le distribuzioni di IoT Edge o Azure Arc.
Per un output più dettagliato di un pod specifico per uno spazio dei nomi specifico, è possibile eseguire il comando seguente:
kubectl describe pod <pod name> -n <namespace>
L'output di esempio è illustrato qui.
[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>
Per ottenere i log dei contenitori
Per ottenere i log per un modulo, eseguire il comando seguente dall'interfaccia di PowerShell del dispositivo:
kubectl logs <pod_name> -n <namespace> --all-containers
Poiché all-containers
il flag esegue il dump di tutti i log per tutti i contenitori, un buon modo per visualizzare gli errori recenti consiste nell'usare l'opzione --tail 10
.
Di seguito è riportato un output di esempio.
[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>
Modificare la memoria, i limiti del processore per il nodo di lavoro di Kubernetes
Per modificare i limiti di memoria o processore per il nodo del ruolo di lavoro Kubernetes, seguire questa procedura:
Per ottenere le risorse correnti per il nodo di lavoro e le opzioni del ruolo di lavoro, eseguire il comando seguente:
Get-AzureDataBoxEdgeRole
Un esempio di output è riportato di seguito. Prendere nota dei valori per
Name
eCompute
nellaResources
sezione .MemoryInBytes
eProcessorCount
indicano il numero di memoria e processore dei valori attualmente assegnati per il nodo del ruolo di lavoro 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>
Per modificare i valori di memoria e processori per il nodo di lavoro, eseguire il comando seguente:
Set-AzureDataBoxEdgeRoleCompute -Name <Name value from the output of Get-AzureDataBoxEdgeRole> -Memory <Value in Bytes> -ProcessorCount <No. of cores>
Un esempio di output è riportato di seguito.
[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>
Durante la modifica dell'utilizzo della memoria e del processore, seguire queste linee guida.
- La memoria predefinita è il 25% della specifica del dispositivo.
- Il numero di processori predefinito è il 30% della specifica del dispositivo.
- Quando si modificano i valori per il numero di memoria e processore, è consigliabile variare i valori tra il 15% e il 60% della memoria del dispositivo e il conteggio dei processori.
- È consigliabile un limite superiore del 60% in modo che ci siano risorse sufficienti per i componenti di sistema.
da Connessione a BMC
Nota
Il controller di gestione baseboard (BMC) non è disponibile in Azure Stack Edge Pro 2 e In Azure Stack Edge Mini R. I cmdlet descritti in questa sezione si applicano solo alla GPU Di Azure Stack Edge Pro e ad Azure Stack Edge Pro R.
BMC viene usato per monitorare e gestire in remoto il dispositivo. Questa sezione descrive i cmdlet che possono essere usati per gestire la configurazione BMC. Prima di eseguire uno di questi cmdlet, Connessione all'interfaccia di PowerShell del dispositivo.
Get-HcsNetBmcInterface
: usare questo cmdlet per ottenere le proprietà di configurazione di rete di BMC, ad esempio ,IPv4Address
IPv4Gateway
IPv4SubnetMask
, ,DhcpEnabled
.Di seguito è riportato un output di esempio:
[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
: è possibile usare questo cmdlet nei due modi seguenti.Usare il cmdlet per abilitare o disabilitare la configurazione DHCP per BMC usando il valore appropriato per
UseDhcp
il parametro .Set-HcsNetBmcInterface -UseDhcp $true
Di seguito è riportato un output di esempio:
[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>
Usare questo cmdlet per configurare la configurazione statica per BMC. È possibile specificare i valori per
IPv4Address
,IPv4Gateway
eIPv4SubnetMask
.Set-HcsNetBmcInterface -IPv4Address "<IPv4 address of the device>" -IPv4Gateway "<IPv4 address of the gateway>" -IPv4SubnetMask "<IPv4 address for the subnet mask>"
Di seguito è riportato un output di esempio:
[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
: usare questo cmdlet per modificare la password BMC perEdgeUser
. Nome utente:EdgeUser
fa distinzione tra maiuscole e minuscole.Di seguito è riportato un output di esempio:
[10.100.10.10]: PS> Set-HcsBmcPassword -NewPassword "Password1" [10.100.10.10]: PS>
Uscire dalla sessione remota
Per uscire dalla sessione remota di PowerShell, chiudere la finestra di PowerShell.
Passaggi successivi
- Distribuire azure Stack Edge Pro GPU in portale di Azure.