AKS 用 Container Network Insights のエージェントとは (パブリック プレビュー)

Container Network Insights エージェントは、ai を利用した診断アシスタントであり、Azure Kubernetes Service (AKS) クラスター内のネットワークの問題を特定して解決するのに役立ちます。 DNS エラー、パケットドロップ、到達不能なサービス、ブロックされたトラフィックなど、自然言語の問題について説明します。 エージェントはクラスターから証拠を収集し、根本原因分析と修復ガイダンスを含む構造化されたレポートを返します。

Kubernetes レイヤーでのみ動作するツールとは異なり、Container Network Insights エージェントは、Linux ネットワーク プラグインを使用して ホスト レベルのネットワーク統計情報 を収集することもできます。 エージェントは、NIC リング バッファー、カーネル パケット カウンター、SoftIRQ 分散、およびクラスター ノード全体のソケット バッファー使用率を検査できます。 これにより、パケットのドロップ、ネットワークのボトルネック、Kubernetes 環境での診断が困難なハードウェア レベルの飽和などの低レベルの問題が発生します。

エージェントは、 AKS クラスター拡張機能としてデプロイされたクラスター内 Web アプリケーションとして実行されます。 ブラウザーからアクセスします。 洞察、分析、および推奨されるアクションが提供されます。 結果を確認し、提案された変更を自分で適用します。

Container Network Insights エージェントは、Azure Kubernetes Service (AKS)用のクラウド専用の機能です。 AKS ハイブリッド、Azure Stack HCI 上の AKS、または Arc 対応 Kubernetes クラスターではサポートされていません。

Important

AKS のプレビュー機能は、セルフサービスのオプトイン単位で利用できます。 プレビューは、"現状有姿のまま" および "利用可能な限度" で提供され、サービス レベル アグリーメントおよび限定保証から除外されるものとします。 AKS プレビューは、ベストエフォート ベースでカスタマー サポートによって部分的にカバーされます。 そのため、これらの機能は運用環境での使用を目的としていません。 詳細については、次のサポート記事を参照してください。

Container Network Insights エージェントでできること

Container Network Insights エージェントは、AKS ネットワークの問題の最も一般的で最も時間のかかるカテゴリのトラブルシューティングに役立ちます。

能力 動作内容
DNS のトラブルシューティング CoreDNS エラー、正しく構成されていない DNS ポリシー、DNS トラフィックをブロックするネットワーク ポリシー、NodeLocal DNS の問題、Cilium FQDN エグレス制限を診断します
パケット ドロップ分析 NIC レベルの RX ドロップ、カーネル パケット損失、ソケット バッファー オーバーフロー、SoftIRQ の飽和、およびクラスター ノード間のリング バッファーの枯渇を調査します
Kubernetes ネットワーク診断 ポッドの接続エラー、サービス ポートの構成ミス、ネットワーク ポリシーの競合、不足しているエンドポイント、および Hubble フロー分析を識別します
クラスター リソース クエリ ポッド、サービス、デプロイ、ノード、名前空間に関する質問に回答して、状況を迅速に認識できるようにします

各診断では、チェックされた内容、正常な内容、失敗した内容、特定された根本原因、問題を修正して検証するための正確なコマンドを含む構造化されたレポートが生成されます。

Container Network Insights エージェントを使用するタイミング

必要なときに Container Network Insights エージェントを使用する

  • 問題を英語で記述する: CLI コマンドを構築したり、各ネットワーク レイヤーを処理するツールを把握したりする必要はありません。 エージェントは、適切な診断手順を自動的に決定します。
  • 1 つの会話で Kubernetes とホスト ネットワーク全体の問題をトレースする: ネットワーク ポリシーとポッドのスケジュール設定から、ツールを切り替えたり、ノードに SSH 接続したりせずに、NIC リング バッファーとカーネル カウンターに移動します。
  • 古いカウンターだけでなく、アクティブな問題を検出する: 差分ベースの測定値では、現在発生している問題と履歴ノイズを区別します。
  • すぐに使用できる修正を使用して自動根本原因分析を取得する: エージェントは、複数のクラスター データ ソースからの証拠を関連付け、コピーして実行できる修復コマンドを使用して構造化されたレポートを提供します。
  • DNS、パケット ドロップ、Kubernetes ネットワーク診断などの追加のセットアップなしで、AKS クラスターでトラブルシューティングを行うことができます。 Cilium ポリシーと Hubble フロー分析のために Advanced Container Networking Services (ACNS) を有効にします。

Container Network Insights エージェントが次に対して設計されていません

  • アプリケーション コードのデバッグまたはソフトウェア開発の支援
  • ストレージ、PersistentVolume、またはディスクのトラブルシューティング
  • RBAC の構成、シークレット管理、またはセキュリティ監査 (ネットワーク ポリシーを除く)
  • ワークロードのスケジュール設定、リソースの最適化、またはコスト管理
  • Azure以外のクラウド環境 (AWS、GCP)
  • クラスターに変更を加える (エージェントは推奨事項のみを提供し、それらを適用します)

どのように機能するのか

ネットワークの問題について説明すると、Container Network Insights エージェントは構造化された診断ワークフローに従います。

You describe the issue → Agent classifies it → Collects evidence from the cluster → Analyzes findings → Reports results

AKS クラスター内の Container Network Insights エージェント、クラスター データ ソースへの接続、および Azure OpenAI Service との統合を示すアーキテクチャ図

Container Network Insights エージェントは、AKS クラスター内のポッドとして実行されます。 HTTPS 経由で Web ブラウザーを介して操作します。 クラスター内では、エージェントは AKS MCP サーバー を介して診断コマンドを実行し、特殊なプラグインを使用して 5 つのデータ ソースに接続します。

  • Kubernetes API Server: ポッド、サービス、ノード、ネットワーク ポリシー、およびその他のクラスター リソースに対して、AKS MCP サーバー経由の kubectl を介してクエリを実行します。
  • CoreDNS: DNS プラグインを使用して DNS の正常性状態とメトリックを収集します。
  • Cilium エージェント: Kubernetes Networking プラグインを使用して、AKS MCP サーバーを介して Cilium ネットワーク ポリシーとエンドポイントの状態を検査します。
  • Hubble: ライブ ネットワーク フローを監視し、Kubernetes Networking プラグインを介して AKS MCP サーバー経由でドロップされたトラフィックを識別します。
  • ノード ネットワーク スタック: Linux ネットワーク プラグインを使用して、ホスト レベルのネットワーク統計情報 (RX/TX バッファー、リング バッファーの状態、ソフトネット カウンター) を収集します。

エージェントは、Azure OpenAI Serviceと双方向に通信します。自然言語クエリを送信し、推論のために診断証拠を収集し、その代わりに構造化された診断分析情報を受け取ります。

診断ワークフローは、次の 4 つの手順に従います。

  1. 分類: エージェントは、説明に基づいて問題カテゴリ (DNS、接続、ネットワーク ポリシー、サービス ルーティング、またはパケットドロップ) を決定します。
  2. 証拠の収集: エージェントは、kubectl、およびciliumを使用して、hubbleを介してクラスターに対して診断コマンドを実行します。 各診断カテゴリは、専用の証拠収集ワークフローを使用して、適切なデータを自動的に収集します。
  3. 分析: エージェントは、収集された証拠を調べて、正常なシグナルを異常から分離します。 エージェントはすべての結論を実際のコマンド出力に基づいて行い、投機に基づくことはありません。
  4. レポート: 次を含む構造化されたレポートを受け取ります。
  • 問題とその状態の概要
  • 各チェック、その結果、および合格したか失敗したかを示す証拠テーブル
  • 動作していることと壊れているものの分析
  • 特定の証拠引用による根本原因の特定
  • 問題を修正し、修正プログラムを確認するための正確なコマンド

Integrations

Container Network Insights エージェントは、既に使用している AKS ネットワーク ツールで動作します。

統合 使用方法
AKS MCP サーバー クラスター操作の実行レイヤーを提供します。 kubectlcilium、および hubble コマンドをエージェントからクラスターにルーティングします
kubectl ポッド、サービス、エンドポイント、ノード、ネットワーク ポリシー、およびその他の Kubernetes リソースに対してクエリを実行する
Cilium CiliumNetworkPolicy、CiliumClusterWideNetworkPolicy、および Cilium エージェントの正常性を分析します
ハッブル ポッド間のネットワーク フローを観察し、ドロップされたトラフィックを識別します
CoreDNS ポッドの正常性、サービス エンドポイント、構成、および Prometheus メトリックを確認します
Azure OpenAI 質問を解釈し、診断レポートを生成する会話型 AI の機能を提供します

ヒント

Hubble フロー分析や Cilium ポリシー診断など、完全な診断機能セットを得るためには、Azure CNI による CiliumAdvanced Container Networking Services (ACNS) を有効にした AKS クラスターに Container Network Insights エージェントをデプロイします。

安全モデルと制限事項

エージェントがクラスターと対話する方法

Container Network Insights エージェントは、クラスターから診断データを収集して、分析情報、レポート、および推奨されるアクションを生成します。 AKS MCP サーバーを介してクラスター操作を実行し、診断に必要なデータをスコープとする最小限のアクセス許可を持つ専用の Kubernetes サービス アカウント (container-networking-agent-reader) を使用します。

Container Network Insights エージェントは、クラスターに変更を加えません。 修復コマンドと推奨事項が提供されますが、自分で確認して適用します。

スコープの制限

エージェントは、ネットワークと Kubernetes に関連する質問にのみ応答し、トピック外の要求には応答しません。 システムには、誤用を防ぐための迅速なインジェクション防御も含まれています。

セッションと会話の制限

制限 デフォルト メモ
チャット コンテキスト ウィンドウ ~15件の取引所 エージェントは、作業コンテキストから古いメッセージを削除します。 関連のない問題に対して新しい会話を開始します。
会話あたりのメッセージ数 100 エージェントは、この制限に達したときに古いメッセージを自動的に削除します
ユーザーあたりの会話数 20 システムは、最も使われていない会話を容量が90%に達した際にクリーンアップします
セッション待機タイムアウト 30 分 セッションは、非アクティブ状態の 30 分後に期限切れになります
セッションの絶対タイムアウト 8 時間 セッションは、アクティビティに関係なく 8 時間後に期限切れになります

Concurrency

Container Network Insights エージェントは、一般的な条件下で 1 ~ 7 人の同時ユーザーをサポートします。 大規模なクラスター (25 ノード以上) でのパケット ドロップ診断では、API サーバーの負荷を回避するために同時ユーザーの制限が必要になる場合があります。 詳細については、「 スケール ガイダンス」を参照してください。

シナリオの例とサンプル プロンプト

DNS のトラブルシューティング

DNS 解決エラーは、Kubernetes で最も一般的なネットワークの問題の 1 つです。 ポッドがサービス名、外部ドメイン、またはその両方を解決できない場合、Container Network Insights エージェントは、CoreDNS の正常性、構成、複数のパスからの DNS 解決、DNS トラフィックをブロックする可能性があるネットワーク ポリシーをチェックする包括的な DNS 診断を実行します。

一般的な状況:

  • ポッド ログ Name or service not known または NXDOMAIN エラー
  • アプリケーションがサービス名でサービスに接続しようとしましたが、タイムアウトしました
  • DNS は一部のポッドでは機能しますが、他のポッドでは機能しません
  • 内部解決が機能している間に外部ドメイン解決が失敗する (またはその逆)

サンプル プロンプト:

あなたが見ているもの プロンプト
DNS が完全に壊れている "クラスター内のすべての DNS が壊れています"
Pod が名前を解決できない "名前空間 my-app のポッドは DNS 名を解決できません"
特定の名前が解決されない " backend.default.svc.cluster.local の DNS 解決が失敗しています"
断続的な DNS エラー " production のポッドに断続的な DNS エラーがある"
外部 DNS がブロックされました " my-namespace のポッドの外部 DNS が失敗する"
NodeLocal DNS の問題 "NodeLocal DNS が動作しているかどうかを確認できますか?

エージェントが確認するもの:

DNS 診断では、カスタム ConfigMap を含む CoreDNS ポッドの正常性、サービス エンドポイント、および CoreDNS 構成が確認されます。 また、複数のパス (同じ名前空間、クロス名前空間、FQDN、外部) にわたって DNS 解決をテストします。 エージェントは CoreDNS Prometheus メトリックとネットワーク ポリシー ルールを評価します。これには、外部ドメイン解決をサイレントモードで制限する可能性がある Cilium toFQDN エグレス ポリシーが含まれます。

エージェントが識別する根本原因の例:

  • CoreDNS ポッドが実行されていないか、準備ができていません
  • 正しく構成されていない書き換えまたは転送規則を使用したカスタム CoreDNS ConfigMap
  • UDP/TCP ポート 53 をブロックしているネットワーク ポリシー (DNS トラフィック)
  • Cilium toFQDNs ポリシーの許可リストに必要なドメインがない
  • Cilium LocalRedirectPolicy なしでデプロイされた NodeLocal DNS DaemonSet
  • 間違ったサービス DNS 名で構成されたアプリケーション

RX/パケット ドロップのトラブルシューティング

パケットドロップは、NIC ハードウェア、カーネル ネットワーク スタック、またはアプリケーション ソケット バッファーの複数のレイヤーで発生する可能性があるため、診断が困難です。 Container Network Insights エージェントは、軽量デバッグ ポッドを各ノードにデプロイして、ホスト レベルのネットワーク統計情報を収集します。 その後、デルタ測定値を使用して、パケットが失われる場所を識別します。

一般的な状況:

  • アプリケーションが断続的な接続のリセットまたはタイムアウトを報告する
  • ノード間のパケット損失を示すツールとしてiperfなどがあります。
  • ネットワーク待機時間の急増が特定のノードに表示される
  • ネットワーク処理と相関する高い CPU 使用率
  • ethtool -S RX ドロップ カウンターのインクリメントを示す

サンプル プロンプト:

あなたが見ているもの プロンプト
特定のノードでのドロップ "ノード aks-nodepool1-12345678-vmss000000でパケットのドロップが表示される"
待機時間の急増 "アプリケーションで断続的な待機時間の急増が発生しています"
クラスター全体のパフォーマンスの問題 "ネットワーク パフォーマンスがクラスター全体で低下しています"
パケット損失が検出されました "パケットのドロップと待機時間が長くなっています。 iperf テストは重大なパケット損失を示します。
プロアクティブな健全性チェック "ノード my-nodeでのネットワーク正常性の確認"

エージェントが確認するもの:

パケット ドロップ診断では、NIC リング バッファー使用率 (ethtool)、カーネル ソフトネット統計 (/proc/net/softnet_stat)、CPU ごとの SoftIRQ 分布、ソケット バッファーの飽和状態が調べられます。 また、ネットワーク インターフェイスの統計情報 (/proc/net/dev)、カーネル バッファー調整可能 (tcp_rmemrmem_maxnetdev_max_backlog)、RPS/XPS/RFS 構成、および CNI 固有のインターフェイス分析も確認します。 エージェントは差分測定 (前後のスナップショット) を使用して、アクティブなドロップと履歴カウンターを検出します。

エージェントが識別する根本原因の例:

  • NIC リング バッファーの枯渇: アクティブな rx_dropped カウンターのインクリメント
  • カーネル パケットドロップ: /proc/net/softnet_stat ドロップ列の 0 以外の値
  • ソケット バッファー オーバーフロー: バッファー制限を超えて増加するソケット受信キュー
  • SoftIRQ CPU ボトルネック: 割り込みの分布が不均衡な単一 CPU での高い %soft
  • すべてのチェックに合格: エージェントは、推測ではなく "問題が検出されなかった" と報告します

Important

パケット ドロップ診断では、デバッグ DaemonSet (rx-troubleshooting-debug) がクラスターの kube-system 名前空間にデプロイされます。 この DaemonSet には、ホスト レベルのネットワーク データにアクセスするための hostNetworkhostPIDhostIPC、および NET_ADMIN の機能が必要です。 これは、読み取り専用ルート ファイルシステムを持つ非ルート ユーザーとして実行されます。 診断セッション間で共有され、自動的にクリーンアップされますが、エージェント ポッドが予期せずクラッシュした場合は保持される可能性があります。 クリーンアップ ガイダンスについては、 既知の問題 を参照してください。

Kubernetes ネットワークのトラブルシューティング

ポッドがサービスと通信できない場合、ネットワーク ポリシーによって予期されるトラフィックがブロックされる場合、またはサービスにエンドポイントがない場合、Container Network Insights エージェントは完全なネットワーク パスを調査します。 エージェントは、ポッドのスケジュール設定と準備、サービス エンドポイントの登録、ネットワーク ポリシーの評価、および Hubble フローの監視を確認します。

一般的な状況:

  • ポッド間またはポッドからサービスへの通信が失敗する
  • 特定の名前空間からサービスにアクセスできない
  • ネットワーク ポリシーによってトラフィックが予期せずブロックされる
  • サービス エンドポイントは存在しますが、接続はタイムアウトのままです
  • Hubble は、ポッド間のフロー DROPPED の結論を表示します。

サンプル プロンプト:

あなたが見ているもの プロンプト
サービスに到達できない "クライアント ポッドは、 productionのバックエンド サービスに接続できません。 接続がタイムアウトします。
ブロックされたトラフィック "クライアント ポッドがバックエンド サービスに到達できなくなりました。 以前は動作していました。
エンドポイントなし "ネームスペースmy-appにエンドポイントがないサービス"
ポッドが詰まっている "アプリをデプロイしましたが、サービスにエンドポイントがなく、ポッドに IP がありません"
ポッドの準備ができていない "名前空間stagingのポッドは準備ができていません"
プロアクティブな健全性チェック "名前空間の production ですべてが正常に表示されます。確認できますか?

エージェントが確認するもの:

Kubernetes ネットワーク診断では、ポッドの状態とスケジュール、サービス構成とエンドポイントの登録、およびネットワーク ポリシー (Kubernetes NetworkPolicy と CiliumNetworkPolicy の両方) が調べられます。 また、切断されたトラフィックやサービスとポッドの間のポートマッピングを含むHubbleフローも分析します。 エージェントがキャッチする一般的な構成ミスは、ポッドのtargetPortと一致しないサービス containerPortです。 この不一致により、エンドポイントが正常に表示される場合でも、接続タイムアウトが発生します。

エージェントが識別する根本原因の例:

  • イングレスまたはエグレス トラフィックをブロックするネットワーク ポリシー (または CiliumNetworkPolicy)
  • サービス targetPort がポッドと一致しない containerPort
  • サービス セレクター ラベルがポッド ラベルと一致しない (空のエンドポイント)
  • スケジュールできないリソース要求によりポッドが保留状態でスタックする
  • レディネスプローブが失敗し、ポッドがサービスエンドポイントから除外される
  • Cilium エージェント ポッドが正常でない

ハブブル フロー分析 (hubble observe) では、クラスターで Advanced Container Networking Services (ACNS) を有効にする必要があります。 ACNS のないクラスターでは、Container Network Insights エージェントは引き続き、 kubectl および標準の Kubernetes リソースを使用して完全な診断を提供しますが、フロー レベルの可視性は使用できません。

既知の問題と製品の制限事項

スケール ガイダンス

クラスター サイズ 推奨される同時ユーザー メモ
1 ~ 3 ノード 最大 7 ほとんどの診断に最適
25 ノード 最大 3 パケット ドロップ診断によってノードごとの証拠バンドルが生成される
50 ノード 1 大規模な証拠バンドルが AI モデルのコンテキスト制限にアプローチする

事前ウォームプール内のすべてのエージェント (既定: 3 つのエージェント) が使用されている場合、新しいユーザーからの最初のクエリに時間がかかる場合があります。 同じセッションからの後続のクエリでは、既に初期化されたエージェントが使用されます。

既知の問題

問題点 説明 対処法
クラッシュ後も DaemonSet をデバッグする パケット ドロップ診断中に Container Network Insights エージェント ポッドがクラッシュした場合、rx-troubleshooting-debug DaemonSet はkube-systemの状態に留まる可能性があります。 kubectl delete ds rx-troubleshooting-debug -n kube-system を実行します。
最初のパケット ドロップ診断が遅い debug DaemonSet のスケジュール設定に 30 ~ 60 秒かかり、初回使用時に準備が整います その後の診断では、既存のポッドが再利用され、より高速になります
Cilium 以外のクラスターの診断が減少しました Cilium ポリシー解析と Hubble フローの観察は利用できません エージェントは引き続き完全な DNS、パケット ドロップ、標準の Kubernetes 診断を提供します
非 ACNS クラスターに Hubble がない hubble observe 高度な Container Networking Services がないクラスターでコマンドが失敗する ACNS を有効にするか、 kubectlベースの診断に依存する
エージェント ポッドから DNS テストを実行する DNS 解決テストは、影響を受けるポッドとは異なる DNS ポリシーを持つ可能性がある Container Network Insights エージェント ポッドから実行されます エージェントは、比較のために証拠に独自の DNS ポリシーをメモします
セッション データがメモリ内にある ポッドが再起動すると、セッション状態 (チャット履歴、エージェントの割り当て) が失われる ログインし直して新しいセッションを開始します。永続的な会話履歴がない
チャット コンテキスト ウィンドウ エージェントは、作業コンテキストで最後の最大 15 個の交換のみを保持します 関連のない問題の場合は、コンテキストの混乱を避けるために新しい会話を開始します

拡張機能の可用性

microsoft.containernetworkingagent AKS 拡張機能は、AKS がサポートされているすべてのAzureパブリック リージョンで使用できます。 Azure Government、21Vianet によって運用されるMicrosoft Azure、またはその他のソブリン クラウドでは使用できません。

料金

Container Network Insights エージェントは、AKS クラスターでポッドとして実行されます。 直接コストは次のとおりです。

  • Azure OpenAI の使用状況: トークンの使用は、会話の長さと診断の複雑さに依存します。 現在の料金については、「Azure OpenAI の価格」を参照してください。
  • AKS ノード コンピューティング: Container Network Insights エージェント ポッドと (パケット ドロップ診断の場合)、Debug DaemonSet はクラスター コンピューティング リソースを消費します。

Container Network Insights エージェント自体は、パブリック プレビュー中に個別のライセンス料金を支払う必要はありません。

Container Network Insights エージェントにアクセスして使用する

Container Network Insights エージェントは、AKS クラスター内で実行されるブラウザーベースのチャットボットです。 デプロイ後、任意のモダン ブラウザーでアプリケーション URL を開き、会話を開始します。 ワークステーション上で CLI ツールを使ったり、ポータルブレードを操作したりする必要はありません。 これは、ネットワーク診断用に設計されたスタンドアロンのチャット インターフェイスです。

サインアップ

Container Network Insights エージェントの URL を最初に開くと、アプリケーションからサインインするように求められます。 管理者によるデプロイの構成方法に応じて、単純なユーザー名 (開発環境) またはMicrosoft Entra ID資格情報 (運用環境) を使用してサインインします。

ユーザーが診断アシスタントにアクセスするための資格情報を入力する Container Network Insights エージェントのサインアップ ページのスクリーンショット。

アクセス許可を付与する

サインイン後、アプリケーションからアクセス許可の付与を求められる場合があります。 要求されたアクセス許可を確認し、[ 同意 する] を選択して続行します。

ユーザーの同意を要求する Container Network Insights エージェントのアクセス許可承認ページのスクリーンショット。

チャット インターフェイス

認証が完了すると、チャット インターフェイスに着陸します。 サーバーはセッションを維持するため、会話を失うことなく、セッション タイムアウト ウィンドウ内でブラウザー タブを閉じて再度開くことができます。

ユーザー プロンプトと構造化された診断応答を示す Container Network Insights エージェント チャット インターフェイスのスクリーンショット。

チャット インターフェイスは、次の場所にあります。

  • 自然言語で質問する: 「ポッドで DNS を解決できない理由」「ノード aks-nodepool1-vmss000000 のパケット ドロップを確認する」などのプロンプトを入力します。 特別な構文は必要ありません。
  • 構造化診断レポートの受信: 応答には、証拠テーブル、根本原因分析、コピーして実行できる修復コマンドが含まれます。
  • 新しい会話を開始する: 各会話は独自のコンテキストを維持します。 新しい会話を開始してトピックを切り替えます。
  • フィードバックの送信: 各診断応答の後に、組み込みのフィードバック コントロール (サムアップとサムダウン) を使用して診断の品質を評価します。 フィードバックは、将来の診断精度の向上に役立ちます。

問題を報告する

Container Network Insights エージェントで問題が発生した場合:

  1. 問題の セッション IDタイムスタンプ をメモします (チャット インターフェイスに表示されます)
  2. ヘルスチェックエンドポイント:/health/ready/live
  3. ポッド ログを確認します。 kubectl logs -l app=container-networking-agent -n kube-system
  4. 標準のAzure サポート チャネルを使用して問題を提出する

次のステップ