Red Hat Training

A Red Hat training course is available for OpenShift Container Platform

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_typebuffer_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 인스턴스로 전달됩니다.