次の方法で共有


Azure Stack Edge Pro GPU デバイス上の IoT Edge に関する問題のトラブルシューティング

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

この記事では、IoT Edge エージェントのランタイム応答と、お使いのデバイスにインストールされている IoT Edge サービスのエラーを確認することで、Azure Stack Edge Pro GPU デバイス上のコンピューティング関連のエラーをトラブルシューティングする方法について説明します。

IoT Edge ランタイム応答を確認する

IoT Edge エージェント ランタイムの応答を使用すると、コンピューティング関連のエラーをトラブルシューティングできます。 考えられる応答の一覧を以下に示します。

  • 200 - OK
  • 400 - デプロイ構成が正しくない形式であるか、無効です。
  • 417 - デバイスにデプロイ構成セットがありません。
  • 412 - デプロイ構成にあるスキーマ バージョンが無効です。
  • 406 - IoT Edge デバイスがオフラインであるか、状態レポートを送信していません。
  • 500 - IoT Edge ランタイムでエラーが発生しました。

詳細については、「IoT Edge エージェント」を参照してください。

IoT Edge サービスのエラーのトラブルシューティング

次のエラーは、ご使用の Azure Stack Edge Pro GPU デバイス上の IoT Edge サービスに関連しています。

Compute modules have Unknown status and can't be used (コンピューティング モジュールの状態が不明であるため、使用できません)

エラーの説明

デバイス上のすべてのモジュールは状態が不明と示されているため、使用できません。 不明な状態は再起動しても保持されます。

推奨される解決策

IoT Edge サービスを削除してから、モジュールを再デプロイしてください。 詳細については、「IoT Edge サービスの削除」を参照してください。

モジュールは実行中と表示されているが動作していない

エラーの説明

モジュールのランタイムの状態は実行中と表示されていますが、予期された結果は表示されません。

この状態の原因はモジュール ルート構成が機能していないためか、または edgehub が想定どおりにメッセージをルーティングしていない可能性があります。 edgehub ログを確認できます。 IoT Hub サービスに接続できないなどのエラーが表示される場合、最も一般的な理由は接続の問題です。 接続の問題は、IoT Hub サービスが既定の通信用ポートとして使用している AMPQ ポートがブロックされているか、Web プロキシ サーバーでこれらのメッセージがブロックされていることが原因である可能性があります。

推奨される解決策

次の手順を実行します。

  1. このエラーを解決するには、デバイスの IoT Hub リソースにアクセスし、Edge デバイスを選択します。
  2. [モジュールの設定] > [ランタイムの設定] にアクセスします。
  3. Upstream protocol 環境変数を追加し、それに値 AMQPWS を割り当てます。 この場合に構成されるメッセージは、ポート 443 を介して Websocket 経由で送信されます。

モジュールは実行中と表示されているが IP が割り当てられていない

エラーの説明

モジュールのランタイムの状態は実行中と表示されていますが、コンテナー化されたアプリに IP アドレスが割り当てられていません。

この状態が起きる原因は、Kubernetes 外部サービス IP に指定した IP の範囲が十分でないことです。 デプロイした各コンテナーまたは VM が確実に対象として含まれるように、この範囲を拡張してください。

推奨される解決策

ご利用のデバイスのローカル Web UI で、次の手順を実行します。

  1. [コンピューティング] ページにアクセスします。 コンピューティング ネットワークを有効にしたポートを選択します。
  2. [Kubernetes external service IPs]\(Kubernetes 外部サービス IP\) に IP の連続した静的な範囲を入力します。 edgehub サービスに 1 つの IP が必要です。 また、IoT Edge モジュールごと、およびデプロイする VM ごとに 1 つの IP が必要です。
  3. [適用] を選択します。 変更された IP 範囲は直ちに有効になります。

詳細については、「コンテナーの外部サービス IP を変更する」を参照してください。

IoT Edge モジュールの静的 IP を構成する

問題の説明

Kubernetes では、Azure Stack Edge Pro GPU デバイス上の各 IoT Edge モジュールに動的 IP が割り当てられます。 モジュールの静的 IP を構成するにはメソッドが必要です。

推奨される解決策

下に示すように、K8s-experimental セクションを使用して、IoT Edge モジュールの固定 IP アドレスを指定できます。

{
  "k8s-experimental": {
    "serviceOptions" : {
      "loadBalancerIP" : "100.23.201.78",
      "type" : "LoadBalancer"
    }
  }
}

Kubernetes サービスを内部通信用のクラスター IP サービスとして公開する

問題の説明

既定では、IoT サービスの種類はロード バランサーであり、外部に接続する IP アドレスがこのサービスに割り当てられます。 アプリケーションがクラスター内の他のポッドにアクセスするために Kubernetes クラスター内の Kubernetes ポッドを必要とする場合は、サービスをロード バランサー サービスでなく、クラスター IP サービスとして構成する必要がある場合があります。 詳細については、「Azure Stack Edge Pro GPU デバイスでの Kubernetes ネットワーク」を参照してください。

推奨される解決策

K8s-experimental セクションを通じて作成オプションを使用できます。 次のサービス オプションはポートのバインドで機能します。

{
"k8s-experimental": {
  "serviceOptions" : {
    "type" : "ClusterIP"
    }
  }
}

IoT ロールを作成または更新できない

問題の説明

セットアップ中に IoT デバイスを構成すると、次のエラーが表示されることがあります。

(HTTP ステータス コード: 400) <YourDeviceName> で IoT ロールを作成または更新できません。 エラー コード {NO_PARAM} のエラーが発生しました。 詳細については、エラー コードの詳細 (https://aka.ms/dbe-error-codes) を参照してください。 エラーが解決しない場合は、Microsoft サポート にお問い合わせください

推奨される解決策

データセンターのファイアウォールで送信元の IP または MAC アドレスに基づいてトラフィックを制限またはフィルター処理している場合は、コンピューティングの IP (Kubernetes ノード IP) および MAC アドレスが許可リストに登録されていることを確認してください。 MAC アドレスを指定するには、 Set-HcsMacAddressPool デバイスの PowerShell インターフェイスでコマンドレットを実行します。

次のステップ