QoS 클래스
Why?
Node에 Pod가 3개 있고 균등하게 자원 배분을 하고 있다고 가정
Pod 1에서 추가적으로 리소스를 더 사용해야 하는 상황 -> App의 중요도에 따라 다른 Pod를 다운시키고 할당시키기 위해 쿠버네티스는 Qos 클래스 지원
QoS 클래스 종류
쿠버네티스가 파드를 생성할 때, 파드에 다음의 QoS 클래스 중 하나를 할당한다.
- Guaranteed
- Burstable ( 두 번째로 다운)
- BestEffort (제일 먼저 다운)
Guaranteed QoS 클래스가 할당되는 파드 생성
파드에 Guaranteed QoS 클래스 할당을 위한 전제 조건은 다음과 같다.
- 파드 내 모든 컨테이너는 메모리 상한과 메모리 요청량을 가지고 있어야 한다.
- 파드 내 모든 컨테이너의 메모리 상한이 메모리 요청량과 일치해야 한다.
- 파드 내 모든 컨테이너는 CPU 상한과 CPU 요청량을 가지고 있어야 한다.
- 파드 내 모든 컨테이너의 CPU 상한이 CPU 요청량과 일치해야 한다.
spec:
containers:
...
resources:
limits:
cpu: 700m
memory: 200Mi
requests:
cpu: 700m
memory: 200Mi
...
status:
qosClass: Guaranteed
Burstable QoS 클래스가 할당되는 파드 생성
다음의 경우 파드에 Burstable QoS 클래스가 부여된다.
- 파드가 Guaranteed QoS 클래스 기준을 만족하지 않는다.
- 파드 내에서 최소한 하나의 컨테이너가 메모리 또는 CPU 요청량/상한을 가진다.
컨테이너가 하나인 파드의 구성 파일은 다음과 같다. 컨테이너는 200 MiB의 메모리 상한과 100 MiB의 메모리 요청량을 가진다.
spec:
containers:
- image: nginx
imagePullPolicy: Always
name: qos-demo-2-ctr
resources:
limits:
memory: 200Mi
requests:
memory: 100Mi
...
status:
qosClass: Burstable
BestEffort QoS 클래스가 할당되는 파드 생성
파드에 QoS 클래스 BestEffort를 제공하려면, 파드의 컨테이너에 메모리 또는 CPU의 상한이나 요청량이 없어야 한다.
컨테이너가 하나인 파드의 구성 파일이다. 해당 컨테이너는 메모리 또는 CPU의 상한이나 요청량을 갖지 않는다.
spec:
containers:
...
resources: {}
...
status:
qosClass: BestEffort