본문 바로가기
네트워크/k8s

[k8s] 21. Pod - QoS Classes

by Lauren X Ming 2021. 2. 17.

Pod - QoS Classes

어떨 때 쓸까

  • 노드에 리소스가 있음
  • 노드 위에 파드가 세 개 있고 균등하게 자원 사용 중
  • 이 상황에서 파드1이 추가적으로 자원을 사용해야 하는 상황이 생김
  • 근데 자원이 없다고 에러가 나야하나 아니면 다른 파드를 희생시켜야 할까?
  • 쿠버네티스는 앱의 중요도에 따라 이런걸 관리할 수 있도록 QoS Classes를 지원
  • BestEffort가 부여된 파드가 먼저 다운됨 --> 회수된 자원을 파드1이 사용

  • 그 다음 파드2가 남은 자원보다 더 많은 자원을 요구할 때

  • Burstable이 다운되고 자원이 회수됨

어떻게 설정할까

  • 컨테이너에 resources 설정이 있는데 requests와 limits에 따라 메모리와 CPU를 어떻게 설정하느냐에 따라 결정

Guaranteed

  • 파드에 여러 컨테이너마다 Request와 Limit이 있어야 함
  • 그 안에 Memory와 CPU도 설정되어 있어야 함
  • 각 컨테이너 내에 Memory와 CPU의 Request와 Limit의 값이 같아야 함

BestEffort

  • 파드의 어떤 컨테이너에도 Requests와 Limits가 설정되어 있지 않음

Burstable

  • Guaranteed와 BestEffort의 중간
  • 컨테이너마다 Requests와 Limits이 설정되어있지만 Requests가 작거나
  • Requests만 설정되어 있거나
  • 컨테이너가 2개인데 컨테이너 하나는 완벽하게 설정되어 있는데 다른 컨테이너는 그렇지 않은 경우

Burstable에 여러 파드가 있을 때 누가 먼저 삭제되나

  • OOM(Out Of Memory) Score로 결정됨
  • Request Memory에 대해 앱이 Memory를 얼마나 사용하냐
  • 이 값이 큰 파드부터 삭제함

출처

인프런 - 대세는 쿠버네티스