23.2. 요청 및 제한
각 컴퓨팅 리소스에 대해 컨테이너는 리소스 요청 및 제한을 지정할 수 있습니다. 노드에 요청된 값을 충족할 수 있는 충분한 용량을 확보하기 위한 요청에 따라 스케줄링 결정이 내려집니다. 컨테이너가 제한을 지정하지만 요청을 생략하면 요청은 기본적으로 제한 값으로 설정됩니다. 컨테이너가 노드에서 지정된 제한을 초과할 수 없습니다.
제한 적용은 컴퓨팅 리소스 유형에 따라 다릅니다. 컨테이너가 요청하거나 제한하지 않으면 컨테이너는 리소스 보장이 없는 상태에서 노드로 예약됩니다. 실제로 컨테이너는 가장 낮은 로컬 우선 순위로 사용 가능한 만큼의 지정된 리소스를 소비할 수 있습니다. 리소스가 부족한 상태에서는 리소스 요청을 지정하지 않는 컨테이너에 가장 낮은 수준의 QoS (Quality of Service)가 설정됩니다.
23.2.1. 버퍼 Chunk 제한 튜닝
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
는 variable BUFFER_QUEUE_LIMIT
의 값입니다. 이 값은 기본적으로 32
입니다.
환경 변수 BUFFER_QUEUE_LIMIT
은 (FILE_BUFFER_LIMIT / (number_of_outputs * BUFFER_SIZE_LIMIT)
로 계산됩니다.
BUFFER_QUE_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
씩 증가합니다. 예를 들어 number_of_outputs
값은 다음과 같습니다.
-
1
- 모든 로그가 단일 ElasticSearch Pod로 전송되는 경우 -
2
- 애플리케이션 로그가 ElasticSearch Pod로 전송되고 ops 로그가 다른 ElasticSearch Pod로 전송되는 경우 -
4
- 애플리케이션 로그가 ElasticSearch Pod로 전송되면 ops 로그가 다른 ElasticSearch Pod로 전송되고 둘 다 다른 Fluentd 인스턴스로 전달됩니다.