すべてのプロダクト
Search
ドキュメントセンター

Container Service for Kubernetes:Network diagnostics

最終更新日:Mar 26, 2026

ACK クラスターでネットワーク接続に障害が発生した場合、障害のあるホップを特定するには、通常、コンテナネットワーク、ネットワークプラグイン、およびカーネルレベルルーティングに関する深い知識が必要です。ネットワーク診断は、この障壁を取り除きます。送信元アドレス、送信先アドレス、ポート、およびプロトコルを指定すると、ACK は自動的にパケットパスをトレースし、各ホップの構成エラーをチェックし、問題と推奨される修正をハイライト表示します。

重要

診断を実行すると、ACK は各ノードにデータ収集プログラムをデプロイし、システムレベルの情報 (システムバージョン、負荷、Docker、Kubelet) を収集します。このプログラムは、ビジネス情報や機密データを収集しません。

サポートされているシナリオ

ネットワーク診断は、次のシナリオをサポートしています。状況を特定し、シナリオ別パラメーターで対応するパラメーターガイダンスに従ってください。

  • Pod 間または Pod とノード間の接続性 — Pod 間、または Pod とノード間の直接的なネットワークパスを診断します。

  • Pod またはノードから Service への接続 — Pod またはノードが Kubernetes Service に到達できることを確認し、Service のネットワーク構成をチェックします。

  • DNS 解決 — Pod が kube-system 名前空間の kube-dns Service に到達できるか確認します。

  • Pod またはノードからインターネットへの接続 — Pod またはノードからパブリック IP アドレスへのアウトバウンド接続を診断します。

  • インターネットから LoadBalancer Service への接続 — クラシックロードバランサー (CLB) インスタンスを介して公開されている LoadBalancer Service へのインバウンド接続を診断します。

仕組み

ネットワーク診断は、送信元と送信先間のパケットパスをトレースし、各ホップの構成エラーをチェックします。診断は次の 4 つのステージで実行されます。

Network diagnostics architecture
  1. トポロジーの構築 — この機能は、Pod、ノード、Service、ネットワークポリシーなど、クラスターからの情報を使用してネットワークパスをマッピングします。

  2. ランタイム状態の収集 — 関連するノードとコンテナからネットワークスタックおよびインフラストラクチャ情報を収集します。

  3. ルートのシミュレーション — Elastic Compute Service (ECS) インスタンスでコマンドを実行するか、コレクター Pod をデプロイして、ネットワークスタックの詳細 (ネットワークデバイス、sysctl、iptables、IPVS) およびクラウドレイヤー情報 (ルートテーブル、セキュリティグループ、NAT ゲートウェイ) を収集します。その後、予期されるパケットフローをシミュレートし、実際の構成と比較します。

  4. 異常の表面化 — 異常なホップは、問題の説明と推奨される修正とともに、トポロジービューでハイライト表示されます。

ネットワーク診断は、KubeSkoopに基づいて構築されています。KubeSkoopは、複数のネットワークプラグインおよびサービスとしてのインフラストラクチャ (IaaS) プロバイダーに対応するオープンソースのKubernetes ネットワーキング診断ツールであり、拡張 Berkeley パケットフィルター (eBPF) を使用してカーネルレベルのパケットパスをモニターします。診断を超えた詳細なモニタリングおよび分析については、「ACK Net Exporter を使用したネットワーク問題のトラブルシューティング」をご参照ください。

使用制限

  • 診断対象の Pod は Running 状態である必要があります。

  • インターネットから LoadBalancer へのシナリオでは、レイヤー 4 CLB インスタンスのみがサポートされており、LoadBalancer Service のバックエンド Pod は 10 個以下である必要があります。

  • サーバーレス Kubernetes クラスターおよび仮想ノードは、ネットワーク診断をサポートしていません。

診断の実行

始める前に: ACK マネージドクラスター が必要です。

  1. ACK コンソール」にログインします。左側のナビゲーションウィンドウで、[クラスター] をクリックします。

  2. [クラスター]」ページで、診断するクラスターの名前をクリックします。左側のナビゲーションウィンドウで、[検査と診断][診断] を選択します。

  3. 診断]ページで、[ネットワーク診断]をクリックします。[ネットワーク診断]ページで、[診断]をクリックします。

  4. [ネットワーク] パネルで、[送信元アドレス]、[送信先アドレス]、[送信先ポート]、および[プロトコル] を入力します。パラメーター値については、「シナリオ別のパラメーター」をご参照ください。警告を読み、[同意する] を選択し、[診断の作成] をクリックします。

    Network diagnosis panel

  5. [診断結果]」ページで結果を確認します。「[パケット パス]」セクションには、すべての診断済みホップが表示されます。異常なホップはハイライト表示されます。結果の解釈方法については、「一般的な診断結果とソリューション」をご参照ください。

    Diagnosis result page

シナリオ別パラメーター

Pod 間または Pod とノード間の接続性

パラメーター
送信元アドレスPod またはノードの IP アドレス
送信先アドレス別の Pod またはノードの IP アドレス
送信先ポート診断するポート
プロトコル診断するプロトコル

Pod またはノードから Service への接続

Pod またはノードが Service に到達できることを確認し、Service のネットワーク構成を検証するには、Service のクラスター IP を指定します。

パラメーター
送信元アドレスPod またはノードの IP アドレス
送信先アドレスService のクラスター IP
送信先ポート診断するポート
プロトコル診断するプロトコル

DNS 解決

送信先がドメイン名の場合、Pod が kube-dns Service に到達できることも検証する必要があります。次のコマンドを実行して、kube-dns のクラスター IP を取得します。

kubectl get svc -n kube-system kube-dns

期待される出力:

NAME       TYPE        CLUSTER-IP     EXTERNAL-IP   PORT(S)                  AGE
kube-dns   ClusterIP   172.16.XX.XX   <none>        53/UDP,53/TCP,9153/TCP   6d

CLUSTER-IP 列に表示されているクラスター IP を送信先アドレスとして使用します。

パラメーター
送信元アドレスPod またはノードの IP アドレス
送信先アドレスkube-dns のクラスター IP (例: 172.16.XX.XX)
送信先ポート53
プロトコルudp

Pod またはノードからインターネットへの接続

送信先がドメイン名の場合は、まずパブリック IP アドレスに解決してください。

パラメーター
送信元アドレスPod またはノードの IP アドレス
送信先アドレスパブリック IP アドレス
送信先ポート診断するポート
プロトコル診断するプロトコル

インターネットから LoadBalancer Service への接続

外部トラフィックが LoadBalancer Service に到達できない場合は、送信元アドレスとしてパブリック IP アドレスを、送信先アドレスとして LoadBalancer Service の外部 IP アドレスを指定します。

パラメーター
送信元アドレスパブリック IP アドレス
送信先アドレスLoadBalancer Service の外部 IP アドレス
宛先ポート診断するポート
プロトコル診断するプロトコル

一般的な診断結果とソリューション

診断結果説明ソリューション
pod container ... is not readyPod 内のコンテナが準備できていません。Pod のヘルスステータスを確認し、Pod を修正してください。
network policy ... deny the packet from ...ネットワークポリシーがパケットをブロックしています。ネットワークポリシーを変更して、トラフィックを許可してください。
no process listening on ...指定されたプロトコルを使用して、指定されたポートでリッスンしているプロセスがありません。リスナープロセスが実行中であることを確認してください。診断パラメーターのポートとプロトコルを検証してください。
no route to host .../invalid route ... for packet ...ルートが存在しないか、ルートが予期された送信先を指していません。ネットワークプラグインが正しく機能しているか確認してください。
... do not have same security group2 つの ECS インスタンスが異なるセキュリティグループに属しており、パケットがドロップされる可能性があります。ECS インスタンスが同じセキュリティグループを使用するように構成してください。
security group ... not allow packet ...ECS インスタンス上のセキュリティグループがパケットをブロックしています。セキュリティグループルールを変更して、送信元 IP アドレスからのパケットを許可してください。
no route entry for destination ip ... / no next hop for destination ip ...ルートテーブルに送信先へのルートがありません。送信先がパブリック IP アドレスの場合は、インターネット NAT ゲートウェイの構成を確認してください。
error route next hop for destination ip ... / expect next hop for destination ip ...ルートテーブル内のルートが予期された送信先を指していません。送信先がパブリック IP アドレスの場合は、インターネット NAT ゲートウェイの構成を確認してください。
no snat entry on nat gateway ...インターネット NAT ゲートウェイに SNAT エントリが見つかりませんでした。インターネット NAT ゲートウェイの SNAT 構成を確認してください。
backend ... health status for port ..., not "normal"1 つ以上のバックエンド Pod が CLB インスタンスでのヘルスチェックに失敗しました。バックエンド Pod が CLB インスタンスに正しく関連付けられていること、およびそれらの Pod 内のアプリケーションが正常であることを確認してください。
cannot find listener port ... for slb ...指定されたポートに CLB インスタンスでリスナーがありません。LoadBalancer Service の構成を確認し、診断パラメーターのポートとプロトコルを検証してください。
status of loadbalancer for ... port ... not "running"CLB リスナーが実行中状態ではありません。リスニングポートが正常であるか確認してください。
service ... has no valid endpointService にエンドポイントがありません。Service のラベルセレクターを確認し、エンドポイントが存在すること、およびエンドポイントが正常であることを確認してください。クラスター内から LoadBalancer Service にアクセスする際の問題については、「CLB インスタンスにクラスター内からアクセスできない」をご参照ください。

次のステップ