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

Container Service for Kubernetes:Terway での conntrack 構成の最適化

最終更新日:Jul 03, 2025

接続追跡 (conntrack) は、SYN、ESTABLISHED、CLOSED などの TCP 状態を含むネットワーク接続状態を監視およびログに記録する接続追跡メカニズムです。 Terway Datapath V2 および IPvlan モードでは、conntrack は拡張 Berkeley Packet Filter (eBPF) マップを使用してコンテナトラフィックに関する情報を保存します。その他のモードでは、従来の Linux conntrack 実装が使用されます。このトピックでは、最適なパフォーマンスを得るために eBPF conntrack テーブルのサイズを変更する方法について説明します。

conntrack テーブルサイズを確認する

eBPF conntrack テーブルサイズは、ノードのメモリ容量によって異なります。

ノードの conntrack テーブルサイズを表示するには、次のコマンドを実行します。

  1. terway-eniip ポッド名を取得します。

# kubectl describe node <ノード名> | grep terway-eniip
  kube-system                 terway-eniip-xxxx         350m (8%)     1100m (28%)  200Mi (3%)       256Mi (3%)     16h
  1. conntrack テーブルサイズをクエリします。

# kubectl exec -it -nkube-system terway-eniip-xxxx -c policy -- cilium status --verbose
...
BPF Maps:   dynamic sizing: on (ratio: 0.002500)
  Name                          Size
  Auth                          524288
  Non-TCP connection tracking   65536
  TCP connection tracking       131072
  Endpoint policy               65535
...

パラメーターの説明:

  • dynamic sizing: on: eBPF マップの動的な上限を有効にします。値が off に設定されている場合は、bpf-map-dynamic-size-ratio パラメータを設定して動的調整を有効にするか、bpf-ct-global-any-maxbpf-ct-global-tcp-max、および bpf-nat-global-max パラメータを設定して異なるテーブルのサイズを指定できます。

  • ratio: 0.002500: システムメモリ全体の指定された割合に基づく eBPF マップの最大サイズ。

  • Non-TCP connection tracking: 非 TCP conntrack テーブルの最大エントリ数。

  • TCP connection tracking: TCP conntrack テーブルの最大エントリ数。

conntrack エントリ数を確認する

デフォルトでは、各ノードは Prometheus メトリックポートを公開します。デフォルトポートは 9962 です。次の表に、監視コンポーネントを使用して収集できるメトリックを示します。

メトリック

ラベルと値

cilium_datapath_conntrack_gc_entries

family: IP アドレス タイプ。有効な値: ipv4 および ipv6

protocol: プロトコル タイプ。有効な値: non-TCP および TCP

status: クリーンアップ ステータス。すべての状態を組み合わせることで、クリーンアップ前の conntrack エントリ数を取得できます。有効な値: alived および deleted

デフォルトの監視ポートを変更する

パラメーター

説明

prometheus-serve-addr

Prometheus リッスン ポート。ポートを無効にするには、値を \"\" に設定します。

  • Terway ≥ 1.14.0: デフォルトで無効

  • Terway < 1.14.0: デフォルトで :9962 に設定。

このパラメータの変更方法の詳細については、「Terway ConfigMap のカスタマイズ」の cilium_args パラメータの説明をご参照ください。

eBPF conntrack サイズを調整する

eBPF conntrack と Linux conntrack は機能的に同じです。デフォルト設定は、追加の構成を必要とせずに、ほとんどのビジネスシナリオの要件を満たすことができます。

次のシナリオでは、ビジネス要件に基づいて設定を変更する必要があります。

  • 多数の長時間接続が存在する。

  • ポッドがインターネットに直接公開されており、多数のハーフオープン接続が存在する可能性がある。

重要

conntrack テーブルサイズの調整は、リスクの高い操作です。本番環境で conntrack テーブルサイズを調整する前に、調整の効果を評価することをお勧めします。 conntrack テーブルサイズを調整した後、このトピックのconntrack テーブルサイズを確認するセクションを参照して、調整が有効になっているかどうかを確認してください。

パラメーター

説明

bpf-map-dynamic-size-ratio

システムメモリの合計に対する指定された割合に基づく eBPF マップの最大サイズ。

off: 自動スケーリングを無効にします (固定マップサイズ)

0.0025: マップ制限をシステムメモリ全体の 0.0025 に設定します

bpf-ct-timeout-regular-any

非 TCP conntrack テーブルのエントリのタイムアウト期間。

デフォルト値: 1m0s

bpf-ct-timeout-regular-tcp

TCP conntrack テーブルで確立された接続エントリのタイムアウト期間。

デフォルト値: 6h0m0s

bpf-ct-timeout-regular-tcp-fin

TCP conntrack テーブルで接続を閉じている間のタイムアウト期間。

デフォルト値: 10s

bpf-ct-timeout-regular-tcp-syn

TCP conntrack テーブルで接続を確立している間のタイムアウト期間。

デフォルト値: 1m0s

bpf-ct-timeout-service-any

非 TCP サービス conntrack テーブルのエントリのタイムアウト期間。

デフォルト値: 1m0s

bpf-ct-timeout-service-tcp

TCP サービス conntrack テーブルで確立されたサービス接続のタイムアウト期間。

デフォルト値: 6h0m0s

bpf-ct-timeout-service-tcp-grace

TCP サービス conntrack テーブルでの正常なサービスシャットダウンのタイムアウト期間。

デフォルト値: 1m0s

conntrack-gc-interval

conntrack テーブルのクリーンアップ間隔。

デフォルト値: 5m0s

説明

このパラメーターは、cilium-agent が conntrack テーブルを積極的にクリーンアップする間隔を指定します。デフォルト値より大きい値を指定しないでください。

クリーンアップ間隔が短いと、cilium-agent の CPU 消費量は増加しますが、conntrack テーブルがいっぱいになるのを防ぎます。 Container Service for Kubernetes (ACK) コンソールで Terway コンテナの CPU 制限を調整できます。

bpf-ct-global-any-max

非 TCP サービス conntrack テーブルの最大サイズ。

説明

動的サイズ変更が有効になっている場合 (dynamic sizing: on)、bpf-map-dynamic-size-ratio パラメータを使用してテーブルサイズを調整することをお勧めします。これにより、BPF マップの動的調整メカニズムをより適切に制御および最適化できます。

bpf-ct-global-tcp-max

TCP サービス conntrack テーブルの最大サイズ。

説明

動的サイズ変更が有効になっている場合 (dynamic sizing: on)、bpf-map-dynamic-size-ratio パラメータを使用してテーブルサイズを調整することをお勧めします。これにより、BPF マップの動的調整メカニズムをより適切に制御および最適化できます。

bpf-nat-global-max

BPF NAT テーブルの最大サイズ。

説明

bpf-nat-global-max パラメーターの値は、bpf-ct-global-any-max パラメーターと bpf-ct-global-tcp-max パラメーターの値よりも小さくなければなりません。

デフォルトサイズ = (bpf-ct-global-any-max の値 + bpf-ct-global-tcp-max の値) × 2/3

動的サイズ変更が有効になっている場合 (dynamic sizing: on)、bpf-map-dynamic-size-ratio パラメータを使用してテーブルサイズを調整することをお勧めします。これにより、BPF マップの動的調整メカニズムをより適切に制御および最適化できます。

このパラメータの変更方法の詳細については、「Terway ConfigMap のカスタマイズ」の cilium_args パラメータの説明をご参照ください。

bpf-map-dynamic-size-ratio0.0025 に設定されている場合、ノードのメモリ容量ごとのマップサイズ:

ノードメモリ

CT マップサイズ (TCP)

CT マップサイズ (any)

NAT マップサイズ

7.5 GiB

131,072

65,536

131,072

16 GiB

151,765

75,882

151,765

30 GiB

284,560

142,280

284,560

240 GiB

2,276,484

1,138,242

2,276,484

次のサンプル コードブロックでは、bpf-map-dynamic-size-ratio0.003 に、bpf-ct-timeout-regular-tcp1h に設定しています。

10-terway.conf: |
{
  "cniVersion": "0.4.0",
  "name": "terway",
  "capabilities": {"bandwidth": true},
  "eniip_virtual_type": "IPvlan",
  "cilium_args": "--bpf-map-dynamic-size-ratio=0.003 --bpf-ct-timeout-regular-tcp=1h",
  "type": "terway"
}