Pod의 남은 리소스가 부족한 경우, Pod는 다운되버린다. 하지만 Pod는 중요도가 각기 다르기 때문에, 중요한 Pod가 죽어버리면 서비스에 큰 문제가 생길 수 있다. 그렇기 때문에 상대적으로 중요도가 낮은 다른 Pod를 down 시키고 그만큼의 리소스를 중요도가 높은 Pod에 할당 할 수 있다.
쿠버네티스가 Pod를 생성할 때 다음의 3가지 QoS 클래스 중 하나를 할당한다. 각각을 명시적으로 설정할 수는 없고 컨테이너에 정의된 resources의 request, limits에 따라 쿠버네티스가 알아서 클래스를 적용해주는 것이다.
Guranteed(가장 나중에 삭제)
- 모든 Container에 Request와 Limit가 설정되야 한다.
- Request와 Limit에는 Memory와 CPU가 모두 설정되야 한다.
- 각 Container 내에서 Memory와 CPU에 대한 Request와 Limit 값이 같아야 한다.
Burstable
- 모든 컨테이너에 Request와 Limit가 설정되어 있지만, Request와 Limit에 할당한 memory와 cpu의 값이 서로 다른 경우
- Request만 설정되어있고, Limit는 설정해놓지 않은 경우
- Pod의 컨테이너가 2개인데, 1개의 컨테이너에만 Request, Limit를 완벽하게 설정하고 나머지 하나의 컨테이너에는 설정하지 않은 경우
- Request, Limit가 설정된 컨테이너는 Memory와 CPU에 대한 Request와 Limit 값이 같아야 한다.
BestEffort(가장 먼저 삭제)
- 어떤 Container내에도 Request와 Limit를 설정하지 않은 상태
OOM(Out of Memory) Score
- Burstable 상태에서 어떤 Pod가 먼저 Down되야 할지를 정하는데, OOM Score를 활용한다.
- OOM Score를 측정하는 방법은, 실제 어플리케이션이 사용하는 메모리 대비 Request 메모리가 몇퍼센트인지 비율로 계산한다.
- 예를 들어, 2개의 Pod에서 돌아가는 어플리케이션은 둘 다 4GB인데, Request Memory가 각각 5GB, 8GB라면, 사용량은 75%, 50%이다.
- 이런 경우 OOM Score가 높은(사용량이 높은 Pod) Pod가 먼저 제거된다.
'DevOps > Kubernetes' 카테고리의 다른 글
[Kubernetes] .kube/config 수정하기(삭제) (0) | 2021.03.24 |
---|---|
[Kubernetes Study - 10] Pod - readinessProbe, livenessProbe (0) | 2021.02.22 |
[Kubernetes Study - 09] - Replication Controller, ReplicaSet, Replicas, Selector (0) | 2021.02.20 |
[Kubernetes] 오브젝트 종류에 따른 apiVersion 정리 (0) | 2021.02.19 |
[Kubernetes Study - 08] Namespace, ResourceQuota, LimitRange (0) | 2021.02.12 |