본문 바로가기
Devops/Kubernetes

[Kubernetes] Quality of service(QOS)

by dev_ss 2024. 2. 28.

 

 

아래 글을 기반으로 쿠버네티스 환경에서는 컴퓨터 자원을 어떻게 관리하는지와 압축 가능한 자원 및 압축이 불가능한 자원에 대하여 알아볼 수 있었다.

 

 

 

[Kubernetes] 쿠버네티스의 컴퓨터 자원(CPU/Memory) 관리 및 제한 - 1

쿠버네티스는 Namespace와 Cgroup을 통해 컨테이너의 격리된 환경을 구축하고 배포한다. 컨테이너를 생성할 때, 컴퓨터 자원의 할당의 제한이 선언되면 쿠버네티스의 Scheduler는 컨테이너가 생성되기

ssnotebook.tistory.com

 

 

이번 글에서는 Quality of Service(QOS)에 대하여 알아볼 것이다.


 

파드는 생성할 때 요청(Request)과 제한(Limit)이라는 사용할  컴퓨터 자원의 제약을 둘 수 있다,

이 제약에 따라 쿠버네티스는 서비스 품질(Qos) 클래스를 파드에 할당하게 된다.

 

# 파드에 배정된 QOS CLASS 확인
kubectl get pods <파드 이름> -ojsonpath='{.status.qosClass}'

 

 

Qos 클래스는 컴퓨터 자원의 과부하로 프로세스에 대한 Kill 이벤트가 발생하는 경우 Pod의 보장 우선순위를 배정하기 위해 사용된다.

 

 

배정된 Qos 클래스 순위에서 보장 순서가 낮은 프로세스를 우선적으로 Kill 한다는 것이다.


 

QoS에는 세 가지 클래스가 있다.

 

  • Guaranteed
  • Burstable
  • BestEffort

 

1. Guaranteed :

드 내부의 컨테이너의 리소스 제약 중 CPU와 Memory Request / Limit가 둘 다 모든 컨테이너에 존재해야 하고,

Request와 Limit이 일치하면, QoS 클래스가 Guaranteed로 배정된다.

 

보장 우선 순위가 가장 높은 클래스이다.

 

 

2. BestEffort :

드 내부의 컨테이너의 리소스 제약이 어떤 컨테이너에도 존재하지 않을때 QoS 클래스가 BestEffort로 배정된다.

 

보장 우선 순위가 가장 낮은 클래스이다.

 

 

3. Burstable :

Guaranteed 또는 BestEffort에 해당하지 않는 경우에 QoS 클래스가 Burstable로 배정된다.

 

 

※ 파드의 QoS 클래스를 계산하는 데 CPU와 메모리만 사용된다.

반응형