Windows PowerShell を使用して Azure Stack Edge Pro GPU デバイスを管理する
適用対象:Azure Stack Edge Pro - GPUAzure Stack Edge Pro 2Azure Stack Edge Pro RAzure Stack Edge Mini R
Azure Stack Edge Pro GPU ソリューションを使用すると、データを処理してネットワーク経由で Azure に送信できます。 この記事では、Azure Stack Edge Pro GPU デバイスの構成と管理のタスクについて、いくつか説明します。 Azure portal、ローカル Web UI、または Windows PowerShell インターフェイスを使用してデバイスを管理できます。
この記事では、デバイスの PowerShell インターフェイスに接続する方法と、このインターフェイスを使用して実行できるタスクに重点を置いて説明します。
PowerShell インターフェイスに接続する
デバイスにリモート接続する手順は、クライアントのオペレーティング システムによって異なります。
Windows クライアントからリモートで接続する
前提条件
開始する前に次の点を確認します。
Windows クライアントで、Windows PowerShell 5.0 以降が実行されている。
Windows クライアントに、デバイスにインストールされているノード証明書に対応する署名チェーン (ルート証明書) がある。 詳細な手順については、Windows クライアントに証明書をインストールするに関するページを参照してください。
Windows クライアントの
C:\Windows\System32\drivers\etc
にあるhosts
ファイルに、次の形式のノード証明書に対応するエントリがある。<Device IP> <Node serial number>.<DNS domain of the device>
hosts
ファイルのエントリ例を以下に示します。10.100.10.10 1HXQG13.wdshcsso.com
詳しい手順
Windows クライアントからリモートで接続するには、次の手順に従います。
Windows PowerShell セッションを管理者として実行します。
Windows リモート管理サービスがクライアントで実行されていることを確認します。 コマンド プロンプトに、次のコマンドを入力します。
winrm quickconfig
詳細については、「Windows リモート管理のためのインストールと構成」をご覧ください。
hosts
ファイルで使用される接続文字列に変数を割り当てます。$Name = "<Node serial number>.<DNS domain of the device>"
<Node serial number>
と<DNS domain of the device>
は、デバイスのノードのシリアル番号と DNS ドメインに置き換えます。 ノードのシリアル番号の値は、デバイスのローカル Web UI の [証明書] ページから、そして DNS ドメインは [デバイス] ページから取得できます。デバイスの接続文字列をクライアントの信頼されたホスト一覧に追加するために、次のコマンドを入力します。
Set-Item WSMan:\localhost\Client\TrustedHosts $Name -Concatenate -Force
デバイスの Windows PowerShell セッションを開始します。
Enter-PSSession -ComputerName $Name -Credential ~\EdgeUser -ConfigurationName Minishell -UseSSL
信頼関係に関連するエラーが表示された場合は、デバイスにアップロードされたノード証明書の署名チェーンが、デバイスにアクセスしているクライアントにもインストールされているかどうかを確認します。
パスワードの入力を求められたら、入力します。 ローカル Web UI へのサインインに使用するパスワードと同じものを使用してください。 既定のローカル Web UI パスワードは Password1 です。 リモート PowerShell を使用してデバイスに正常に接続すると、次のサンプル出力が表示されます。
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>
-UseSSL
オプションを使用すると、PowerShell を介して https 経由でリモート処理が行われます。 PowerShell を介してリモート接続する場合は、常に https を使用することをお勧めします。 信頼されたネットワーク内では、http 経由の PowerShell を介したリモート処理を使用できます。 最初に、ローカル UI で http 経由のリモート PowerShell を有効にします。 その後、-UseSSL
オプションを指定せずに、前の手順を使用してデバイスの PowerShell インターフェイスに接続できます。
証明書を使用していない場合 (証明書を使用することをお勧めします)、セッション オプション -SkipCACheck -SkipCNCheck -SkipRevocationCheck
を使用して証明書の妥当性確認をスキップできます。
$sessOptions = New-PSSessionOption -SkipCACheck -SkipCNCheck -SkipRevocationCheck
Enter-PSSession -ComputerName $Name -Credential ~\EdgeUser -ConfigurationName Minishell -UseSSL -SessionOption $sessOptions
証明書の確認をスキップする場合の出力例を次に示します。
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>
重要
現在のリリースでは、Windows クライアント経由でのみデバイスの PowerShell インターフェイスに接続できます。 -UseSSL
オプションは、Linux クライアントでは機能しません。
サポート パッケージを作成する
デバイスの問題が発生した場合は、システム ログからサポート パッケージを作成できます。 Microsoft サポートでは、このパッケージを使用して問題のトラブルシューティングを行います。 サポート パッケージを作成するには、次の手順に従います。
デバイスの PowerShell インターフェイスに接続します。
Get-HcsNodeSupportPackage
コマンドを使用してサポート パッケージを作成します。 コマンドレットの使用方法は次のとおりです。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>]
このコマンドレットはデバイスからログを収集し、指定されたネットワークまたはローカル共有にこれらのログをコピーします。
使用されるパラメーターは次のとおりです。
-Path
- サポート パッケージのコピー先のネットワークまたはローカル パスを指定します。 ("必須")-Credential
- 保護されたパスにアクセスする視覚情報を指定します。-Zip
- ZIP ファイルを生成するように指定します。-Include
- サポート パッケージにコンポーネントを含めるように指定します。 指定しないと、Default
が想定されます。-IncludeArchived
- サポート パッケージにアーカイブ ログを含めるように指定します。-IncludePeriodicStats
- サポート パッケージに定期的な統計ログを含めるように指定します。
デバイス情報を表示する
Get-HcsApplianceInfo
を使用してデバイスの情報を取得します。このコマンドレットの使用例を次に示します。
[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
こちらの重要なデバイス情報のいくつかをまとめた表をご覧ください。
パラメーター 説明 FriendlyName ローカル Web UI でデバイスのデプロイ中に構成されるデバイスのフレンドリ名。 既定のフレンドリ名は、デバイスのシリアル番号です。 SerialNumber デバイスのシリアル番号は、出荷時に割り当てられる一意の数です。 モデル Azure Stack Edge または Data Box Gateway デバイスのモデルです。 モデルは、Azure Stack Edge の場合は物理で、Data Box Gateway の場合は仮想です。 FriendlySoftwareVersion デバイス ソフトウェアのバージョンに対応するフレンドリ文字列。 プレビューを実行しているシステムの場合、ソフトウェアのフレンドリ バージョンは Data Box Edge 1902 です。 HcsVersion デバイスで実行されている HCS ソフトウェアのバージョン。 たとえば、Data Box Edge 1902 に対応する HCS ソフトウェアのバージョンは 1.4.771.324 です。 LocalCapacityInMb デバイスの合計容量 (メガビット単位)。 IsRegistered この値は、デバイスがサービスでアクティブ化されるかどうかを示します。
GPU ドライバー情報を表示する
お使いのデバイスにコンピューティング ロールが構成されている場合は、PowerShell インターフェイス経由で GPU ドライバー情報を取得することもできます。
Get-HcsGpuNvidiaSmi
を使用して、お使いのデバイスの GPU ドライバー情報を取得します。このコマンドレットの使用例を次に示します。
Get-HcsGpuNvidiaSmi
このコマンドレットのサンプル出力からのドライバー情報をメモしておきます。
+-----------------------------------------------------------------------------+ | 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 | +-------------------------------+----------------------+----------------------+
マルチプロセス サービス (MPS) を有効にする
Nvidia GPU 上のマルチプロセス サービス (MPS) は、GPU を複数のジョブで共有できるメカニズムを提供します。ここで、各ジョブには、GPU のリソースのうち一定のパーセントが割り当てられます。 MPS は、Azure Stack Edge Pro GPU デバイスのプレビュー機能です。 デバイスで MPS を有効にするには、次の手順を実行します。
開始する前に次の点を確認します。
- Azure の Azure Stack Edge リソースを使用して、Azure Stack Edge Pro デバイスの構成とアクティブ化が完了していること。
- Azure portal でこのデバイスのコンピューティングが構成済みであること。
次のコマンドを使用して、お使いのデバイスで MPS を有効にします。
Start-HcsGpuMPS
Note
デバイス ソフトウェアと Kubernetes クラスターが更新されても、ワークロードの MPS 設定は保持されません。 MPS を再度有効にする必要があります。
デバイスをリセットする
デバイスをリセットするには、データ ディスクのすべてのデータおよびデバイスのブート ディスクを安全に消去する必要があります。
データ ディスクとブート ディスクの両方を消去する、またはデータ ディスクのみを消去するには、Reset-HcsAppliance
コマンドレットを使用します。 SecureWipeBootDisk
および SecureWipeDataDisks
スイッチによってブート ディスクとデータ ディスクとをそれぞれワイプできます。
SecureWipeBootDisk
スイッチによってブート ディスクがワイプされ、デバイスが使用できなくなります。 これは、デバイスを Microsoft に返す必要がある場合にのみ使用してください。 詳細については、Microsoft へのデバイスの返却に関する記事を参照してください。
ローカル Web UI でデバイス リセットを使用する場合、データ ディスクのみが安全に消去されますが、ブート ディスクはそのまま維持されます。 ブート ディスクはデバイス構成を含みます。
コマンド プロンプトに、次のコマンドを入力します。
Reset-HcsAppliance -SecureWipeBootDisk -SecureWipeDataDisks
次の例は、コマンドレットの使用方法を示しています。
[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
コンピューティング ログを取得する
デバイスにコンピューティング ロールが構成されている場合は、PowerShell インターフェイス経由でコンピューティング ログを取得することもできます。
Get-AzureDataBoxEdgeComputeRoleLogs
を使用してデバイスのコンピューティング ログを取得します。このコマンドレットの使用例を次に示します。
Get-AzureDataBoxEdgeComputeRoleLogs -Path "\\hcsfs\logs\myacct" -Credential "username" -FullLogCollection
このコマンドレットで使用されるパラメーターの説明を次に示します。
Path
: コンピューティング ログ パッケージを作成する共有へのネットワーク パスを指定します。Credential
: ネットワーク共有のユーザー名を指定します。 このコマンドレットを実行するときには、共有のパスワードを指定する必要があります。FullLogCollection
: このパラメーターにより、ログ パッケージにすべてのコンピューティング ログが確実に含まれます。 既定では、ログ パッケージに含まれるものは、ログのサブセットのみです。
Kubernetes ワークロード プロファイルを変更する
クラスターを作成して構成し、新しい仮想スイッチを作成したら、仮想スイッチに関連付けられた仮想ネットワークを追加または削除できます。 詳細な手順については、「仮想スイッチを構成する」をご覧ください。
仮想スイッチを作成したら、Kubernetes コンピューティング トラフィック用にスイッチを有効にして、Kubernets ワークロード プロファイルを指定できます。 ローカル UI を使ってこれを行うには、「コンピューティング IP を構成する」の手順のようにします。 PowerShell を使ってこれを行うには、次の手順のようにします。
Get-HcsApplianceInfo
コマンドレットを使って、お使いのデバイスのKubernetesPlatform
とKubernetesWorkloadProfile
の現在の設定を取得します。Get-HcsKubernetesWorkloadProfiles
コマンドレットを使って、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>
Set-HcsKubernetesWorkloadProfile
コマンドレットを使って、Azure プライベート MEC ソリューションである AP5GC のワークロード プロファイルを設定します。このコマンドレットの使用例を次に示します。
Set-HcsKubernetesWorkloadProfile -Type "AP5GC"
このコマンドレットの出力例を次に示します。
[10.100.10.10]: PS>KubernetesPlatform : AKS [10.100.10.10]: PS>KubernetesWorkloadProfile : AP5GC [10.100.10.10]: PS>
Kubernetes ポッドとサービス サブネットの変更
環境内で他のワークロード オプションを実行している場合、既定では、Azure Stack Edge デバイス上の Kubernetes は、ポッドとサービスにそれぞれサブネット 172.27.0.0/16 と 172.28.0.0/16 を使用します。 これらのサブネットがネットワークで既に使用されている場合は、Set-HcsKubeClusterNetworkInfo
コマンドレットを実行して変更できます。
この手順で Kubernetes クラスターが作成されて、Azure portal からコンピューティングを構成する前に、この構成を実行します。
デバイスの PowerShell インターフェイスに接続します。
デバイスの PowerShell インターフェイスから、次のように実行します。
Set-HcsKubeClusterNetworkInfo -PodSubnet <subnet details> -ServiceSubnet <subnet details>
<subnet detail> を、使用するサブネットの範囲に置き換えます。
このコマンドの実行が完了したら、
Get-HcsKubeClusterNetworkInfo
コマンドを使用して、ポッドおよびサービスのサブネットが変更されたことを確認できます。
このコマンドの出力例を次に示します。
[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>
IoT Edge に関連する Kubernetes の問題をデバッグする
開始する前に、以下が必要になります。
- コンピューティング ネットワークが構成済みである。 「チュートリアル: GPU 搭載の Azure Stack Edge Pro 用のネットワークを構成する」を参照してください。
- デバイスでコンピューティング ロールが構成済みである。
コンピューティング ロールが構成されている Azure Stack Edge Pro GPU デバイスでは、2 つの異なるコマンド セットを利用してデバイスをトラブルシューティングすることや、監視することができます。
iotedge
コマンドの使用。 これらのコマンドはデバイスの基本操作に利用できます。kubectl
コマンドの使用。 これらのコマンドはデバイスのさまざまな操作に利用できます。
上記のコマンド セットのいずれかを実行するには、PowerShell インターフェイスに接続する必要があります。
iotedge
コマンドの使用
利用できるコマンドの一覧を表示するには、PowerShell インターフェイスに接続し、iotedge
関数を使用します。
[10.100.10.10]: PS>iotedge -?
Usage: iotedge COMMAND
Commands:
list
logs
restart
[10.100.10.10]: PS>
次の表は、iotedge
で利用できるコマンドの説明を簡単にまとめたものです。
command | 説明 |
---|---|
list |
モジュールの一覧を表示する |
logs |
モジュールのログを取得する |
restart |
モジュールの停止と再開 |
すべての IoT Edge モジュールを一覧表示する
デバイスで実行されているすべてのモジュールを一覧表示するには、iotedge list
コマンドを使用します。
このコマンドの出力例を次に示します。 このコマンドは、すべてのモジュール、関連付けられている構成、およびモジュールに関連付けられている外部 IP を一覧表示します。 たとえば、https://10.128.44.244
で Web サーバー アプリにアクセスできます。
[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>
モジュールを再起動する
デバイス上で実行されているすべてのモジュールを一覧表示するには、list
コマンドを使用します。 次に、再起動するモジュールの名前を特定し、それを 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: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>
モジュールのログを取得する
デバイス上で実行されている IoT Edge モジュールに関するログを取得するには、logs
コマンドを使用します。
コンテナー イメージの作成中またはイメージのプル中にエラーが発生した場合、logs edgeagent
を実行します。 edgeagent
は、他のコンテナーのプロビジョニングを担う IoT Edge ランタイム コンテナーです。 logs edgeagent
を実行するとすべてのログがダンプされるため、最近のエラーを表示する方法としては、オプション --tail
0` の利用をお勧めします。
以下は出力例です。
[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>
Note
GetModuleLogs や UploadModuleLogs などのダイレクト メソッドは、Azure Stack Edge 上の Kubernetes の IoT Edge ではサポートされていません。
kubectl コマンドを使用する
コンピューティング ロールが構成されている Azure Stack Edge Pro GPU デバイスでは、すべての kubectl
コマンドをモジュールの監視やトラブルシューティングに利用できます。 使用可能なコマンドの一覧を表示するには、コマンド ウィンドウから kubectl --help
を実行します。
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>
kubectl
コマンドの広範な一覧については、kubectl
チートシート を参照してください。
Kubernetes クラスターの外部に公開されているサービスまたはモジュールの IP を取得するには
Kubernetes の外部に公開されている負荷分散のサービスまたはモジュールの IP を取得するには、次のコマンドを実行します。
kubectl get svc -n iotedge
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>
External IP 列の IP アドレスは、サービスまたはモジュールの外部エンドポイントに対応します。 Kubernetes ダッシュボードで外部 IP を取得することもできます。
モジュールが正常にデプロイされているかどうかを確認するには
コンピューティング モジュールは、ビジネス ロジックが実装されたコンテナーです。 Kubernetes ポッドでは、複数のコンテナーを実行できます。
コンピューティング モジュールが正常にデプロイされたかどうかを確認するには、デバイスの PowerShell インターフェイスに接続します。
get pods
コマンドを実行し、コンテナー (コンピューティング モジュールに対応) が実行されているかどうかを確認します。
特定の名前空間で実行されているすべてのポッドの一覧を取得するには、次のコマンドを実行します。
get pods -n <namespace>
IoT Edge 経由でデプロイされているモジュールを確認するには、次のコマンドを実行します。
get pods -n iotedge
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>
状態 [Status] は、名前空間のすべてのポッドが実行されていることを示し、[Ready] はポッドにデプロイされたコンテナーの数を示します。 前の例では、すべてのポッドが実行されており、各ポッドにデプロイされているすべてのモジュールが実行されています。
Azure Arc 経由でデプロイされているモジュールを確認するには、次のコマンドを実行します。
get pods -n azure-arc
または、Kubernetes ダッシュボードに接続して IoT Edge または Azure Arc のデプロイを表示することもできます。
指定した名前空間の特定のポッドについてさらに詳細に出力するには、次のコマンドを実行します。
kubectl describe pod <pod name> -n <namespace>
サンプル出力を次に示します。
[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>
コンテナー ログを取得するには
モジュールのログを取得するには、デバイスの PowerShell インターフェイスから次のコマンドを実行します。
kubectl logs <pod_name> -n <namespace> --all-containers
all-containers
フラグはすべてのコンテナーのすべてのログをダンプするため、最近のエラーを表示する方法としては、オプション --tail 10
の利用をお勧めします。
サンプル出力を次に示します。
[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>
Kubernetes ワーカー ノードのメモリまたはプロセッサの制限を変更する
Kubernetes ワーカー ノードのメモリまたはプロセッサの制限を変更するには、次の手順を実行します。
デバイスの PowerShell インターフェイスに接続します。
ワーカー ノードの現在のリソースとロール オプションを取得するには、次のコマンドを実行します。
Get-AzureDataBoxEdgeRole
以下は出力例です。
Resources
セクションのName
とCompute
の値をメモします。MemoryInBytes
とProcessorCount
は、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>
ワーカー ノードのメモリおよびプロセッサの値を変更するには、次のコマンドを実行します。
Set-AzureDataBoxEdgeRoleCompute -Name <Name value from the output of Get-AzureDataBoxEdgeRole> -Memory <Value in Bytes> -ProcessorCount <No. of cores>
以下は出力例です。
[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>
メモリおよびプロセッサの使用率を変更する際は、次のガイドラインに従ってください。
- 既定のメモリは、デバイスの仕様の 25% です。
- 既定のプロセッサ数は、デバイスの仕様の 30% です。
- メモリとプロセッサ数の値を変更するときは、デバイスのメモリとプロセッサ数の 15% から 60% の間で値を変更することをお勧めします。
- システム コンポーネントに十分なリソースがあるように、上限の 60% にすることをお勧めします。
BMC に接続する
Note
ベースボード管理コントローラー (BMC) は、Azure Stack Edge Pro 2 および Azure Stack Edge Mini R では使用できません。このセクションで説明するコマンドレットは、Azure Stack Edge Pro GPU と Azure Stack Edge Pro R にのみ適用されます。
BMC は、デバイスをリモートで監視および管理するために使用されます。 このセクションでは、BMC の構成を管理するために使用できるコマンドレットについて説明します。 これらのコマンドレットを実行する前に、デバイスの PowerShell インターフェイスに接続します。
Get-HcsNetBmcInterface
: BMC のネットワーク構成プロパティ (IPv4Address
、IPv4Gateway
、IPv4SubnetMask
、DhcpEnabled
など) を取得するには、このコマンドレットを使います。出力例を次に示します。
[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
: このコマンドレットは、次の 2 つの方法で使用できます。コマンドレットを使用して、
UseDhcp
パラメーターに適切な値を使用することで、BMC の DHCP 構成を有効または無効にします。Set-HcsNetBmcInterface -UseDhcp $true
出力例を次に示します。
[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>
このコマンドレットを使用して、BMC の静的構成を構成します。
IPv4Address
、IPv4Gateway
、およびIPv4SubnetMask
の値を指定できます。Set-HcsNetBmcInterface -IPv4Address "<IPv4 address of the device>" -IPv4Gateway "<IPv4 address of the gateway>" -IPv4SubnetMask "<IPv4 address for the subnet mask>"
出力例を次に示します。
[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
:EdgeUser
の BMC パスワードを変更するには、このコマンドレットを使います。 ユーザー名EdgeUser
の大文字と小文字は区別されます。出力例を次に示します。
[10.100.10.10]: PS> Set-HcsBmcPassword -NewPassword "Password1" [10.100.10.10]: PS>
リモート セッションを終了します。
リモート PowerShell セッションを終了するには、PowerShell ウィンドウを閉じます。
次のステップ
- Azure portal で Azure Stack Edge Pro GPU をデプロイします。