Containerd Logo

시작은 ?

컨테이너 기술로 주목받은 Docker 사는 2016 년 12 월 컨테이너 런타임 부분을 독립적인 오픈 소스 프로젝트인 “containerd” 로 분리하여 마이크로 소프트, Google, AWS, IBM 등과 공동으로 개발하기로 발표하였습니다.

이것은 Docker 의해 빠르게 확산되기 시작한 컨테이너형 가상화 환경에서 컨테이너 런타임을 특정 벤더에 의존하지 않고 중립적인 입장에서 컨테이너 표준인 OCI (Open Container Initiative) 에 기준으로 구현하는 것을 목적으로 합니다.

그 3 개월 후 2017 년 3 월에는 containerd 오픈 소스 프로젝트 CNCF (Cloud Native Computing Foundation)에 기증받아 2017 년 12월 버전 1.0 을 출시하였습니다 .

Kubernetes Containerd

Containerd 는 ?

docker containerd

Containerd는 컨테이너를 실행하고 노드에서 이미지를 관리하는 데 필요한 최소한의 기능 세트를 제공하는 OCI 호환 코어 컨테이너 런타임 중 하나 입니다.

발전 과정

Kubernetes Containerd

containerd는 Docker 1.11 이후 Docker 코어 컨테이너 런타임 입니다.

RunC 기반이며, 컨테이너 표준 인 OCI (Open Container Initiative)을 준수하고 있습니다.

containerd  1.1 버전은  Kubernetes를 기본적으로 지원하여, Containerd는 사실상 표준 컨테이너 런타임이라고 할 수 있습니다.

또한 OpenStack Foundation 에서 오픈 소스로 개발하고있는 컨테이너 런타임 “Kata Container” 과 Google은 오픈 소스로 공개 한 ‘gVisor ” 등 다양한 옵션이  등장하고 있습니다.

Kubernetes 와 Containerd 통합 아키텍처의 발전

Kubernetes Containerd

일반적으로 Kubernetes로 구축하는 클러스터에서는 Docker를 이용하여 컨테이너를 실행합니다.

이때 Kubernetes과 Docker 사이에서는 Kubernetes에서 표준화 된 API 인 CRI (Container Runtime Interface) 에 의해 교환이 이루어집니다.

그러나 Docker는 현재 CRI를 기본적으로는 지원하지 않기 때문에 Kubernets과 Docker는 “dockershim”라는 다리를 통해 교환이 이루어지고 있습니다.

Containerd version

2017 년 12 월 CNCF에서 버전 1.0에 도달 한 containerd는 kubelet과 containerd사이에서 작동하려면 cri-containerd라는 데몬이 필요했습니다.

Cri-containerd 는 Kubelet의 CRI (Container Runtime Interface) 서비스 요청을 처리하고 containerd를 사용하여 해당 컨테이너 및 컨테이너 이미지를 관리합니다.

containerd1.1에서는 cri-containerd 데몬이 이제 containerd CRI 플러그인으로 리팩터링됩니다.

CRI 플러그인은 containerd1.1에 내장되어 있으며 기본적으로 활성화되어 있습니다.

cri-containerd와 달리 CRI 플러그인은 직접 함수 호출을 통해 containerd와 상호 작용합니다.

사용자는 이제 containerd1.1과 함께 Kubernetes를 직접 사용할 수 있습니다.

cri-containerd 데몬은 더 이상 필요하지 않습니다.

Docker 와의 성능 비교

성능 향상은 containerd1.1 릴리스에서 핵심 항목 중 하나였습니다. 성능은 포드 시작 지연 (Pod startup latency) 와 자원사용부분에서 최적화하였습니다.

다음 결과는 containerd1.1과 Docker 18.03 CE를 비교 한 것입니다.

containerd1.1은 containerd에 내장 된 CRI 플러그인을 사용합니다. Docker 18.03 CE 통합은 dockershim을 사용합니다.

POD 시작 지연 시간 (Pod Startup Latency )

“105 pod batch startup benchmark”결과는 containerd 1.1 통합이 Docker 18.03 CE 통합 dockershim보다 낮음을 나타냅니다 (더 낮은 것이 좋음).

Performance_POD_Startup_latency

CPU 와 메모리 사용량

containerd1.1 는 Docker 18.03 CE와 dockershim의 통합과 비교하여 전체 CPU와 메모리를 덜 소모합니다.

아래 그림에서 볼 수 있듯이 Dockers와 통합 된 Docker 18.03 CE와 비교할 때 containerd1.1 은 kubelet cpu 사용량이 30.89 %, 컨테이너 런타임 CPU 사용량이 68.13 %, RSS 메모리 사용량이 11.30 % 감소했으며, 컨테이너 런타임 RSS 메모리 사용률이 % 감소했습니다.

Performance_CPU_Usage
Performance_Memory_Usage
Cloud Native Computing Foundation - CNCF Projects

CLOUD NATIVE COMPUTING FOUNDATION 는?

2015 년 7 월에 발표된 2016 년 1 월에 정식 출범 한 Cloud Native Computing Foundation (이하 CNCF)는 혼돈스러운 컨테이너와 관련된 다양한 기술적인 문제들을 오픈소스로 해결하는 하는 것을 목표로하고 있습니다.

Cloud Native Computing Foundation 는 대표적으로 Kubernetes 와 Prometheus 와 같은 클라우드 네이티브 오픈소스 기술들을 추진하고 관리하는 단체입니다.

References & Related Links

Summary
product image
Author Rating
1star1star1star1star1star
Aggregate Rating
5 based on 3 votes
Brand Name
OPENNARU
Product Name
KHAN [apm]