Terwayネットワークプラグインを使用してコンテナのネットワークトラフィックとネットワークポリシーを表示するContainer Service for Kubernetes (ACK) クラスターにCilium Hubbleをデプロイできます。 これにより、ネットワークアーキテクチャとビジネストポロジを監視できます。 このトピックでは、Cilium Hubbleを使用して、パケットの送信元や宛先など、コンテナネットワーク内のネットワークトラフィックに関する統計を表示する方法について説明します。
前提条件
Cilium HubbleはTerwayの複数のポッドモードのための1つのENIだけ支えます。 このモードはIPVLANに基づいています。 したがって、ACKクラスターを作成するときは、[Network Plug-in] パラメーターに [Terway] を、[Terway Mode] パラメーターに [IPv6] を選択する必要があります。 それ以外の場合は、CiliumHubbleを使用できません。
ステップ1: Terway ConfigMap eni-configの変更
ACKコンソールの使用
Terway ConfigMap eni-configを変更します。
ACKコンソールにログインします。 左側のナビゲーションウィンドウで、[クラスター] をクリックします。
[クラスター] ページで、管理するクラスターの名前をクリックします。 左側のナビゲーションウィンドウで、 を選択します。
の上部に設定マップページからkube-systemを選択します。名前空間ドロップダウンリストで、eni-config ConfigMapを見つけ、YAMLの編集で、アクション列を作成します。
では、YAMLで表示パネル, 検索
10-terway.confに次のパラメーターを追加します。10-terway.confをクリックし、OK."cilium_enable_hubble":"true", "cilium_hubble_listen_address":":4244", "cilium_hubble_metrics_server":":9091", "cilium_hubble_metrics":"drop,tcp,flow,port-distribution,icmp",パラメーター
説明
補足
eniip_virtual_type
IPVLANモードを有効にするかどうかを指定します。
ConfigMapにこのパラメーターが含まれていない場合、または値が
IPVLANに設定されていない場合、クラスターはCilium Hubbleをサポートしていません。cilium_enable_hubble
Cilium Hubbleがネットワークトラフィックを分析できるようにするかどうかを指定します。
この例では、このパラメーターは
"true"に設定されています。cilium_hubble_listen_address
Cilium Hubble Serviceを公開するために使用されるポート。
この例では、このパラメーターは
":4244"に設定されています。cilium_hubble_metrics_server
Cilium Hubbleメトリクスサーバーを公開するために使用されるポート。
この例では、このパラメーターは
":9091"に設定されています。cilium_hubble_metrics
Cilium Hubbleを使用して収集するメトリック。 複数のメトリックはコンマ (,) で区切ります。
HTTPやDNSなどのレイヤー7ネットワーク機能はサポートされていません。 Cilium Hubbleは、
「drop、tcp、flow、port-distribution、icmp」のメトリックを収集できます。説明過剰な数のメトリックを指定すると、Cilium Hubbleのパフォーマンスが影響を受ける可能性があります。
変更されたConfigMapのTerwayポッドを再起動して有効にします。
詳細ページの左側のナビゲーションウィンドウで、 を選択します。
の上部にポッドページからkube-systemを選択します。名前空間ドロップダウンリストで、検索ボックスにterway-eniipと入力し、で、アクション名前がterway-eniip-xxxである各ポッドの列。
表示されるメッセージで、[OK] をクリックします。
[ポッド] ページで、terway-eniip-xxxの [ステータス] 列に [実行中] が表示されると、ポッドが再起動されます。
上記の手順を繰り返して、すべてのTerwayポッドを削除します。
kubectlを使う
Terway ConfigMap eni-configを変更します。
次のコマンドを実行して、Terway ConfigMap eni-configを変更します。
kubectl -n kube-system edit configmap eni-config次のコンテンツをTerway ConfigMapの
10-terway.confに追加し、ConfigMapを保存します。"cilium_enable_hubble":"true", "cilium_hubble_listen_address":":4244", "cilium_hubble_metrics_server":":9091", "cilium_hubble_metrics":"drop,tcp,flow,port-distribution,icmp",パラメーター
説明
補足
eniip_virtual_type
IPVLANモードを有効にするかどうかを指定します。
ConfigMapにこのパラメーターが含まれていない場合、または値が
IPVLANに設定されていない場合、クラスターはCilium Hubbleをサポートしていません。cilium_enable_hubble
Cilium Hubbleがネットワークトラフィックを分析できるようにするかどうかを指定します。
この例では、このパラメーターは
"true"に設定されています。cilium_hubble_listen_address
Cilium Hubble Serviceを公開するために使用されるポート。
この例では、このパラメーターは
":4244"に設定されています。cilium_hubble_metrics_server
Cilium Hubbleメトリクスサーバーを公開するために使用されるポート。
この例では、このパラメーターは
":9091"に設定されています。cilium_hubble_metrics
Cilium Hubbleを使用して収集するメトリック。 複数のメトリックはコンマ (,) で区切ります。
HTTPやDNSなどのレイヤー7ネットワーク機能はサポートされていません。 Cilium Hubbleは、
「drop、tcp、flow、port-distribution、icmp」のメトリックを収集できます。説明過剰な数のメトリックを指定すると、Cilium Hubbleのパフォーマンスが影響を受ける可能性があります
変更されたConfigMapのTerwayポッドを再起動して有効にします。
kubectl rollout restart daemonset -n kube-system terway-eniip
ステップ2: Cilium Hubbleのインストール
ACKコンソールにログインします。 左側のナビゲーションウィンドウで、[クラスター] をクリックします。
[クラスター] ページで、管理するクラスターの名前をクリックします。 クラスターの詳細ページの左側のウィンドウで、 を選択します。
[Helm] ページで、[デプロイ] をクリックします。 [基本情報] ステップで、次の表に基づいてパラメーターを設定します。
パラメーター
例
アプリケーション名
ack-terway-hubble
名前空間
kube-system
ソース
デフォルト値: Marketplace。
チャート
シナリオを使用する: [すべて] を選択します。
サポートされているアーキテクチャ: amd64を選択します。
検索ボックスにack-terway-hubbleと入力します。
[ack-terway-hubble] カードを選択し、[Next] をクリックします。
[パラメーター] ステップで、[チャートバージョン] パラメーターを設定します。 [パラメーター] セクションで、
ingressのhostsパラメーターを指定します。ホストは、ハッブルUIにログインするために使用されます。 ビジネス要件に基づいて他のパラメーターを設定します。 [OK] をクリックします。説明次の表の
ingressで説明するパラメーターを指定する必要があります。パラメーター
説明
enabled
Ingressを使用してハッブルUIにアクセスするかどうかを指定します。
annotations
Ingressの注釈。
パス
Ingressのルートパス。
hosts
Ingressのホスト。
tls
Ingressのトランスポート層セキュリティ (TLS) 設定。
ステップ3: Cilium Hubbleを使用する
Cilium HubbleのIngressにhostsパラメーターを指定した場合、ポート80を使用してIngressホストにアクセスすることで、Hubble UIにログインできます。 Ingressホストにアクセスすると、次の情報が表示されます。
アクセスするドメイン名がingress.localなどの権限のあるドメイン名でない場合は、kubectl -n kube-system get svc nginx-ingress-lbコマンドを実行して、Hubble UIのIPアドレスを照会する必要があります。 次に、コンピュータ上のhostsファイルを変更して、ingress.localをHubble UIのIPアドレスにマッピングします。
ページの上部では、異なる名前空間に属するポッドとサービスのトポロジを表示できます。
ページの下部では、ネットワークトラフィックの送信元、送信先、ポート、転送状態を表示できます。
ネットワークポリシーを設定した場合は、ネットワークポリシーの不一致によりドロップされたパケットを表示できます。

Cilium Hubbleは、kube-system名前空間のhubble-metrics Serviceを使用して、ネットワークフローメトリックを公開します。 Terway ConfigMap eni-configでcilium_hubble_metricsパラメーターを指定することで、Cilium Hubbleが公開するメトリックを指定できます。これらのメトリックを収集するには、オープンソースのPrometheusとManaged Service for Prometheusを使用できます。 詳細については、「オープンソースのPrometheusを使用したACKクラスターのモニタリング」および「Prometheusのマネージドサービス」をご参照ください。
Cilium Hubbleが公開できるメトリックの詳細については、「エクスポートされたメトリック」をご参照ください。
カテゴリ | メトリクス | ラベル | 説明 |
drop | hubble_drop_total | 理由、プロトコル | ドロップされたパケットの数。 |
tcp | hubble_tcp_flags_total | 旗、家族 | TCPフラグの数。 |
流れ | hubble_flows_processed_total | タイプ、サブタイプ、評決 | 処理されたネットワークフローの数。 |
ポート配布 | hubble_port_distribution_total | プロトコル、ポート | 宛先ポートでのパケットの配布。 |
icmp | hubble_icmp_total | 家族、タイプ | インターネット制御メッセージプロトコル (ICMP) メッセージの数。 |