K8s kube-reserved
Referenced by
정의 (Definition)
kube-reserved는 노드에서 Kubernetes 시스템 데몬(kubelet, container runtime, kube-proxy 등)이 사용할 CPU/메모리를 선예약 하여, 해당 자원이 파드 스케줄링에 소비되지 않도록 하는 설정입니다.
문제가 되는 배경 (Problem Context)
노드 자원을 파드가 과도하게 점유하면, 노드 관리/네트워킹을 담당하는 kubelet/런타임이 자원 부족으로 불안정해지고 결국 노드 전체가 NotReady로 전이될 수 있습니다. kube-reserved는 “노드 운영을 위한 최소 몫”을 강제합니다.
핵심 메커니즘 (How it Works)
kubelet 플래그로 예약량을 지정합니다.
--kube-reserved=cpu=200m,memory=512Mi이 값은 노드의 Allocatable 계산에서 차감 되어, 스케줄러가 파드 배치에 사용할 수 있는 총량이 줄어듭니다. (관련: K8s Node Allocatable)
불변 조건과 보장 범위 (Invariants & Guarantees)
- 보장: Allocatable 산정에서
kube-reserved만큼은 파드에 “가용”으로 잡히지 않습니다. - 비보장: 예약했다고 해서 kubelet/런타임이 항상 안정적이라고 보장할 수는 없습니다(메모리 누수, 디스크 압박, 커널 이슈 등 다른 원인 존재).
비유 (Analogy)
kube-reserved는 건물 관리실(노드 운영)을 위한 필수 유지비(고정비) 를 미리 떼어두는 것에 가깝습니다.
실무적 함의 (Operational Implications)
kube-reserved가 너무 작으면 노드 운영 프로세스가 굶고, 너무 크면 워크로드 밀도가 떨어집니다.- 예약/축출/시스템 예약은 함께 설계해야 합니다. (관련: K8s 노드 리소스 예약)
주의사항 / 오해 (Pitfalls & Misconceptions)
kube-reserved는 “리소스 제한(limit)”이 아니라,Allocatable에서의 차감 입니다.- 노드 압박을 막는 것은
kube-reserved하나로 끝나지 않으며 eviction threshold 등과 조합이 필요합니다.
References
- Kubernetes Docs: Reserve Compute Resources
- Related Note: K8s 노드 리소스 예약
- Related Note: K8s system-reserved
- Related Note: K8s Node Allocatable