아래 글을 기반으로 쿠버네티스 환경에서는 컴퓨터 자원을 어떻게 관리하는지와 압축 가능한 자원 및 압축이 불가능한 자원에 대하여 알아볼 수 있었다.
이번 글에서는 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와 메모리만 사용된다.
'Devops > Kubernetes' 카테고리의 다른 글
[Kubernetes] Errors during downloading metadata for repository 'kubernetes' (1) | 2024.04.09 |
---|---|
[Kubernetes] Kubestronaut (0) | 2024.04.09 |
[Kubernetes] 쿠버네티스의 컴퓨터 자원(CPU/Memory) 관리 및 제한 - 1 (0) | 2024.02.05 |
[Kubernetes] calico-node PodInitializing 대기 현상 해결 (0) | 2023.11.06 |
[Kubernetes] Secrets 암호화 (2) | 2023.09.26 |