All Articles

k8s - [Pod] QoS(Quality of Service)

Node의 자원을 여러 Pod이 나눠서 써야하는 상황에서, 자원이 부족할 때 어떤 Pod에 리소스배분을 우선시 할 것인지 우선순위를 정하는 것. 3가지로 나뉘며, 이는 spec.containers[].resources에 어떻게 리소스 설정을 했느냐 조건에 따라 자동으로 인식되어 구분된다.

1순위(최우선순위) - Guaranteed

  • 모든 Container에 RequestLimit가 설정되어 있어야 한다.
  • 그리고, 그 RequestLimit에는 모두 MemoryCPU가 설정되어 있어야 한다.
  • 그리고 RequestLimit의 설정 값이 같아야 한다.

2순위 - Burstable

  • Guaranteed(1순위)와 BestEffort(3순위)의 중간 형태이다. 즉, 1순위와 3순위 조건의 여집합이다.
  • 만일 Burstable인 Pod가 여러개 있을 때, OOM Score(Request에 해당하는 Memory 대비, App의 실제 Memory 사용량 비율)라는 걸 계산해서 우선순위를 세분화한 뒤 그 OOM Score가 높은 Pod를 먼저 제거한다.

3순위(가장 후순위) - BestEffort

  • Request와 Limit이 어떤 컨테이너에도 설정되어있지 않아야 한다.

[참고자료]
https://www.inflearn.com/course/%EC%BF%A0%EB%B2%84%EB%84%A4%ED%8B%B0%EC%8A%A4-%EA%B8%B0%EC%B4%88