Gérer un appareil Azure Stack Edge Pro avec GPU via Windows PowerShell

S’APPLIQUE À :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 solution GPU Azure Stack Edge Pro vous permet de traiter des données et de les envoyer à Azure via le réseau. Cet article décrit certaines des tâches de gestion et de configuration pour votre appareil GPU Azure Stack Edge Pro. Vous pouvez utiliser le portail Azure, l'interface utilisateur locale ou l'interface Windows PowerShell pour gérer votre appareil.

Cet article se concentre sur la façon dont vous pouvez vous connecter à l’interface PowerShell de l’appareil et les tâches que vous pouvez effectuer à l’aide de cette interface.

Connexion à l’interface PowerShell

Selon le système d’exploitation du client, les procédures permettant de se connecter à distance à l’appareil sont différentes.

Connexion à distance depuis un client Windows

Prérequis

Avant de commencer, assurez-vous que :

  • Votre client Windows exécute Windows PowerShell 5.0 ou une version ultérieure.

  • Votre client Windows dispose de la chaîne de signature (certificat racine) correspondant au certificat de nœud installé sur l’appareil. Pour obtenir des instructions détaillées, consultez Installer un certificat sur votre client Windows.

  • Le fichier hosts sous C:\Windows\System32\drivers\etc pour votre client Windows contient une entrée correspondant au certificat de nœud au format suivant :

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

    Voici un exemple d’entrée pour le fichier hosts :

    10.100.10.10 1HXQG13.wdshcsso.com

Procédure détaillée

Suivez cette procédure pour effectuer une connexion distante depuis un client Windows.

  1. Démarrez une session Windows PowerShell en tant qu’administrateur.

  2. Assurez-vous que le service Windows Remote Management est en cours d’exécution sur votre client. À l’invite de commandes, tapez :

    winrm quickconfig
    

    Pour plus d’informations, consultez Installation et configuration de Windows Remote Management.

  3. Assignez une variable à la chaîne de connexion utilisée dans le fichier hosts.

    $Name = "<Node serial number>.<DNS domain of the device>"
    

    Remplacez <Node serial number> et <DNS domain of the device> par le numéro de série du nœud et le domaine DNS de votre appareil. Vous pouvez obtenir la valeur du numéro de série du nœud à partir de la page Certificats et celle du domaine DNS à partir de la page Appareil dans l’interface utilisateur web locale de votre appareil.

  4. Pour ajouter cette chaîne de connexion pour votre appareil à la liste des hôtes approuvés du client, saisissez la commande suivante :

    Set-Item WSMan:\localhost\Client\TrustedHosts $Name -Concatenate -Force
    
  5. Démarrez une session Windows PowerShell sur l’appareil :

    Enter-PSSession -ComputerName $Name -Credential ~\EdgeUser -ConfigurationName Minishell -UseSSL
    

    Si vous voyez une erreur liée à une relation de confiance, vérifiez si la chaîne de signature du certificat de nœud chargé sur votre appareil est également installée sur le client qui accède à votre appareil.

  6. Indiquez le mot de passe lorsque vous y êtes invité. Utilisez le mot de passe vous permettant de vous connecter à l’interface utilisateur web locale. Le mot de passe par défaut de cette interface est Password1. Lorsque vous êtes connecté à l’appareil à l’aide de PowerShell à distance, vous pouvez voir l’exemple de sortie suivant :

    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>
    

Lorsque vous utilisez l’option -UseSSL, vous utilisez la communication à distance via PowerShell sur https. Nous vous recommandons de toujours utiliser le protocole HTTPS pour vous connecter à distance via PowerShell. Dans les réseaux approuvés, la communication à distance via PowerShell sur http est acceptable. Vous activez d’abord PowerShell à distance sur http dans l’interface utilisateur locale. Vous pouvez ensuite vous connecter à l’interface PowerShell de l’appareil à l’aide de la procédure précédente sans l’option -UseSSL.

Si vous n’utilisez pas les certificats (nous vous recommandons fortement de les utiliser !), vous pouvez ignorer la vérification de la validation du certificat en utilisant les options de session : -SkipCACheck -SkipCNCheck -SkipRevocationCheck.

$sessOptions = New-PSSessionOption -SkipCACheck -SkipCNCheck -SkipRevocationCheck 
Enter-PSSession -ComputerName $Name -Credential ~\EdgeUser -ConfigurationName Minishell -UseSSL -SessionOption $sessOptions    

Voici un exemple de sortie lorsque vous ignorez la vérification du certificat :

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>

Important

Dans la version actuelle, vous pouvez vous connecter à l’interface PowerShell de l’appareil uniquement via un client Windows. L’option -UseSSL ne fonctionne pas avec les clients Linux.

Création d’un package de prise en charge

Si vous rencontrez des problèmes avec l’appareil, vous pouvez créer un package de support dans les journaux système. Le support Microsoft utilise ce package pour résoudre les problèmes. Pour créer un package de support, effectuez les étapes suivantes :

  1. Connectez-vous à l’interface PowerShell de votre appareil.

  2. Utilisez la commande Get-HcsNodeSupportPackage pour créer un package de support. Utilisez la cmdlet comme suit :

    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>]
    

    La cmdlet collecte les journaux à partir de votre appareil et les copie vers un réseau ou un partage local spécifié.

    Les paramètres utilisés sont les suivants :

    • -Path : permet de spécifier le réseau ou le chemin d’accès local vers lequel y copier le package de support. (obligatoire)
    • -Credential : permet de spécifier les informations d’identification pour accéder au chemin protégé.
    • -Zip : permet de générer un fichier zip.
    • -Include : permet d’inclure les composants à inclure dans le package de support. S’il n’est pas renseigné, la valeur Default est supposée.
    • -IncludeArchived : permet d’inclure des journaux archivés dans le package de support.
    • -IncludePeriodicStats : permet d’inclure des journaux de statistiques périodiques dans le package de support.

Affichage des informations sur l’appareil

  1. Connectez-vous à l’interface PowerShell.

  2. Utilisez Get-HcsApplianceInfo pour obtenir les informations pour votre appareil.

    L’exemple suivant montre comment utiliser cette 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
    

    Voici un tableau récapitulant les informations importantes sur les appareils :

    Paramètre Description
    FriendlyName Nom convivial configuré pour l’appareil via l’interface utilisateur web locale lors du déploiement de l’appareil. Le nom convivial par défaut est le numéro de série de l’appareil.
    SerialNumber Le numéro de série de l’appareil est un numéro unique attribué en usine.
    Modèle Le modèle de votre appareil Azure Stack Edge ou Data Box Gateway. Le modèle est physique pour Azure Stack Edge et virtuel pour Data Box Gateway.
    FriendlySoftwareVersion Chaîne conviviale qui correspond à la version du logiciel de l’appareil. Pour un système exécutant la préversion, la version conviviale du logiciel serait Data Box Edge 1902.
    HcsVersion Version du logiciel HCS exécutée sur votre appareil. Par exemple, la version du logiciel HCS correspondant à Data Box Edge 1902 est 1.4.771.324.
    LocalCapacityInMb Capacité totale locale de l’appareil en mégabits.
    IsRegistered Cette valeur indique si votre appareil est activé avec le service.

Afficher les informations du pilote de GPU

Si le rôle de calcul est configuré sur votre appareil, vous pouvez également obtenir les informations du pilote du GPU via l’interface PowerShell.

  1. Connectez-vous à l’interface PowerShell.

  2. Utilisez Get-HcsGpuNvidiaSmi pour obtenir les informations du pilote du GPU pour votre appareil.

    L’exemple suivant montre comment utiliser cette cmdlet :

    Get-HcsGpuNvidiaSmi
    

    Prenez note des informations du pilote à partir de l’exemple de sortie de cette applet de commande.

    +-----------------------------------------------------------------------------+    
    | 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 |
    +-------------------------------+----------------------+----------------------+
    

Activer un service multiprocessus (MPS)

Un service multiprocessus (MPS) sur les GPU Nvidia fournit un mécanisme dans lequel les GPU peuvent être partagés par plusieurs tâches, où chaque tâche est se voit attribuer un certain pourcentage des ressources du GPU. MPS est une fonctionnalité en préversion sur votre appareil Azure Stack Edge Pro avec GPU. Pour activer MPS sur votre appareil, procédez comme suit :

  1. Avant de commencer, assurez-vous que :

    1. Vous avez configuré et Activé votre appareil Azure Stack Edge Pro avec une ressource Azure Stack Edge dans Azure.
    2. Vous avez Configuré le calcul sur cet appareil dans le portail Azure.
  2. Connectez-vous à l’interface PowerShell.

  3. Utilisez la commande suivante pour activer un MPS sur votre appareil.

    Start-HcsGpuMPS
    

Remarque

Lors de la mise à jour du logiciel de l’appareil et du cluster Kubernetes, le paramètre MPS n’est pas conservé pour les charges de travail. Vous devez réactiver MPS.

Réinitialisation de votre appareil

Pour réinitialiser votre appareil, vous devez effacer en toute sécurité toutes les données sur le disque de données et le disque de démarrage de votre appareil.

Utilisez la cmdlet Reset-HcsAppliance pour effacer les disques de données et le disque de démarrage ou simplement les disques de données. Les commutateurs SecureWipeBootDisk et SecureWipeDataDisks permettent respectivement de réinitialiser le disque de démarrage et les disques de données.

Le commutateur SecureWipeBootDisk efface le disque de démarrage et rend l’appareil inutilisable. Il doit être utilisé seulement si l’appareil doit être renvoyé à Microsoft. Pour plus d’informations, consultez Renvoyer l’appareil à Microsoft.

Si vous utilisez la réinitialisation d’appareil dans l’interface utilisateur web locale, seuls les disques de données sont effacés en toute sécurité, mais le disque de démarrage reste intact. Le disque de démarrage contient la configuration de l’appareil.

  1. Connectez-vous à l’interface PowerShell.

  2. À l'invite de commandes, tapez :

    Reset-HcsAppliance -SecureWipeBootDisk -SecureWipeDataDisks

    L’exemple suivant explique comment utiliser cette 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
    

Récupération des journaux de calcul

Si le rôle de calcul est configuré sur votre appareil, vous pouvez également obtenir les journaux de calcul via l’interface PowerShell.

  1. Connectez-vous à l’interface PowerShell.

  2. Utilisez Get-AzureDataBoxEdgeComputeRoleLogs pour obtenir les journaux de calcul de votre appareil.

    L’exemple suivant montre comment utiliser cette cmdlet :

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

    Voici une description des paramètres utilisés pour la cmdlet :

    • Path : indiquez un chemin réseau vers le partage dans lequel vous souhaitez créer le package de journaux de calcul.
    • Credential : indiquez le nom d’utilisateur du partage réseau. Lorsque vous exécutez cette cmdlet, vous devez fournir le mot de passe du partage.
    • FullLogCollection : ce paramètre garantit que le package de journaux contiendra tous les journaux de calcul. Par défaut, le package de journaux contient uniquement un sous-ensemble des journaux.

Modifier les profils de charge de travail Kubernetes

Après avoir formé et configuré un cluster et créé de nouveaux commutateurs virtuels, vous pouvez ajouter ou supprimer des réseaux virtuels associés à vos commutateurs virtuels. Pour connaître les étapes détaillées, consultez Configurer les commutateurs virtuels.

Une fois les commutateurs virtuels créés, vous pouvez activer les commutateurs pour le trafic de calcul Kubernetes afin de spécifier un profil de charge de travail Kubernetes. Pour ce faire, à l'aide de l'interface utilisateur locale, suivez les étapes décrites dans Configure Compute IPS. Pour ce faire à l'aide de PowerShell, procédez comme suit :

  1. Connectez-vous à l’interface PowerShell.

  2. Utilisez l'applet de commande Get-HcsApplianceInfo pour obtenir les paramètres actuels KubernetesPlatform et les paramètres KubernetesWorkloadProfile de votre appareil.

  3. Utilisez l’applet de commande Get-HcsKubernetesWorkloadProfiles pour identifier les profils disponibles sur votre appareil 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. Utilisez l’applet de commande Set-HcsKubernetesWorkloadProfile pour définir le profil de charge de travail pour AP5GC, une solution Azure Private MEC.

    L’exemple suivant montre comment utiliser cette cmdlet :

    Set-HcsKubernetesWorkloadProfile -Type "AP5GC"
    

    Voici un exemple de sortie pour cette applet de commande :

    [10.100.10.10]: PS>KubernetesPlatform : AKS
    [10.100.10.10]: PS>KubernetesWorkloadProfile : AP5GC
    [10.100.10.10]: PS>
    

Modifier des sous-réseaux de pod et de service Kubernetes

Si vous exécutez l’option Autres charges de travail dans votre environnement, par défaut, Kubernetes sur votre appareil Azure Stack Edge utilise les sous-réseaux 172.27.0.0/16 et 172.28.0.0/16 pour le pod et le service respectivement. Si ces sous-réseaux sont déjà utilisés dans votre réseau, vous pouvez exécuter la cmdlet Set-HcsKubeClusterNetworkInfo pour les modifier.

Vous souhaitez effectuer cette configuration avant de configurer le calcul à partir du portail Azure, car le cluster Kubernetes est créé au cours de cette étape.

  1. Connectez-vous à l'interface PowerShell de l'appareil.

  2. À partir de l’interface PowerShell de l’appareil, exécutez :

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

    Remplacez les <détails du sous-réseau > par la plage de sous-réseau que vous souhaitez utiliser.

  3. Une fois que vous avez exécuté cette commande, vous pouvez utiliser la commande Get-HcsKubeClusterNetworkInfo pour vérifier que les sous-réseaux de pod et de service ont été modifiés.

Voici un exemple de sortie pour cette commande.

[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>

Avant de commencer, vous devez disposer des éléments suivants :

Sur un appareil GPU Azure Stack Edge Pro sur lequel le rôle de calcul est configuré, vous pouvez dépanner ou superviser l’appareil à l’aide de deux ensembles de commandes distincts.

  • À l’aide des commandes iotedge. Ces commandes sont disponibles pour les opérations de base pour votre appareil.
  • À l’aide des commandes kubectl. Ces commandes sont disponibles pour un ensemble complet d’opérations pour votre appareil.

Pour exécuter les jeux de commandes ci-dessus, vous devez vous connecter à l’interface PowerShell.

Utiliser les commandes iotedge

Pour afficher la liste des commandes disponibles, connectez-vous à l’interface PowerShell et utilisez la fonction iotedge.

[10.100.10.10]: PS>iotedge -?                                                                                                                           
Usage: iotedge COMMAND

Commands:
   list
   logs
   restart

[10.100.10.10]: PS>

Le tableau ci-après contient une brève description des commandes disponibles pour iotedge :

commande Description
list Faire la liste des modules
logs Extraire les journaux d’un module
restart Arrêter et redémarrer un module

Répertorier tous les modules IoT Edge

Pour répertorier tous les modules en cours d’exécution sur votre appareil, utilisez la commande iotedge list.

Voici un exemple de sortie de cette commande. Cette commande répertorie tous les modules, la configuration associée et les adresses IP externes associées aux modules. Par exemple, vous pouvez accéder à l’application WebServer à l’adresse URL 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>

Redémarrer les modules

Vous pouvez utiliser la commande list pour répertorier tous les modules en cours d’exécution sur votre appareil. Identifiez ensuite le nom du module que vous souhaitez redémarrer et utilisez-le avec la restart commande.

Voici un exemple de sortie de la procédure de redémarrage d’un module. En fonction de la description relative à la durée d’exécution du module, vous pouvez voir que cuda-sample1 a été redémarré.

[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>

Obtenir les journaux des modules

Utilisez la commande logs pour obtenir les journaux des modules IoT Edge en cours d’exécution sur votre appareil.

Si une erreur s’est produite lors de la création de l’image de conteneur ou lors de l’extraction de l’image, exécutez logs edgeagent. edgeagent est le conteneur de runtime IoT Edge qui est responsable de la mise en service des autres conteneurs. Étant donné que logs edgeagent vide les journaux, un bon moyen de voir les erreurs récentes consiste à utiliser l’option --tail 0`.

Voici un exemple de sortie :

[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>

Remarque

Les méthodes directes, telles que GetModuleLogs ou UploadModuleLogs, ne sont pas prises en charge par IoT Edge sur Kubernetes sur votre appareil Azure Stack Edge.

Utiliser des commandes kubectl

Sur un appareil GPU Azure Stack Edge Pro sur lequel le rôle de calcul est configuré, toutes les commandes kubectl sont disponibles pour surveiller ou dépanner les modules. Pour afficher la liste des commandes disponibles, exécutez kubectl --help à partir de la fenêtre Commande.

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>

Pour obtenir la liste complète des commandes kubectl, accédez à l’kubectl aide-mémoire.

Pour faire en sorte que l’adresse IP d’un service ou d’un module soit exposée en dehors du cluster Kubernetes

Pour obtenir l’adresse IP d’un service d’équilibrage de charge ou de modules exposés en dehors de Kubernetes, exécutez la commande suivante :

kubectl get svc -n iotedge

Voici un exemple de sortie de tous les services ou modules exposés en dehors du 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’adresse IP dans la colonne IP externe correspond au point de terminaison externe pour le service ou le module. Vous pouvez également Récupérer l’adresse IP externe dans le tableau de bord Kubernetes.

Pour vérifier si le module a été déployé avec succès

Les modules de calcul sont des conteneurs avec une logique métier implémentée. Un pod Kubernetes peut avoir plusieurs conteneurs en cours d’exécution.

Pour vérifier si un module de calcul est correctement déployé, connectez-vous à l’interface PowerShell de l’appareil. Exécutez la commande get pods et vérifiez l’exécution du conteneur (correspondant au module de calcul).

Pour obtenir la liste de tous les pods en cours d’exécution dans un espace de noms spécifique, exécutez la commande suivante :

get pods -n <namespace>

Pour vérifier les modules déployés via IoT Edge, exécutez la commande suivante :

get pods -n iotedge

Voici un exemple de sortie de tous les pods en cours d’exécution dans l’espace de noms 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>

L’État indique que tous pods de l’espace de noms sont en cours d’exécution et Prêt indique le nombre de conteneurs déployés dans un pod. Dans l’exemple précédent, tous les pods sont en cours d’exécution et tous les modules déployés dans chaque pod sont en cours d’exécution.

Pour vérifier les modules déployés via Azure Arc, exécutez la commande suivante :

get pods -n azure-arc

Vous pouvez également Vous connecter au tableau de bord Kubernetes pour voir les déploiements IoT Edge ou Azure Arc.

Pour obtenir une sortie plus détaillée d’un pod spécifique pour un espace de noms donné, vous pouvez exécuter la commande suivante :

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

Un exemple de sortie est présenté ici.

[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>

Pour obtenir les journaux d’activité de conteneur

Pour obtenir les journaux d’un module, exécutez la commande suivante à partir de l’interface PowerShell de l’appareil :

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

Étant donné que l’indicateur all-containers vide les journaux pour tous les conteneurs, un bon moyen de voir les erreurs récentes est d’utiliser l’option --tail 10.

Voici un exemple de sortie.

[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>

Modifier la mémoire et les limites du processeur pour le nœud Worker Kubernetes

Pour modifier la mémoire ou les limites du processeur pour le nœud Worker Kubernetes, procédez comme suit :

  1. Connectez-vous à l'interface PowerShell de l'appareil.

  2. Pour obtenir les ressources actuelles du nœud Worker et les options de rôle, exécutez la commande suivante :

    Get-AzureDataBoxEdgeRole

    Voici un exemple de sortie : Notez les valeurs de Name et Compute dans la section Resources. MemoryInBytes et ProcessorCount indiquent les valeurs de mémoire et de nombre de processeurs pour le nœud Worker 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. Pour modifier les valeurs de mémoire et de processeurs pour le nœud Worker, exécutez la commande suivante :

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

    Voici un exemple de sortie :

    [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>    
    

Lorsque vous modifiez la mémoire et l’utilisation du processeur, suivez ces instructions.

  • La mémoire par défaut correspond à 25 % de la spécification de l’appareil.
  • Le nombre de processeurs par défaut représente 30 % de la spécification de l’appareil.
  • Quand vous modifiez les valeurs de mémoire et de nombre de processeurs, nous vous recommandons de faire varier les valeurs de mémoire de l’appareil et de nombre de processeurs entre 15 % et 60 %.
  • Nous vous conseillons d’utiliser une limite supérieure de 60 % afin de disposer de suffisamment de ressources pour les composants système.

Se connecter au contrôleur BMC

Remarque

Le contrôleur de gestion de la carte mère (BMC) n’est pas disponible sur Azure Stack Edge Pro 2 et Azure Stack Edge Mini R. Les applets de commande décrites dans cette section s’appliquent uniquement au GPU Azure Stack Edge Pro et à Azure Stack Edge Pro R.

BMC est utilisé pour surveiller et gérer à distance votre appareil. Cette section décrit les cmdlets qui peuvent être utilisées pour gérer la configuration du contrôleur BMC. Avant d'exécuter l'une de ces cmdlets, consultez Se connecter à l'interface PowerShell de l'appareil.

  • Get-HcsNetBmcInterface : Utilisez cette applet de commande pour obtenir les propriétés de configuration réseau du BMC, par exemple, IPv4Address, IPv4Gateway, IPv4SubnetMask, DhcpEnabled.

    Voici un exemple de sortie :

    [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 : Vous pouvez utiliser cette applet de commande des deux manières suivantes.

    • Utilisez la cmdlet pour activer ou désactiver la configuration DHCP du contrôleur BMC en utilisant la valeur appropriée pour le paramètre UseDhcp.

      Set-HcsNetBmcInterface -UseDhcp $true
      

      Voici un exemple de sortie :

      [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>
      
    • Utilisez cette cmdlet pour configurer la configuration statique du contrôleur BMC. Vous pouvez spécifier les valeurs des éléments suivants : IPv4Address, IPv4Gateway et IPv4SubnetMask.

      Set-HcsNetBmcInterface -IPv4Address "<IPv4 address of the device>" -IPv4Gateway "<IPv4 address of the gateway>" -IPv4SubnetMask "<IPv4 address for the subnet mask>"
      

      Voici un exemple de sortie :

      [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 : Utilisez cette applet de commande pour modifier le mot de passe BMC pour EdgeUser. Le nom d'utilisateur (EdgeUser) est sensible à la casse.

    Voici un exemple de sortie :

    [10.100.10.10]: PS> Set-HcsBmcPassword -NewPassword "Password1"
    [10.100.10.10]: PS>
    

Fermeture de la session à distance

Pour quitter la session PowerShell à distance, fermez la fenêtre PowerShell.

Étapes suivantes