Guaranteed / Burstable / BestEffort. Pod 생성 시점에 결정됨BestEffort → Burstable → Guaranteed — 리소스 압박이 원인일 땐 request를 초과한 Pod만 evict 후보| QoS | 판정 기준 | evict 순서 |
|---|---|---|
| Guaranteed | 모든 컨테이너가 CPU·Memory 둘 다 request·limit를 갖고, 각각 request = limit (전부 > 0) | 마지막 (가장 안전) |
| Burstable | Guaranteed는 아니지만, 최소 1개 컨테이너(또는 Pod-level)에 CPU/Memory request·limit 중 하나라도 있음 | 중간 |
| BestEffort | 어떤 컨테이너에도 CPU·Memory request·limit가 하나도 없음 | 가장 먼저 |
static CPU 정책으로 전용 CPU 확보 가능PodLevelResources) 사용 시 — Pod 수준 CPU·Memory가 request=limit이면 Guaranteed 판정MemoryQoS)memory.high)memory.max)에 닿기 전에 미리 할당을 조절하도록 kubelet이 memory.high를 설정memory.high = requests + memoryThrottlingFactor * (limits - requests) (memoryThrottlingFactor 기본 0.9)
memory.high ≈ 947Mimemory.high 미설정 — request=limit이거나, request·limit 자체가 없어서memoryReservationPolicy)memory.min/memory.low 적용 방식 제어| 정책 | 동작 |
|---|---|
None (기본) |
memory.min·memory.low 미설정 — 커널이 메모리를 hard-lock 하지 않음 |
TieredReservation |
QoS별 차등 보호 (아래) |
TieredReservation일 때 QoS별 설정
memory.min = memory request. 커널이 어떤 경우에도 회수 안 함memory.low = memory request. 우선 보존하되 극심한 압박 시 회수 가능memory.high throttling이 알려진 livelock 버그를 유발할 수 있음MemoryQoS를 켜면 kubelet이 시작 시 경고 로그를 남김