리눅스의 Control Groups 기능이 Kubernetes에 어떻게 적용되는지 살펴보기
백엔드
리눅스의 Control Groups 기능이 Kubernetes에 어떻게 적용되는지 살펴보기
두줄요약
리눅스 cgroups가 Kubernetes의 Pod 자원 제한과 배분에 어떻게 연결되는지 설명했습니다. 메모리와 CPU 설정이 requests, limits로 어떻게 반영되는지도 실험을 통해 정리했습니다.
핵심 내용
- 리눅스 cgroups의 자원 격리·제한 기능과 Kubernetes의 Pod 자원 관리 연결 관계 정리
- memory.limit_in_bytes, cpu.cfs_quota_us, cpu.shares 등 cgroup 주요 설정값과 Pod requests/limits 매핑 설명
- requests는 스케줄링과 상대적 자원 배분에, limits는 실제 사용 상한과 스로틀링·OOM에 영향
구조와 흐름
- cgroupfs를 통해 디렉터리 생성과 파일 수정만으로 자원 제한을 적용하는 방식 소개
- 메모리 제한 실험으로 limit 초과 시 OOM 종료, requests.memory는 soft limit이 아닌 스케줄링 참고값임을 확인
- CPU 제한 실험으로 quota에 따른 스로틀링과 shares에 따른 상대적 CPU 배분 방식 설명
적용해볼 점
- 메모리는 requests와 limits를 같게 두는 운영 습관 제안
- 지연 민감한 API 서버는 CPU limits를 두지 않는 선택 가능성 제시
