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