4.11.2. 오버커밋 및 QoS (Quality of Service) 클래스 이해

요청이 없는 pod가 예약되어 있거나 해당 노드의 모든 pod에서 제한의 합계가 사용 가능한 머신 용량을 초과하면 노드가 오버 커밋됩니다.

오버 커밋된 환경에서는 노드의 pod가 특정 시점에서 사용 가능한 것보다 더 많은 컴퓨팅 리소스를 사용하려고 할 수 있습니다. 이 경우 노드는 각 pod에 우선 순위를 지정해야합니다. 이러한 결정을 내리는 데 사용되는 기능을 QoS (Quality of Service) 클래스라고 합니다.

각 컴퓨팅 리소스에 대해 컨테이너는 세 가지 QoS 클래스(우선 순위 내림차순)로 나뉩니다.

표 4.2. QoS (Quality of Service) 클래스

우선 순위클래스 이름설명

1 (가장 높음)

Guaranteed

모든 리소스에 대해 제한 및 요청 (선택 사항)이 설정되어 있고 (0이 아님) 그 값이 동일하면 컨테이너는 Guaranteed로 분류됩니다.

2

Burstable

모든 리소스에 대해 요청 및 제한 (선택 사항)이 설정되어 있고 (0이 아님) 그 값이 동일하지 않은 경우 컨테이너는 Burstable로 분류됩니다.

3 (가장 낮음)

BestEffort

리소스에 대해 요청 및 제한이 설정되지 않은 경우 컨테이너는 BestEffort로 분류됩니다.

메모리는 압축할 수 없는 리소스이므로 메모리가 부족한 경우 우선 순위가 가장 낮은 컨테이너가 먼저 종료됩니다.

  • Guaranteed 컨테이너는 우선 순위가 가장 높은 컨테이너로 간주되며 제한을 초과하거나 시스템의 메모리가 부족하고 제거할 수 있는 우선 순위가 낮은 컨테이너가 없는 경우에만 종료됩니다.
  • 시스템 메모리 부족 상태에 있는 Burstable 컨테이너는 제한을 초과하고 다른 BestEffort 컨테이너가 없으면 종료될 수 있습니다.
  • BestEffort 컨테이너는 우선 순위가 가장 낮은 컨테이너로 처리됩니다. 시스템에 메모리가 부족한 경우 이러한 컨테이너의 프로세스가 먼저 종료됩니다.

4.11.2.1. Quality of Service (QoS) 계층에서 메모리 예약 방법

qos-reserved 매개변수를 사용하여 특정 QoS 수준에서 pod에 예약된 메모리의 백분율을 지정할 수 있습니다. 이 기능은 요청된 리소스를 예약하여 하위 OoS 클래스의 pod가 고급 QoS 클래스의 pod에서 요청한 리소스를 사용하지 못하도록 합니다.

OpenShift Container Platform은 다음과 같이 qos-reserved 매개변수를 사용합니다.

  • qos-reserved=memory=100% 값은 BurstableBestEffort QOS 클래스가 더 높은 QoS 클래스에서 요청한 메모리를 소비하지 못하게 합니다. 이를 통해 BestEffortBurstable 워크로드에서 OOM이 발생할 위험이 증가되어 GuaranteedBurstable 워크로드에 대한 메모리 리소스의 보장 수준을 높이는 것이 우선됩니다.
  • qos-reserved=memory=50% 값은 BurstableBestEffort QOS 클래스가 더 높은 QoS 클래스에서 요청한 메모리의 절반을 소비하는 것을 허용합니다.
  • qos-reserved=memory=0% 값은 BurstableBestEffort QoS 클래스가 사용 가능한 경우 할당 가능한 최대 노드 양까지 소비하는 것을 허용하지만 Guaranteed 워크로드가 요청된 메모리에 액세스하지 못할 위험이 높아집니다. 이로 인해 이 기능은 비활성화되어 있습니다.