Condividi tramite


Gestire un dispositivo AZURE Stack Edge Pro GPU tramite Windows PowerShell

SI APPLICA A:Yes for Pro GPU SKUAzure Stack Edge Pro - GPUYes for Pro 2 SKUAzure Stack Edge Pro 2Yes for Pro R SKUAzure Stack Edge Pro RYes for Mini R SKUAzure Stack Edge Mini R

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 in C:\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.

  1. Eseguire una sessione di Windows PowerShell come amministratore.

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

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

  4. 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
    
  5. 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.

  6. 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:

  1. Connessione all'interfaccia di PowerShell del dispositivo.

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

  1. Connettersi all'interfaccia di PowerShell.

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

  1. Connettersi all'interfaccia di PowerShell.

  2. 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:

  1. Prima di iniziare, verificare che:

    1. Il dispositivo Azure Stack Edge Pro è stato configurato e attivato con una risorsa Azure Stack Edge in Azure.
    2. Il calcolo è stato configurato in questo dispositivo nel portale di Azure.
  2. Connettersi all'interfaccia di PowerShell.

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

  1. Connettersi all'interfaccia di PowerShell.

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

  1. Connettersi all'interfaccia di PowerShell.

  2. 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:

  1. Connettersi all'interfaccia di PowerShell.

  2. Usare il Get-HcsApplianceInfo cmdlet per ottenere KubernetesPlatform le impostazioni correnti e KubernetesWorkloadProfile per il dispositivo.

  3. 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>
    
  4. 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.

  1. Connessione all'interfaccia di PowerShell del dispositivo.

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

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

Prima di iniziare, è necessario disporre di:

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:

  1. Connessione all'interfaccia di PowerShell del dispositivo.

  2. 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 e Compute nella Resources sezione . MemoryInBytes e ProcessorCount 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>
    
  3. 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 , IPv4AddressIPv4GatewayIPv4SubnetMask, , 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, IPv4Gatewaye IPv4SubnetMask.

      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 per EdgeUser. Nome utente: EdgeUserfa 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