K8s system-reserved
Referenced by
정의 (Definition)
system-reserved는 노드 OS 데몬(sshd, udevd, journald 등)이 사용할 CPU/메모리를 선예약 하여, 해당 자원이 파드 스케줄링에 소비되지 않도록 하는 설정입니다.
문제가 되는 배경 (Problem Context)
OS 데몬이 자원 부족으로 불안정해지면 원격 접속/로그 기록/디바이스 관리가 붕괴하고, 결과적으로 노드가 장애 대응 불가능한 상태가 됩니다. system-reserved는 “OS 생존 자원”을 강제합니다.
핵심 메커니즘 (How it Works)
kubelet 플래그로 예약량을 지정합니다.
--system-reserved=cpu=200m,memory=512Mi이 값은 노드의 Allocatable 계산에서 차감 됩니다. (관련: K8s Node Allocatable)
불변 조건과 보장 범위 (Invariants & Guarantees)
- 보장: Allocatable 산정에서
system-reserved만큼은 파드에 “가용”으로 잡히지 않습니다. - 비보장: 예약했다고 해서 OS가 항상 안정적이라고 보장할 수는 없습니다(디스크 압박, 커널 패닉, 네트워크 이슈 등).
비유 (Analogy)
system-reserved는 서버 운영체제가 “숨 쉴 수 있도록” 남겨두는 최소 산소량 입니다.
실무적 함의 (Operational Implications)
system-reserved는 노드 OS/로그/에이전트 구성(보안 에이전트, 로깅, 모니터링 등)과 함께 산정해야 합니다.- 클러스터 밀도를 높이기 위해 예약을 과도하게 줄이면, 장애 시 복구와 관측 가능성이 무너질 수 있습니다.
주의사항 / 오해 (Pitfalls & Misconceptions)
system-reserved는 “OS만을 위한 cgroup 제한”이 아니라,Allocatable 차감 의 성격이 핵심입니다.kube-reserved와 역할이 다릅니다. (관련: K8s kube-reserved)
References
- Kubernetes Docs: Reserve Compute Resources
- Related Note: K8s 노드 리소스 예약
- Related Note: K8s kube-reserved
- Related Note: K8s Node Allocatable