Verwalten eines Azure Stack Edge Pro-GPU-Geräts mithilfe von Windows PowerShell
GILT FÜR:Azure Stack Edge Pro – GPUAzure Stack Edge Pro 2Azure Stack Edge Pro RAzure Stack Edge Mini R
Azure Stack Edge Pro GPU ist eine Lösung, mit der Sie Daten verarbeiten und über ein Netzwerk an Azure senden können. In diesem Artikel werden einige der Konfigurations- und Verwaltungsaufgaben für Ihr Azure Stack Edge Pro GPU-Gerät beschrieben. Sie können das Azure-Portal, die lokale Webbenutzeroberfläche oder die Windows PowerShell-Schnittstelle verwenden, um Ihr Gerät zu verwalten.
Dieser Artikel befasst sich schwerpunktmäßig damit, wie Sie eine Verbindung mit der PowerShell-Schnittstelle des Geräts herstellen können und welche Aufgaben Sie mithilfe dieser Schnittstelle ausführen können.
Herstellen einer Verbindung mit der PowerShell-Schnittstelle
Je nach Betriebssystem des Clients unterscheiden sich die Verfahren für Remoteverbindungen mit dem Gerät.
Herstellen einer Remoteverbindung von einem Windows-Client
Voraussetzungen
Stellen Sie Folgendes sicher, bevor Sie beginnen:
Auf dem Windows-Client wird Windows PowerShell 5.0 oder höher ausgeführt.
Der Windows-Client verfügt über die Signaturkette (Stammzertifikat), die dem auf dem Gerät installierten Knotenzertifikat entspricht. Ausführliche Anweisungen finden Sie unter Installieren von Zertifikaten auf Ihrem Windows-Client.
Die
hosts
-Datei unterC:\Windows\System32\drivers\etc
für den Windows-Client enthält einen Eintrag für das Knotenzertifikat im folgenden Format:<Device IP> <Node serial number>.<DNS domain of the device>
Dies ist ein Beispieleintrag in der Datei
hosts
:10.100.10.10 1HXQG13.wdshcsso.com
Ausführliche Schritte
Befolgen Sie die folgenden Schritte, um eine Remoteverbindung von einem Windows-Client aus herzustellen.
Führen Sie eine Windows PowerShell-Sitzung als Administrator aus.
Stellen Sie sicher, dass der Dienst Windows-Remoteverwaltung auf dem Client ausgeführt wird. Geben Sie an der Eingabeaufforderung Folgendes ein:
winrm quickconfig
Weitere Informationen finden Sie unter Installation und Konfiguration für die Windows-Remoteverwaltung.
Weisen Sie der in der Datei
hosts
verwendeten Verbindungszeichenfolge eine Variable zu.$Name = "<Node serial number>.<DNS domain of the device>"
Ersetzen Sie
<Node serial number>
und<DNS domain of the device>
durch die Seriennummer des Knotens und die DNS-Domäne Ihres Geräts. Sie können die Werte für die Seriennummer des Knotens von der Seite Zertifikate und die DNS-Domäne von der Seite Gerät in der lokalen Webbenutzeroberfläche Ihres Geräts abrufen.Geben Sie den folgenden Befehl ein, um der Liste der vertrauenswürdigen Hosts des Clients die Verbindungszeichenfolge für Ihr Gerät hinzuzufügen:
Set-Item WSMan:\localhost\Client\TrustedHosts $Name -Concatenate -Force
Starten Sie eine Windows PowerShell-Sitzung auf dem Gerät:
Enter-PSSession -ComputerName $Name -Credential ~\EdgeUser -ConfigurationName Minishell -UseSSL
Wenn ein Fehler im Zusammenhang mit der Vertrauensstellung auftritt, überprüfen Sie, ob die Signaturkette des Knotenzertifikats, das auf Ihr Gerät hochgeladen wurde, auch auf dem Client installiert ist, der auf Ihr Gerät zugreift.
Geben Sie das Kennwort an, wenn Sie dazu aufgefordert werden. Verwenden Sie dasselbe Kennwort wie für die Anmeldung bei der lokalen Webbenutzeroberfläche. Das Standardkennwort für die lokale Webbenutzeroberfläche lautet Password1. Wenn Sie mithilfe von PowerShell eine Verbindung mit dem Gerät herstellen konnten, wird die folgende Beispielausgabe angezeigt:
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>
Wenn Sie die Option -UseSSL
verwenden, führen Sie Remoting über PowerShell per HTTPS aus. Sie sollten immer HTTPS für Remoteverbindungen über PowerShell verwenden. In vertrauenswürdigen Netzwerken sind PowerShell-Remotesitzungen über HTTP zulässig. Sie müssen PowerShell-Remotesitzungen über HTTP jedoch zunächst über die lokale Benutzeroberfläche aktivieren. Dann können Sie eine Verbindung mit der PowerShell-Schnittstelle des Geräts herstellen, indem Sie die zuvor beschriebene Prozedur ohne die Option -UseSSL
befolgen.
Wenn Sie die Zertifikate nicht verwenden (nicht empfohlen), können Sie die Zertifikatvalidierung überspringen, indem Sie die Sitzungsoptionen verwenden: -SkipCACheck -SkipCNCheck -SkipRevocationCheck
.
$sessOptions = New-PSSessionOption -SkipCACheck -SkipCNCheck -SkipRevocationCheck
Enter-PSSession -ComputerName $Name -Credential ~\EdgeUser -ConfigurationName Minishell -UseSSL -SessionOption $sessOptions
Hier sehen Sie eine Beispielausgabe, wenn die Zertifikatvalidierung übersprungen wird:
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>
Wichtig
In der aktuellen Version können Sie eine Verbindung mit der PowerShell-Schnittstelle des Geräts nur über einen Windows-Client herstellen. Die -UseSSL
Option funktioniert nicht mit den Linux-Clients.
Unterstützungspaket erstellen
Wenn Sie Geräteprobleme haben, können Sie anhand der Systemprotokolle ein Protokollpaket erstellen. Der Microsoft-Support nutzt dieses Paket, um die Probleme zu beheben. Um ein Protokollpaket erstellen, gehen Sie wie folgt vor:
Stellen Sie auf Ihrem Gerät eine Verbindung mit der PowerShell-Schnittstelle her.
Verwenden Sie den Befehl
Get-HcsNodeSupportPackage
, um ein Protokollpaket zu erstellen. Die Nutzung des Cmdlets ist wie folgt: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>]
Das Cmdlet erfasst Protokolle von Ihrem Gerät und kopiert diese in eine angegebene Netzwerk- oder lokale Freigabe.
Die verwendeten Parameter sind wie folgt:
-Path
: Geben Sie den Netzwerk- oder lokalen Pfad an, in den das Protokollpaket kopiert werden soll. (erforderlich)-Credential
: Geben Sie die Anmeldeinformationen für den Zugriff auf den geschützten Pfad an.-Zip
: Dient zum Angeben, dass eine ZIP-Datei generiert werden soll.-Include
: Dient zum Angeben der Komponenten, die in das Protokollpaket einbezogen werden sollen. Falls nicht angegeben,Default
wird angenommen.-IncludeArchived
: Dient zum Angeben, dass archivierte Protokolle in das Protokollpaket einbezogen werden sollen.-IncludePeriodicStats
: Dient zum Angeben, dass regelmäßige Statistikprotokolle in das Protokollpaket einbezogen werden sollen.
Anzeigen von Geräteinformationen
Herstellen einer Verbindung mit der PowerShell-Schnittstelle.
Verwenden Sie
Get-HcsApplianceInfo
zum Abrufen der Informationen für Ihr Gerät.Nachfolgend sehen Sie ein Beispiel für die Verwendung dieses Cmdlets:
[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
Hier sehen Sie eine Tabelle mit einer Zusammenfassung einiger wichtiger Geräteinformationen:
Parameter Beschreibung FriendlyName Dies ist der Anzeigename des Geräts gemäß Konfiguration über die lokale Web-UI während der Gerätebereitstellung. Der Standardanzeigename ist die Seriennummer des Geräts. SerialNumber Die Seriennummer des Geräts ist eine eindeutige Nummer, die im Werk zugewiesen wird. Modell Das Modell für Ihr Azure Stack Edge- oder Data Box Gateway-Gerät. Das Modell ist für Azure Stack Edge physisch und für Data Box Gateway virtuell. FriendlySoftwareVersion Die benutzerfreundliche Zeichenfolge, die der Version der Gerätesoftware entspricht. Für ein System, auf dem eine Vorschau ausgeführt wird, lautet der Anzeigename der Softwareversion „Data Box Edge 1902“. HcsVersion Die Version der HCS-Software, die auf Ihrem Gerät ausgeführt wird. Beispielsweise lautet die HCS-Softwareversion, die Data Box Edge 1902 entspricht, „1.4.771.324“. LocalCapacityInMb Die lokale Gesamtkapazität des Geräts in MB. IsRegistered Dieser Wert gibt an, ob Ihr Gerät mit dem Dienst aktiviert wurde.
Anzeigen von GPU-Treiberinformationen
Wenn die Computerolle auf Ihrem Gerät konfiguriert ist, können Sie die GPU-Treiberinformationen auch über die PowerShell-Schnittstelle abrufen.
Herstellen einer Verbindung mit der PowerShell-Schnittstelle.
Verwenden Sie
Get-HcsGpuNvidiaSmi
zum Abrufen der GPU-Treiberinformationen für Ihr Gerät.Nachfolgend sehen Sie ein Beispiel für die Verwendung dieses Cmdlets:
Get-HcsGpuNvidiaSmi
Notieren Sie sich die Treiberinformationen aus der Beispielausgabe dieses Cmdlets.
+-----------------------------------------------------------------------------+ | 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 | +-------------------------------+----------------------+----------------------+
Aktivieren des Multiprozessdiensts (MPS)
Ein Multiprozessdienst (MPS) auf NVIDIA-GPUs bietet einen Mechanismus, bei dem GPUs von mehreren Aufträgen gemeinsam genutzt werden können, wobei jedem Auftrag ein bestimmter Prozentsatz der GPU-Ressourcen zugewiesen wird. MPS ist eine Previewfunktion auf Ihrem Azure Stack Edge Pro-GPU-Gerät. Führen Sie die folgenden Schritte aus, um MPS auf Ihrem Gerät zu aktivieren:
Stellen Sie Folgendes sicher, bevor Sie beginnen:
- Sie haben Ihr Azure Stack Edge Pro-Gerät mit einer Azure Stack Edge-Ressource in Azure konfiguriert und aktiviert.
- Sie haben auf diesem Gerät Compute im Azure-Portal konfiguriert.
Herstellen einer Verbindung mit der PowerShell-Schnittstelle.
Verwenden Sie den folgenden Befehl, um MPS auf Ihrem Gerät zu aktivieren.
Start-HcsGpuMPS
Hinweis
Wenn die Gerätesoftware und der Kubernetes-Cluster aktualisiert werden, wird die MPS-Einstellung für die Workloads nicht beibehalten. Sie müssen MPS erneut aktivieren.
Zurücksetzen Ihres Geräts
Um Ihr Gerät zurückzusetzen, müssen Sie alle Daten vom Daten- und Startdatenträger Ihres Geräts sicher löschen.
Verwenden Sie das Cmdlet Reset-HcsAppliance
, um sowohl die Datenträger als auch den Startdatenträger oder nur die Datenträger zu löschen. Mit den Schaltern SecureWipeBootDisk
und SecureWipeDataDisks
können Sie den Startdatenträger bzw. die Datenträger löschen.
Der Schalter SecureWipeBootDisk
setzt den Startdatenträger zurück und macht das Gerät unbrauchbar. Er sollte nur verwendet werden, wenn das Gerät an Microsoft zurückgegeben werden muss. Weitere Informationen finden Sie unter Zurückgeben oder Ersetzen Ihres Azure Data Box Edge-Geräts.
Wenn Sie auf der lokalen Webbenutzeroberfläche das Gerät zurücksetzen, werden nur die Datenträger sicher gelöscht, aber der Startdatenträger bleibt intakt. Der Startdatenträger enthält die Gerätekonfiguration.
Herstellen einer Verbindung mit der PowerShell-Schnittstelle.
Geben Sie an der Eingabeaufforderung Folgendes ein:
Reset-HcsAppliance -SecureWipeBootDisk -SecureWipeDataDisks
Das folgende Beispiel zeigt die Verwendung dieses Cmdlets:
[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
Abrufen von Computeprotokollen
Wenn die Computerolle auf Ihrem Gerät konfiguriert ist, können Sie die Computeprotokolle auch über die PowerShell-Schnittstelle abrufen.
Herstellen einer Verbindung mit der PowerShell-Schnittstelle.
Verwenden Sie
Get-AzureDataBoxEdgeComputeRoleLogs
zum Abrufen der Computeprotokolle für Ihr Gerät.Nachfolgend sehen Sie ein Beispiel für die Verwendung dieses Cmdlets:
Get-AzureDataBoxEdgeComputeRoleLogs -Path "\\hcsfs\logs\myacct" -Credential "username" -FullLogCollection
Es folgt eine Beschreibung der verwendeten Parameter des Cmdlets:
Path
: Geben Sie einen Netzwerkpfad für die Freigabe an, in der Sie das Computeprotokollpaket erstellen möchten.Credential
: Geben Sie den Benutzernamen für die Netzwerkfreigabe an. Wenn Sie dieses Cmdlet ausführen, müssen Sie das Freigabekennwort angeben.FullLogCollection
: Dieser Parameter stellt sicher, dass das Protokollpaket alle Computeprotokolle enthält. Standardmäßig enthält das Protokollpaket nur eine Teilmenge der Protokolle.
Ändern von Kubernetes-Workloadprofilen
Nachdem Sie einen Cluster gebildet und konfiguriert sowie und neue virtuelle Switches erstellt haben, können Sie virtuelle Netzwerke hinzufügen oder löschen, die Ihren virtuellen Switches zugeordnet sind. Ausführliche Schritte finden Sie unter Konfigurieren virtueller Switches.
Nachdem virtuelle Switches erstellt wurden, können Sie die Switches für Kubernetes-Computedatenverkehr aktivieren, um ein Kubernetes-Workloadprofil anzugeben. Führen Sie die Schritte unter Konfigurieren von Compute-IPs aus, um diesen Vorgang auf der lokalen Benutzeroberfläche durchzuführen. Bei Verwendung von PowerShell führen Sie die folgenden Schritte aus:
Herstellen einer Verbindung mit der PowerShell-Schnittstelle.
Verwenden Sie das Cmdlet
Get-HcsApplianceInfo
, um aktuelleKubernetesPlatform
- undKubernetesWorkloadProfile
-Einstellungen für Ihr Gerät abzurufen.Verwenden Sie das Cmdlet
Get-HcsKubernetesWorkloadProfiles
, um die Profile zu identifizieren, die auf Ihrem Azure Stack Edge-Gerät verfügbar sind.[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>
Verwenden Sie das Cmdlet
Set-HcsKubernetesWorkloadProfile
, um das Workloadprofil für AP5GC, eine Azure Private MEC-Lösung, festzulegen.Nachfolgend sehen Sie ein Beispiel für die Verwendung dieses Cmdlets:
Set-HcsKubernetesWorkloadProfile -Type "AP5GC"
Hier sehen Sie eine Beispielausgabe für dieses Cmdlet:
[10.100.10.10]: PS>KubernetesPlatform : AKS [10.100.10.10]: PS>KubernetesWorkloadProfile : AP5GC [10.100.10.10]: PS>
Ändern der Pod- und Dienstsubnetze in Kubernetes
Wenn Sie in Ihrer Umgebung die Option andere Workloads ausführen, verwendet Kubernetes auf Ihrem Azure Stack Edge-Gerät standardmäßig das Subnetz 172.27.0.0/16 für den Pod und das Subnetz 172.28.0.0/16 für den Dienst. Wenn diese Subnetze bereits in Ihrem Netzwerk verwendet werden, können Sie das Cmdlet Set-HcsKubeClusterNetworkInfo
ausführen, um diese Subnetze zu ändern.
Sie sollten diese Konfiguration vor dem Konfigurieren von Compute im Azure-Portal ausführen, da in diesem Schritt der Kubernetes-Cluster erstellt wird.
Stellen Sie eine Verbindung mit der PowerShell-Schnittstelle des Geräts her.
Führen Sie an der PowerShell-Schnittstelle des Geräts folgenden Befehl aus:
Set-HcsKubeClusterNetworkInfo -PodSubnet <subnet details> -ServiceSubnet <subnet details>
Ersetzen Sie die <Subnetzdetails> durch den Subnetzbereich, den Sie verwenden möchten.
Nachdem Sie diesen Befehl ausgeführt haben, können Sie mit dem Befehl
Get-HcsKubeClusterNetworkInfo
überprüfen, ob sich die Pod- und Dienstsubnetze geändert haben.
Nachfolgend finden Sie eine Beispielausgabe für diesen Befehl.
[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>
Debuggen von Kubernetes-Problemen im Zusammenhang mit IoT Edge
Bevor Sie beginnen, müssen Sie :
- Das Computenetzwerk konfiguriert haben. Informieren Sie sich dazu im Tutorial: Konfigurieren des Netzwerks für Azure Stack Edge Pro mit GPU.
- Die Computerolle auf Ihrem Gerät konfiguriert haben.
Ein Azure Stack Edge Pro GPU-Gerät, auf dem die Computerolle konfiguriert wurde, können Sie mit zwei verschiedenen Befehlssätzen überwachen oder dafür eine Problembehandlung vornehmen.
- Unter Verwendung von
iotedge
-Befehlen. Diese Befehle sind für grundlegende Vorgänge auf dem Gerät vorgesehen. - Unter Verwendung von
kubectl
-Befehlen. Diese Befehle sind für umfangreiche Vorgänge auf dem Gerät vorgesehen.
Um eine der oben aufgeführten Gruppen von Befehlen auszuführen, müssen Sie eine Verbindung mit der PowerShell-Schnittstelle herstellen.
Verwenden von iotedge
-Befehlen
Um eine Liste der verfügbaren Befehle anzuzeigen, stellen Sie eine Verbindung zur PowerShell-Schnittstelle her, und verwenden Sie die iotedge
-Funktion.
[10.100.10.10]: PS>iotedge -?
Usage: iotedge COMMAND
Commands:
list
logs
restart
[10.100.10.10]: PS>
Die folgende Tabelle enthält eine kurze Beschreibung der für iotedge
verfügbaren Befehle:
Befehl | Beschreibung |
---|---|
list |
Module auflisten |
logs |
Abrufen der Protokolle eines Moduls |
restart |
Beenden und Neustarten eines Moduls |
Auflisten aller IoT Edge-Module
Mit dem Befehl iotedge list
können Sie alle Module auflisten, die auf Ihrem Gerät ausgeführt werden.
Nachfolgend finden Sie eine Beispielausgabe dieses Befehls. Mit diesem Befehl werden alle Module, die zugehörige Konfiguration und die externen IP-Adressen aufgelistet, die den Modulen zugeordnet sind. Beispielsweise können Sie mit https://10.128.44.244
auf die Webserver-App zugreifen.
[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>
Neustarten von Modulen
Mit dem Befehl list
können Sie alle Module auflisten, die auf Ihrem Gerät ausgeführt werden. Suchen Sie dann den Namen des Moduls, das Sie neu starten möchten, und verwenden Sie ihn mit dem Befehl restart
.
Hier sehen Sie eine Beispielausgabe des Neustarts eines Moduls. Basierend auf der Beschreibung, wie lang das Modul ausgeführt wird, können Sie sehen, dass cuda-sample1
neu gestartet wurde.
[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>
Abrufen von Modulprotokollen
Mit dem Befehl logs
können Sie Protokolle für alle IoT Edge-Module abrufen, die auf Ihrem Gerät ausgeführt werden.
Wenn beim Erstellen des Containerimages oder beim Abrufen des Images ein Fehler aufgetreten ist, führen Sie logs edgeagent
aus. edgeagent
ist der IoT Edge-Runtime-Container, der für die Bereitstellung anderer Container zuständig ist. Da logs edgeagent
alle Protokolle sichert, lassen sich mit der Option --tail
0` die zuletzt aufgetretenen Fehler anzeigen.
Hier ist eine Beispielausgabe.
[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>
Hinweis
Die direkten Methoden wie GetModuleLogs oder UploadModuleLogs werden für Ihre Azure Stack Edge-Instanz in IoT Edge in Kubernetes nicht unterstützt.
Verwenden von kubectl-Befehlen
Auf einem Azure Stack Edge Pro GPU-Gerät, für das die Computerolle konfiguriert wurde, stehen alle kubectl
-Befehle für die Überwachung oder Problembehandlung von Modulen zur Verfügung. Führen Sie kubectl --help
im Befehlsfenster aus, um eine Liste der verfügbaren Befehle anzuzeigen.
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>
Eine umfassende Liste der kubectl
-Befehle finden Sie auf dem kubectl
Spickzettel.
So erhalten Sie eine IP-Adresse für Dienste oder Module, die außerhalb von Kubernetes bereitgestellt werden
Führen Sie den folgenden Befehl aus, um die IP-Adresse eines Lastenausgleichsdiensts oder -moduls abzurufen, der/das außerhalb von Kubernetes bereitgestellt wird:
kubectl get svc -n iotedge
Im Folgenden finden Sie eine Beispielausgabe aller Dienste oder Module, die außerhalb des Kubernetes-Clusters bereitgestellt werden.
[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>
Die IP-Adresse in der Spalte „Externe IP“ entspricht dem externen Endpunkt für den Dienst oder das Modul. Sie können die externe IP-Adresse auch im Kubernetes-Dashboard abrufen.
Überprüfen, ob das Modul erfolgreich bereitgestellt wurde
Computingmodule sind Container mit implementierter Geschäftslogik. Ein Kubernetes-Pod kann mehrere Container ausführen.
Stellen Sie eine Verbindung mit der PowerShell-Schnittstelle des Geräts her, um zu überprüfen, ob ein Computemodul erfolgreich bereitgestellt wurde.
Führen Sie den get pods
-Befehl aus, und überprüfen Sie, ob der (dem Computemodul entsprechende) Container ausgeführt wird.
Führen Sie den folgenden Befehl aus, um die Liste aller in einem bestimmten Namespace ausgeführten Pods zu erhalten:
get pods -n <namespace>
Führen Sie den folgenden Befehl aus, um die über IOT Edge bereitgestellten Module zu überprüfen:
get pods -n iotedge
Im Folgenden finden Sie eine Beispielausgabe aller Pods, die im iotedge
-Namespace ausgeführt werden.
[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>
Der Status Status zeigt an, dass alle Pods im Namespace ausgeführt werden, und der Status Bereit gibt die Anzahl der in einem Pod bereitgestellten Container an. Im vorherigen Beispiel werden alle Pods und alle in den Pods bereitgestellten Module ausgeführt.
Führen Sie den folgenden Befehl aus, um die über Azure Arc bereitgestellten Module zu überprüfen:
get pods -n azure-arc
Alternativ können Sie eine Verbindung mit dem Kubernetes-Dashboard herstellen, um die IOT Edge- oder Azure Arc-Bereitstellungen anzuzeigen.
Führen Sie den folgenden Befehl aus, um eine ausführlichere Ausgabe eines bestimmten Pods für einen bestimmten Namespace zu erhalten:
kubectl describe pod <pod name> -n <namespace>
Die Beispielausgabe sieht wie folgt aus:
[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>
Abrufen von Containerprotokollen
Führen Sie den folgenden Befehl über die PowerShell-Schnittstelle des Geräts aus, um die Protokolle für ein Modul abzurufen:
kubectl logs <pod_name> -n <namespace> --all-containers
Weil das Flag all-containers
alle Protokolle für sämtliche Container sichert, lassen sich mit der Option --tail 10
die zuletzt aufgetretenen Fehler anzeigen.
Im Folgenden finden Sie eine Beispielausgabe:
[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>
Ändern des Arbeitsspeichers, Prozessorgrenzwerte für Kubernetes-Workerknoten
Führen Sie die folgenden Schritte aus, um die Arbeitsspeicher- oder Prozessorgrenzwerte für Kubernetes-Workerknoten zu ändern:
Stellen Sie eine Verbindung mit der PowerShell-Schnittstelle des Geräts her.
Um die aktuellen Ressourcen für den Workerknoten und die Rollenoptionen abzurufen, führen Sie den folgenden Befehl aus:
Get-AzureDataBoxEdgeRole
Hier ist eine Beispielausgabe. Beachten Sie die Werte für
Name
undCompute
unter dem AbschnittResources
.MemoryInBytes
undProcessorCount
bezeichnen die aktuell zugewiesenen Werte für Speicher und Prozessoranzahl für den Kubernetes-Workerknoten.[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>
Um die Werte für Speicher und Prozessoren für den Workerknoten zu ändern, führen Sie den folgenden Befehl aus:
Set-AzureDataBoxEdgeRoleCompute -Name <Name value from the output of Get-AzureDataBoxEdgeRole> -Memory <Value in Bytes> -ProcessorCount <No. of cores>
Hier ist eine Beispielausgabe.
[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>
Beachten Sie beim Ändern der Arbeitsspeicher- und Prozessornutzung die folgenden Leitlinien.
- Der Standardarbeitsspeicher hat eine Größe von 25 % der Gerätespezifikation.
- Die standardmäßige Anzahl der Prozessoren beträgt 30 % der Gerätespezifikation.
- Beim Ändern der Werte für Arbeitsspeicher und Anzahl der Prozessoren empfehlen wir, die Werte zwischen 15 % und 60 % des Gerätearbeitsspeichers und der Anzahl der Prozessoren zu variieren.
- Wir empfehlen eine Obergrenze von 60 %, damit genügend Ressourcen für Systemkomponenten vorhanden sind.
Verbinden mit dem BMC
Hinweis
Der Baseboard-Verwaltungscontroller (Baseboard Management Controller, BMC) ist in Azure Stack Edge Pro 2 und Azure Stack Edge Mini R nicht verfügbar. Die in diesem Abschnitt beschriebenen Cmdlets gelten nur für Azure Stack Edge Pro GPU und Azure Stack Edge Pro R.
Der BMC wird verwendet, um Ihr Gerät remote zu überwachen und zu verwalten. In diesem Abschnitt werden die Cmdlets beschrieben, die zum Verwalten der BMC-Konfiguration verwendet werden können. Stellen Sie vor dem Ausführen eines dieser Cmdlets eine Verbindung mit der PowerShell-Schnittstelle des Geräts her.
Get-HcsNetBmcInterface
: Verwenden Sie dieses Cmdlet, um die Netzwerk-Konfigurationseigenschaften des BMC abzurufen, z. B.IPv4Address
,IPv4Gateway
,IPv4SubnetMask
,DhcpEnabled
.Hier ist eine Beispielausgabe:
[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
: Sie können dieses Cmdlet auf die folgenden zwei Arten verwenden.Verwenden Sie das Cmdlet, um die DHCP-Konfiguration für den BMC über den entsprechenden Wert für den Parameter
UseDhcp
zu aktivieren oder zu deaktivieren.Set-HcsNetBmcInterface -UseDhcp $true
Hier ist eine Beispielausgabe:
[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>
Verwenden Sie dieses Cmdlet, um die statische Konfiguration für den BMC zu konfigurieren. Sie können Werte für
IPv4Address
,IPv4Gateway
undIPv4SubnetMask
angeben.Set-HcsNetBmcInterface -IPv4Address "<IPv4 address of the device>" -IPv4Gateway "<IPv4 address of the gateway>" -IPv4SubnetMask "<IPv4 address for the subnet mask>"
Hier ist eine Beispielausgabe:
[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
: Verwenden Sie dieses Cmdlet, um das BMC-Kennwort fürEdgeUser
zu ändern. Beim Benutzernamen (EdgeUser
) wird die Groß-/Kleinschreibung beachtet.Hier ist eine Beispielausgabe:
[10.100.10.10]: PS> Set-HcsBmcPassword -NewPassword "Password1" [10.100.10.10]: PS>
Beenden der Remotesitzung
Schließen Sie das PowerShell-Fenster, um die PowerShell-Remotesitzung zu beenden.
Nächste Schritte
- Stellen Sie Azure Stack Edge Pro GPU im Azure-Portal bereit.