23.2. 要求および制限
各コンピュートリソースについて、コンテナーはリソース要求および制限を指定できます。スケジューリングの決定は要求に基づいて行われ、ノードに要求される値を満たす十分な容量があることが確認されます。コンテナーが制限を指定するものの、要求を省略する場合、要求はデフォルトで制限値に設定されます。コンテナーは、ノードの指定される制限を超えることはできません。
制限の実施方法は、コンピュートリソースのタイプによって異なります。コンテナーが要求または制限を指定しない場合、コンテナーはリソース保証のない状態でノードにスケジュールされます。実際に、コンテナーはローカルの最も低い優先順位で利用できる指定リソースを消費できます。リソースが不足する状態では、リソース要求を指定しないコンテナーに最低レベルの QoS (Quality of Service) が設定されます。
23.2.1. Buffer Chunk Limit の調整
Fluentd ロガーが多数のログを処理できない場合、メモリーの使用量を減らし、データ損失を防ぐためにファイルバッファーリングに切り換える必要があります。
Fluentd buffer_chunk_limit
は、デフォルト値が 8m
の環境変数 BUFFER_SIZE_LIMIT
によって決定されます。出力ごとのファイルのバッファーサイズは、デフォルト値が 256Mi
の環境変数 FILE_BUFFER_LIMIT
によって決定されます。永続的なボリュームサイズは、FILE_BUFFER_LIMIT
に出力を乗算した結果よりも大きくなければなりません。
Fluentd および Mux Pod では、永続ボリューム /var/lib/fluentd は PVC または hostmount などによって作成される必要があります。その領域はファイルバッファーに使用されます。
buffer_type
および buffer_path
は、以下のように Fluentd 設定ファイルで設定されます。
$ egrep "buffer_type|buffer_path" *.conf output-es-config.conf: buffer_type file buffer_path `/var/lib/fluentd/buffer-output-es-config` output-es-ops-config.conf: buffer_type file buffer_path `/var/lib/fluentd/buffer-output-es-ops-config` filter-pre-mux-client.conf: buffer_type file buffer_path `/var/lib/fluentd/buffer-mux-client`
Fluentd buffer_queue_limit
は変数 BUFFER_QUEUE_LIMIT
の値です。この値はデフォルトで 32
になります。
環境変数 BUFFER_QUEUE_LIMIT
は (FILE_BUFFER_LIMIT / (number_of_outputs * BUFFER_SIZE_LIMIT))
として計算されます。
BUFFER_QUEUE_LIMIT
変数にデフォルトの値のセットが含まれる場合、以下のようになります。
-
FILE_BUFFER_LIMIT = 256Mi
-
number_of_outputs = 1
-
BUFFER_SIZE_LIMIT = 8Mi
buffer_queue_limit
の値は 32
になります。buffer_queue_limit
を変更するには、FILE_BUFFER_LIMIT
の値を変更する必要があります。
この数式では、number_of_outputs
は、すべてのログが単一リソースに送信され、追加のリソースごとに 1
つずつ増分する場合に 1
になります。たとえば、number_of_outputs
の値は以下のようになります。
-
1
- すべてのログが単一の ElasticSearch Pod に送信される場合 -
2
- アプリケーションログが ElasticSearch Pod に送信され、運用ログが別の ElasticSearch Pod に送信される場合 -
4
- アプリケーションログが ElasticSearch Pod に送信され、運用ログが別の ElasticSearch Pod に送信される場合で、それらがどちらも他の Fluentd インスタンスに転送される場合