여러분은 kubernetes에서 어떤 컨테이너 런타임을 사용하고 계신가요?

대부분은 도커(docker) 라고 대답할 것입니다. 2018년 만해도 Google Kubernetes Engine (GKE) 의 런타임에 도커를 사용하였습니다.

이제 kubernetes 는 자유롭게 컨테이너 런타임을 선택할 수 있습니다.

CRI ( Container Runtime Interface) 표준의 등장과 함께 Kubernetes 에서 사용할 수 있는 런타임은 docker, cri-o, rkt, containerd 가 있으며, 향후에는 더 늘어날 수도 있습니다.

등장 배경은 ?

CRI 표준을 따르는 어떠한 컨테이너 런타임이라도 Kubernetes 와 통합하여 사용할 수 있습니다.

Kubernetes 발전을 위해 Pluggability 는 필수적인 요소 입니다. 이것은 Kubernetes 에 대한 사용자 경험(User Experience)을 변경하지 않고 스토리지, 네트워크, 스케쥴러, 컨테이너 런타임 등을 대체 가능하고 개선할 수 있도록 합니다.

대표적으로 Kubernetes 에서 컨터이너 런타임(Container Runtime ) 을 플러그처럼 (Pluggable) 교체 가능한 방법을 제공하기 위해 CRI (컨테이너 런타임 인터페이스: Container Runtime interface) 라고 부르는 API 를 만들었습니다.

Kubelet은 CRI 인터페이스를 사용하여 컨테이너를 조작할 수 있습니다. CRI 표준을 따르는 어떠한 컨테이너 런타임이라도 Kubernetes 와 통합하여 사용할 수 있습니다.

CRI-O 란 ?

레드햇이 개발한 CRI-O 는 Kubernetes 용 Open Container Initiative (OCI) 컨테이너 런타임이다.

레드햇이 개발한 CRI-O 는 Kubernetes 용 Open Container Initiative (OCI) 컨테이너 런타임이다.

CRI-O는 오픈 소스 커뮤니티 중심으로한 컨테이너 엔진으로 Kubernetes 에서 주로 사용되었던 Docker 를 대체하는 것에 목적이 있습니다.

CRI-O는 Kubernetes 의 CRI (Container Runtime Interface) 표준 컴포넌트를 최소한의 런타임으로 구현하는 것으로, 특히 Kubernetes와의 통합을 염두에 두고 설계하였습니다.

CRI-O는 2016 년 Kubernetes 프로젝트에서 CRI를 도입 한 후 개발이 시작되어 2017 년에 CRI-O 1.0을 출시 하였습니다.

CRI-O 프로젝트 범위는?

CRI-O 는 Kubernetes 에서 컨테이너 실행에 대한 부분이 이기 때문에 다음과 같이 범위가 한정되어 있다.

  • 기존 Docker 이미지를 포함한 여러 이미지 포맷을 지원
  • 이미지 다운로드에 대한 신뢰성과 검증 방법 지원
  • 컨테이너 이미지 관리 (이미지 레이어, 오버레이 파일 시스템 등)
  • 컨테이너 프로세스의 라이프 사이클 관리
  • CRI을 지원하기 위해 필요한 모니터링 및 로깅
  • CRI을 지원하기 위한 자원 분리

CRI-O 는 런타임 컨테이너의 구성과 실행 환경 라이프 사이클의 표준과 함께 이미지 구성과 파일 시스템 인덱스 매니페스트 표준을 정의하는 Open Container Initiative 준수하고 있다.

CRI-O 아키텍처

관련 도구들

컨테이너와 도구들
  • crictl: crictl은 CRI 호환 컨테이너 런타임을위한 CLI (커맨드 라인 인터페이스) 입니다. 이를 사용하여 Kubernetes 노드에서 컨테이너 런타임과 애플리케이션을 검사하고 디버깅 할 수 있습니다.
    • 주로 문제를 해결하고 CRI-O 컨테이너 엔진과 직접 연결하여 사용합니다.
  • runc: 컨테이너 이미지를 실행하는 데 사용합니다.
  • podman: 컨테이너 엔진의 외부에서 Pod 와 컨테이너 이미지 관리 (run, stop, start, ps, attach, exec 등)하는 데 사용합니다.
    • podman는 수많은 docker명령 기능 및 명령 줄 호환성을 제공하고 Pod를 관리 할 수 있도록 그 기능을 확장합니다.
  • buildah: 컨테이너 이미지를 빌드하고 푸시하고 이에 서명하는 데 사용합니다.
  • skopeo: 이미지를 복사하고 검사하고 제거하고 이에 서명하는 데 사용합니다.

정리하자면

Cloud Native Computing Foundation ( CNCF )

최근 몇 년간 컨테이너는 광범위하고 급속히 확산하고 있습니다. 컨테이너 상호 운용성도 관련 업계들이 적극적인  상호협력을 한 결과로 개방형 컨테이너 이니셔티브 (OCI)를 조직하고이미지와  런타임 표준 v1.0 의 발표에 하였습니다.

컨테이너의 표준인 OCI (Open Container Initiative) 는 표준 스펙이며 구현하지는 않기 때문에 다운로드 되거나 실행되지는 않습니다.

OCI 표준에 대한 구현체가 컨테이너 런타임입니다. 초기에는 도커만 있었으나 그 이후로 CRI-O 와 RKT, Containerd 가 등장 하였습니다.

컨테이너 런타임을 제어하는 오케스트레이션의 표준은 CNCF( Cloud Native Computing Foundation) 이며 구현체는  “kubernetes”입니다.

Cloud Native Computing Foundation - CNCF Projects

CLOUD NATIVE COMPUTING FOUNDATION 는?

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

OCI ( OPEN CONTAINER INITIATIVE )

OCI는 2015년 6월 22일에 Docker 사와  CoreOS 사가 각각 별도로 표준화를 진행하고 있던 컨테이너의 규격을 통일하는 것을 목적으로 Docker, CoreOS 그리고  AWS, Google, Microsoft, IBM 등 주요 플랫폼 벤더가 참여하여 2015 년 6 월에 발족 한 단체이다.

컨테이너 표준

References & Related Links

  • Open Container Initiative-based implementation of Kubernetes Container Runtime Interface ::  https://cri-o.io
Summary
product image
Author Rating
1star1star1star1star1star
Aggregate Rating
5 based on 3 votes
Brand Name
OPENNARU
Product Name
KHAN [apm]