반응형

 

Cgroup (Container Group)

  • 다수의 Process가 포함되어 있는 Process Group
  • 해당 Process Group 이 사용할 Resource (CPU, Memory, Disk, Network) 사용량 제한

컨테이너 상에서 Cgroup

  • Container가 생성된다면 생성된 Container의 Process들을 담당하는 Container Cgroup이 생성
  • Container의 모든 Process들은 해당 Container Cgroup에 소속 (추가 생성되는 프로세스 포함)

컨테이너 관리도구가 Cgroup 제어하는 방법

Cgroup을 제어하는 방법은 cgroupfs을 이용하는 방법과 systemd에서 제공하는 API를 사용하는 방법 2가지가 존재

 

Cgroupfs을 이용하는 방법

  • Linux에서 Cgroup을 제어할 때 사용하는 방식
  • Linux Kernel 내부에 관리하고 있는 특수 파일 시스템
  • systemd는 cgroupfs을 /sys/fs/cgroup 하위 경로에 Mount
  • cgroup 이 Resource Type 별로 존재
  • cgroupfs 경로에 Directory를 생성하여 cgroup 생성 (Directory 구조처럼 Tree 형태)

systemd에서 제공하는 API를 사용하는 방법

  • Linux의 Init Process로써 Daemon Process 제어 역할과 더불어 Cgroup을 제어하는 역할도 수행
  • systemd는 생성한 Unit의 Cgroup을 기본적으로 /sys/fs/cgroup/memory/system.slice 경로의 하위에 생성
  • systemd의 Unit은 systemd가 제어하는 Daemon Process
  • systemd-run --unit=myunit sleep infinity 명령어로 unit 생성 가능

cgroup driver 분석

  • group Driver는 cgroupfs Driver와 systemd Driver 로 구성
  • cgroupfs Driver는 자신이 직접 cgroupfs을 통해서 Cgroup을 제어
  • systemd Driver는 systemd를 통해서 Cgroup을 제어
  • 어떤 Cgroup Driver를 사용할지는 kubelet과 Docker Daemon에 각각 결정. 두 Cgroup Driver는 반드시 동일해야 함
반응형

'인프라 > 쿠버네티스' 카테고리의 다른 글

kubernetes 테스트 환경 구축  (0) 2025.06.03
쿠버네티스 정의 / 구조 / 실행 흐름  (0) 2024.07.20

+ Recent posts