프로세스에 할당하는 CPU, 메모리, 네트워크 대역폭 등과 같은 자원을 개별적으로 제한하기 위한 시스템 커널의 기능
컨테이너 런타임은 이 기술을 사용하에 컨테이너에 자원을 할당
cgroup을 관리하기 위한 기술
cgroupfs
직접 cgroup을 마운트해서 사용
- cgroup이 관리할 수 있는 자원의 컨트롤러는 파일 시스템의 형태로 관리. 이와 관련된 정보를 파일 시스템의 형태로 변환시켜 주는 매니저가 cgroupfs
- cgroupfs는 /sys/fs/cgroup 경로의 하위에 이 정보를 마운트하여 관리
systemd
프로세스가 사용하는 자원을 관리하기 위해 slice > scope > service 단위의 계층적인 구조로 만들어 각 단위에 자원을 할당
- /sys/fs/cgroup/systemd 하위의 파일 시스템의 계층 구조를 통해 확인 가능
- systemd에 의해 관리되는 cgroup 정보는 /sys/fs/cgroup 하위의 자원의 컨트롤러(cpu, memory 등)의 하위에서 slice의 이름으로 된 파일 시스템으로 표현
- 컨테이너에서 어떤 cgroup 매니저를 사용하고 있는지 확인하는 명령어
kubelet --version
→ Kubernetes v1.20.2docker info | grep Cgroup
kubernetes v1.22로 올라가면서 기존에는 경고 수준으로 처리하던 cgroup driver을 정해진 설정이 없다면 default를 systemd로 설정하도록 코드가 변경됨