쿠버네티스 QoS 클래스가 정해지는 기준
조회 1 · 댓글 0
노드에 리소스 압박이 오면 kubelet이 파드를 순서대로 축출(eviction)합니다. 이 순서를 정하는 게 QoS 클래스인데, 내가 직접 지정하는 값이 아니라 컨테이너의 requests/limits 조합을 보고 쿠버네티스가 자동으로 계산합니다. 세 가지 판정 기준은 다음과 같습니다.
- Guaranteed: 모든 컨테이너가 CPU와 메모리 각각 request와 limit을 가지고, 각 값이 request = limit으로 같을 때.
- Burstable: Guaranteed 조건은 아니지만 컨테이너 중 하나라도 CPU나 메모리의 request 또는 limit을 가질 때.
- BestEffort: 어떤 컨테이너도 CPU/메모리 request와 limit을 전혀 지정하지 않았을 때.
지금 파드가 어디에 속하는지는 status.qosClass 필드에서 확인합니다.
kubectl get pod <name> -o jsonpath='{.status.qosClass}'노드 리소스가 부족해지면 BestEffort가 가장 먼저, 그다음 Burstable, Guaranteed가 마지막으로 축출됩니다. 다만 리소스 압박에 의한 축출에서는 request를 초과한 파드만 후보가 됩니다. 죽으면 안 되는 워크로드는 request와 limit을 같게 맞춰 Guaranteed로 두는 게 안전합니다.
🔗 https://kubernetes.io/docs/concepts/workloads/pods/pod-qos/
로그인 후 답글을 남길 수 있습니다.