쿠버네티스

[쿠버네티스] cgroup과 cgroup driver이란

IntegerString 2023. 6. 8. 10:31

cgroup

- 프로세스에 대한 리소스 분리 및 할당 제어를 제공하는 리눅스 커널 기능

- 이를 통해 프로세스를 계층형 컨테이너로 그룹화하고 이러한 컨테이너 간의 CPU, 메모리, 디스크 I/O 및 네트워크 대역폭과 같은 시스템 리소스 할당을 관리할 수 있음

- cgroup이 관리할 수 있는 리소스의 컨트롤러는 파일 시스템의 형태로 관리되고 있음

 

cgroup driver

- 리소스 관리를 위해 kubernetes 런타임이 기본 리눅스 커널의 cgroup 하위 시스템과 상호 작용하는 방법

- kubernetes 클러스터에서 사용되는 컨테이너 런타임을 구성할 때 설정됨

 

사용 가능한 cgroup driver

1. cgroupfs

- kubernetes의 기본 cgroup 드라이버

- cgroupfs 파일 시스템을 사용하여 컨테이너에 대한 리소스 제한을 관리하고 적용함 (직접 매핑)

- 대부분의 리눅스 배포판에서 지원됨

- tree /sys/fs/cgroup 로 디렉터리 구조 확인 가능

2. systemd

- systemd init 시스템과 통합되며 systemd 자체 cgroup 관리 기능을 활용함 (slice > scope> service 단위의 계층 구조를 만들어 매핑)

- kubernetes는 systemd에서 제공하는 향상된 제어 및 자원 관리 기능을 활용할 수 있음

 

kubelet의 cgroup driver를 systemd로 설정했다면 반드시 컨테이너 런타임의 cgroup 드라이버 또한 systemd로 설정해야함


참고 1: https://kubernetes.io/docs/setup/production-environment/container-runtimes/#cgroup-drivers

 

Container Runtimes

Note: Dockershim has been removed from the Kubernetes project as of release 1.24. Read the Dockershim Removal FAQ for further details. You need to install a container runtime into each node in the cluster so that Pods can run there. This page outlines what

kubernetes.io

참고 2: https://www.slideshare.net/JoHoon1/systemd-cgroup

 

왜 쿠버네티스는 systemd로 cgroup을 관리하려고 할까요

왜 쿠버네티스는 systemd로 cgroup을 관리하려고 할까요? This document provides who want to know about cgroupfs in k8s. - Email: pagaia@hotmail.com, geunwoo.j.shim@gmail.com - Git...

www.slideshare.net