programing

cgroups와 네임스페이스 간의 차이

minimums 2023. 8. 21. 21:00
반응형

cgroups와 네임스페이스 간의 차이

최근 도커를 배우기 시작했는데 대부분의 무거운 리프팅은 네임스페이스와 cgroup을 사용하여 리눅스 커널에서 하는 것 같습니다.

제가 혼란스러워하는 몇 가지 사항은 다음과 같습니다.

  1. 네임스페이스와 cgroup의 차이점은 무엇입니까?이들이 다루는 다양한 사용 사례는 무엇입니까?

  2. 도커는 이 위에 무엇을 구현하여 인기를 얻었습니까?

  3. 저는 이러한 기능의 내부와 구현 방법을 알고 싶습니다.

이 두 개념에 대한 적절한 링크는 PR 14307에서 수정되었습니다.

후드 아래에 있는 도커는 다음 구성 요소를 기반으로 합니다.

리눅스 커널의 cgroups 및 기능

포함:

  • cgroup: Control Group은 작업 세트와 모든 미래 하위를 특수한 동작을 가진 계층적 그룹으로 통합/파티셔닝하는 메커니즘을 제공합니다.
  • 네임스페이스: 글로벌 시스템 리소스를 추상화로 래핑하여 네임스페이스 내의 프로세스에 글로벌 리소스의 고유한 분리된 인스턴스가 있는 것처럼 보이게 합니다.

간단히 말해서:

  • Cgroups = 사용할 수 있는 양을 제한합니다.
  • 네임스페이스 = 표시되는 내용을 제한합니다(따라서 사용).

제롬 페타조니 "컨테이너의 해부학: 네임스페이스, cgroups일부 파일 시스템 매직"에서 더 많은 정보를 확인할 수 있습니다.

그룹에는 리소스 미터링 및 제한이 포함됩니다.

  • 기억
  • CPU
  • 블록 I/O
  • 네트워크

네임스페이스는 프로세스에 고유한 시스템 뷰를 제공합니다.

다중 네임스페이스:

cgroups는 CPU, 메모리, 네트워크 I/O 또는 파일 시스템에 대한 액세스와 같은 프로세스 또는 프로세스 집합이 사용할 수 있는 리소스를 제한하는 반면 네임스페이스는 프로세스 그룹의 가시성을 시스템의 나머지 부분으로 제한합니다.

자세한 내용은 Linux 커널 C 그룹네임스페이스가 어떻게 현대적인 컨테이너를 가능하게 했는지 방문하십시오.

Cgroups(제어 그룹)는 리소스 관리를 수행합니다.
컨테이너에 제공할 호스트 시스템 리소스의 양을 결정합니다.

예:- 다음과 같은 서비스를 생성하기 위한 리소스를 도커-프로그래밍 yaml 파일에 정의합니다.

리소스:한계:CPU: "0.1"(100밀리코어)메모리: 50M

여기서 이 예에서는 cgroups에게 이러한 리소스를 특정 컨테이너에 할당하도록 명시적으로 요청합니다.


네임스페이스: 프로세스 격리, 컨테이너 완전 격리, 별도의 파일 시스템을 제공합니다.


There are 6 types of namespaces:
1. mount ns - for file system.
2. UTS(Unique time sharing) ns- which checks for different hostnames of running containers
3. IPC ns - interprocess communication
4. Network ns- takes care of different ip allocation to different containers
5. PID ns - process id isolation
6. user ns- different username(uid)

언급URL : https://stackoverflow.com/questions/34820558/difference-between-cgroups-and-namespaces

반응형