5.6. リソース管理およびパフォーマンスに関する考慮事項
ネットワーク監視に必要なリソースの量は、クラスターのサイズと、クラスターが可観測データを取り込んで保存するための要件によって異なります。リソースを管理し、クラスターのパフォーマンス基準を設定するには、次の設定を設定することを検討してください。これらの設定を設定すると、最適なセットアップと可観測性のニーズを満たす可能性があります。
次の設定は、最初からリソースとパフォーマンスを管理するのに役立ちます。
- eBPF サンプリング
-
サンプリング仕様
spec.agent.ebpf.sampling
を設定して、リソースを管理できます。サンプリング値が低いと、大量の計算、メモリー、およびストレージリソースが消費される可能性があります。これは、サンプリング比の値を指定することで軽減できます。値100
は、100 ごとに 1 つのフローがサンプリングされることを意味します。0
または1
の値は、すべてのフローがキャプチャーされることを意味します。値が小さいほど、返されるフローが増加し、派生メトリクスの精度が向上します。デフォルトでは、eBPF サンプリングは値 50 に設定されているため、50 ごとに 1 つのフローがサンプリングされます。より多くのサンプルフローは、より多くのストレージが必要になることにも注意してください。クラスターがどの設定を管理できるかを判断するには、デフォルト値から始めて実験的に調整することを検討してください。 - eBPF の機能
- 有効にされた機能が増えるほど、CPU とメモリーへの影響が大きくなります。該当する機能の完全なリストについては、"ネットワークトラフィックのモニタリング" を参照してください。
- Loki を使用しない場合
- Loki ではなく Prometheus を代わりに使用することで、Network Observability に必要なリソースの量を削減できます。たとえば、Network Observability が Loki をなしで設定されている場合、メモリー使用量の合計節約量は 20 - 65% の範囲になり、CPU 使用率はサンプリング値に応じて 10 - 30% 低下します。詳細は、"Loki を使用しない Network Observability" を参照してください。
- インターフェイスの制限または除外
-
spec.agent.ebpf.interfaces
およびspec.agent.ebpf.excludeInterfaces
の値を設定して、観測されるトラフィック全体を削減します。デフォルトでは、エージェントは、excludeInterfaces
およびlo
(ローカルインターフェイス) にリストされているインターフェイスを除く、システム内のすべてのインターフェイスを取得します。インターフェイス名は、使用される Container Network Interface (CNI) によって異なる場合があることに注意してください。 - パフォーマンスのファインチューニング
Network Observability をしばらく実行した後、次の設定を使用してパフォーマンスを微調整できます。
-
リソース要件と制限:
spec.agent.ebpf.resources
およびspec.processor.resources
仕様を使用して、クラスターで予想される負荷とメモリー使用量に合わせてリソース要件と制限を調整します。多くの中規模のクラスターには、デフォルトの制限の 800MB で十分な場合があります。 -
キャッシュの最大フロータイムアウト: eBPF エージェントの
spec.agent.ebpf.cacheMaxFlows
およびspec.agent.ebpf.cacheActiveTimeout
仕様を使用して、エージェントによってフローが報告される頻度を制御します。値が大きいほど、エージェントで生成されるトラフィックが少なくなり、これは CPU 負荷の低下と相関します。ただし、値を大きくするとメモリー消費量がわずかに増加し、フロー収集でより多くの遅延が発生する可能性があります。
-
リソース要件と制限:
5.6.1. リソースの留意事項
次の表は、特定のワークロードサイズのクラスターのリソースに関する考慮事項の例を示しています。
表に概要を示した例は、特定のワークロードに合わせて調整されたシナリオを示しています。各例は、ワークロードのニーズに合わせて調整を行うためのベースラインとしてのみ考慮してください。
極小規模 (10 ノード) | 小規模 (25 ノード) | 大規模 (250 ノード) [2] | |
---|---|---|---|
ワーカーノードの vCPU とメモリー | 4 仮想 CPU| 16 GiB メモリー [1] | 16 仮想 CPU| 64 GiB メモリー [1] | 16 仮想 CPU| 64 GiB メモリー [1] |
LokiStack サイズ |
|
|
|
Network Observability コントローラーのメモリー制限 | 400 Mi (デフォルト) | 400 Mi (デフォルト) | 400 Mi (デフォルト) |
eBPF サンプリングレート | 50 (デフォルト) | 50 (デフォルト) | 50 (デフォルト) |
eBPF メモリー制限 | 800 Mi (デフォルト) | 800 Mi (デフォルト) | 1600 Mi |
cacheMaxSize | 50,000 | 100,000 (デフォルト) | 100,000 (デフォルト) |
FLP メモリー制限 | 800 Mi (デフォルト) | 800 Mi (デフォルト) | 800 Mi (デフォルト) |
FLP Kafka パーティション | – | 48 | 48 |
Kafka コンシューマーレプリカ | – | 6 | 18 |
Kafka ブローカー | – | 3 (デフォルト) | 3 (デフォルト) |
- AWS M6i インスタンスでテスト済み。
-
このワーカーとそのコントローラーに加えて、3 つのインフラノード (サイズ
M6i.12xlarge
) と 1 つのワークロードノード (サイズM6i.8xlarge
) がテストされました。
5.6.2. メモリーと CPU の合計平均使用量
次の表は、2 つの異なるテスト (Test 1
、Test 2
) について、サンプリング値が 1
および 50
であるクラスターの合計リソース使用量の平均を示しています。テストは次の点で異なります。
-
Test 1
は、OpenShift Container Platform クラスター内の namespace、Pod、およびサービスの合計数に加え、大量の Ingress トラフィックを考慮しており、eBPF エージェントに負荷をかけた、特定のクラスターサイズに対して多数のワークロードが発生するユースケースを表しています。たとえば、Test 1
は、76 個の namespace、5153 個の Pod、および 2305 個のサービスで構成され、ネットワークトラフィックの規模は ~350 MB/秒です。 -
Test 2
は、OpenShift Container Platform クラスター内の namespace、Pod、およびサービスの合計数に加え、大量の Ingress トラフィックを考慮しており、特定のクラスターサイズに対して多数のワークロードが発生するユースケースを表しています。たとえば、Test 2
は、553 個の namespace、6998 個の Pod、および 2508 個のサービスで構成され、ネットワークトラフィックの規模は ~950 MB/秒です。
さまざまなテストでさまざまなタイプのクラスターユースケースが例示されているため、この表の数値は並べて比較しても直線的に増加しません。代わりに、これらは個人のクラスター使用状況を評価するためのベンチマークとして使用することを目的としています。表に概要を示した例は、特定のワークロードに合わせて調整されたシナリオを示しています。各例は、ワークロードのニーズに合わせて調整を行うためのベースラインとしてのみ考慮してください。
Prometheus にエクスポートされたメトリクスは、リソースの使用状況に影響を与える可能性があります。メトリクスのカーディナリティー値は、リソースがどの程度影響を受けるかを判断するのに役立ちます。詳細は、関連情報セクションの「ネットワークフローの形式」を参照してください。
サンプリング値 | 使用されるリソース | テスト 1 (25 ノード) | テスト 2 (250 ノード) |
---|---|---|---|
Sampling = 50 | NetObserv の CPU 合計使用量 | 1.35 | 5.39 |
NetObserv RSS (メモリー) の合計使用量 | 16 GB | 63 GB | |
Sampling = 1 | NetObserv の CPU 合計使用量 | 1.82 | 11.99 |
NetObserv RSS (メモリー) の合計使用量 | 22 GB | 87 GB |
概要: この表は、すべての機能が有効になっているエージェント、FLP、Kafka、Loki を含む Network Observability の平均合計リソース使用量を示しています。有効になっている機能の詳細は、「ネットワークトラフィックの監視」で説明されている機能を参照してください。このテストで有効になっているすべての機能が含まれています。