Windows PowerShell を使用して Azure Stack Edge Pro GPU デバイスを管理する

適用対象: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

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 クライアントからリモートで接続するには、次の手順に従います。

  1. Windows PowerShell セッションを管理者として実行します。

  2. Windows リモート管理サービスがクライアントで実行されていることを確認します。 コマンド プロンプトに、次のコマンドを入力します。

    winrm quickconfig
    

    詳細については、「Windows リモート管理のためのインストールと構成」をご覧ください。

  3. hosts ファイルで使用される接続文字列に変数を割り当てます。

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

    <Node serial number><DNS domain of the device> は、デバイスのノードのシリアル番号と DNS ドメインに置き換えます。 ノードのシリアル番号の値は、デバイスのローカル Web UI の [証明書] ページから、そして DNS ドメインは [デバイス] ページから取得できます。

  4. デバイスの接続文字列をクライアントの信頼されたホスト一覧に追加するために、次のコマンドを入力します。

    Set-Item WSMan:\localhost\Client\TrustedHosts $Name -Concatenate -Force
    
  5. デバイスの Windows PowerShell セッションを開始します。

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

    信頼関係に関連するエラーが表示された場合は、デバイスにアップロードされたノード証明書の署名チェーンが、デバイスにアクセスしているクライアントにもインストールされているかどうかを確認します。

  6. パスワードの入力を求められたら、入力します。 ローカル 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 サポートでは、このパッケージを使用して問題のトラブルシューティングを行います。 サポート パッケージを作成するには、次の手順に従います。

  1. デバイスの PowerShell インターフェイスに接続します

  2. 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 - サポート パッケージに定期的な統計ログを含めるように指定します。

デバイス情報を表示する

  1. PowerShell インターフェイスに接続する

  2. 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 ドライバー情報を取得することもできます。

  1. PowerShell インターフェイスに接続する

  2. 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 を有効にするには、次の手順を実行します。

  1. 開始する前に次の点を確認します。

    1. Azure の Azure Stack Edge リソースを使用して、Azure Stack Edge Pro デバイスの構成とアクティブ化が完了していること。
    2. Azure portal でこのデバイスのコンピューティングが構成済みであること。
  2. PowerShell インターフェイスに接続する

  3. 次のコマンドを使用して、お使いのデバイスで MPS を有効にします。

    Start-HcsGpuMPS
    

Note

デバイス ソフトウェアと Kubernetes クラスターが更新されても、ワークロードの MPS 設定は保持されません。 MPS を再度有効にする必要があります。

デバイスをリセットする

デバイスをリセットするには、データ ディスクのすべてのデータおよびデバイスのブート ディスクを安全に消去する必要があります。

データ ディスクとブート ディスクの両方を消去する、またはデータ ディスクのみを消去するには、Reset-HcsAppliance コマンドレットを使用します。 SecureWipeBootDisk および SecureWipeDataDisks スイッチによってブート ディスクとデータ ディスクとをそれぞれワイプできます。

SecureWipeBootDisk スイッチによってブート ディスクがワイプされ、デバイスが使用できなくなります。 これは、デバイスを Microsoft に返す必要がある場合にのみ使用してください。 詳細については、Microsoft へのデバイスの返却に関する記事を参照してください。

ローカル Web UI でデバイス リセットを使用する場合、データ ディスクのみが安全に消去されますが、ブート ディスクはそのまま維持されます。 ブート ディスクはデバイス構成を含みます。

  1. PowerShell インターフェイスに接続する

  2. コマンド プロンプトに、次のコマンドを入力します。

    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 インターフェイス経由でコンピューティング ログを取得することもできます。

  1. PowerShell インターフェイスに接続する

  2. Get-AzureDataBoxEdgeComputeRoleLogs を使用してデバイスのコンピューティング ログを取得します。

    このコマンドレットの使用例を次に示します。

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

    このコマンドレットで使用されるパラメーターの説明を次に示します。

    • Path: コンピューティング ログ パッケージを作成する共有へのネットワーク パスを指定します。
    • Credential: ネットワーク共有のユーザー名を指定します。 このコマンドレットを実行するときには、共有のパスワードを指定する必要があります。
    • FullLogCollection: このパラメーターにより、ログ パッケージにすべてのコンピューティング ログが確実に含まれます。 既定では、ログ パッケージに含まれるものは、ログのサブセットのみです。

Kubernetes ワークロード プロファイルを変更する

クラスターを作成して構成し、新しい仮想スイッチを作成したら、仮想スイッチに関連付けられた仮想ネットワークを追加または削除できます。 詳細な手順については、「仮想スイッチを構成する」をご覧ください。

仮想スイッチを作成したら、Kubernetes コンピューティング トラフィック用にスイッチを有効にして、Kubernets ワークロード プロファイルを指定できます。 ローカル UI を使ってこれを行うには、「コンピューティング IP を構成する」の手順のようにします。 PowerShell を使ってこれを行うには、次の手順のようにします。

  1. PowerShell インターフェイスに接続する

  2. Get-HcsApplianceInfo コマンドレットを使って、お使いのデバイスの KubernetesPlatformKubernetesWorkloadProfile の現在の設定を取得します。

  3. 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>
    
  4. 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 からコンピューティングを構成する前に、この構成を実行します。

  1. デバイスの PowerShell インターフェイスに接続します

  2. デバイスの PowerShell インターフェイスから、次のように実行します。

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

    <subnet detail> を、使用するサブネットの範囲に置き換えます。

  3. このコマンドの実行が完了したら、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>

開始する前に、以下が必要になります。

コンピューティング ロールが構成されている 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.244Web サーバー アプリにアクセスできます。

[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 ワーカー ノードのメモリまたはプロセッサの制限を変更するには、次の手順を実行します。

  1. デバイスの PowerShell インターフェイスに接続します

  2. ワーカー ノードの現在のリソースとロール オプションを取得するには、次のコマンドを実行します。

    Get-AzureDataBoxEdgeRole

    以下は出力例です。 Resources セクションの NameCompute の値をメモします。 MemoryInBytesProcessorCount は、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. ワーカー ノードのメモリおよびプロセッサの値を変更するには、次のコマンドを実行します。

    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 のネットワーク構成プロパティ (IPv4AddressIPv4GatewayIPv4SubnetMaskDhcpEnabled など) を取得するには、このコマンドレットを使います。

    出力例を次に示します。

    [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 の静的構成を構成します。 IPv4AddressIPv4Gateway、および 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 ウィンドウを閉じます。

次のステップ