본문 바로가기

Container/Kubernetes

[K8S] 컨테이너 런타임

컨테이너 런타임은 쿠버네티스에서 컨테이너를 실행하고 관리하는 핵심 구성 요소

 

컨테이너 런타임(Container Runtime)은 컨테이너를 실행하고 관리하는 역할을 하는 소프트웨어

쿠버네티스는 컨테이너 기반 애플리케이션을 관리하기 위한 플랫폼이기 때문에, 컨테이너를 실행할 수 있는 런타임 환경이 필요하다.

 

컨테이너 런타임의 역할

 

  • 컨테이너 이미지 가져오기: 컨테이너 이미지를 컨테이너 레지스트리(예: Docker Hub, AWS ECR)에서 다운로드.
  • 컨테이너 생성 및 실행: 다운로드된 이미지를 기반으로 컨테이너를 생성하고 실행.
  • 컨테이너 프로세스 관리: 실행 중인 컨테이너의 상태를 모니터링하고 관리.
  • 네트워크 설정: 컨테이너 네트워크를 설정하여 통신 가능하게 함.
  • 로그 및 메트릭 관리: 컨테이너의 로그와 리소스 사용량을 관리.

이러한 컨테이너 런타임은 CRI( Container Runtime Interface)를 통해 쿠버네티스와 통합된다.

 

Docker

  • 가장 널리 알려진 컨테이너 런타임.
  • 초기 쿠버네티스에서 기본 런타임으로 사용됨.
  • Docker는 OCI 사양이 개발되기 전의 주요 컨테이너 기술이지만 Docker는 현재 OCI Runtime Spec과 Image Spec을 준수하고 있음.
  • 하지만 2021년 이후(v1.24) 쿠버네티스는 Docker 대신 다른 런타임을 권장하고 있음(DockerShim 제거).

containerd

  • Docker에서 분리된 경량 컨테이너 런타임.
  • 쿠버네티스에서 표준 런타임으로 자주 사용됨.
  • 네이티브하게 CRI를 지원하여 쿠버네티스와의 통합이 우수함.

CRI-O

  • CRI 표준을 기반으로 설계된 컨테이너 런타임.
  • 경량화와 단순화를 목표로 함.
  • OpenShift 등 Red Hat 기반 환경에서 자주 사용됨.

 

CRI(Container Runtime Interface)란?

다양한 컨테이너 런타임 솔루션을 지원하기 위해 쿠버네티스는 CRI라는 표준 인터페이스를 제공한다.

  • CRI는 쿠버네티스의 kubelet과 컨테이너 런타임 간의 통신을 정의한 API이다.

이를 통해 쿠버네티스는 OCI를 준수하는 한, 특정 런타임(vendor)에 종속되지 않고 여러 런타임과 유연하게 통합할 수 있다. 그런데 docker는 CRI 표준을 지원하려고 만든게 아니기 때문에(CRI가 더 나중에 도입됨) 쿠버네티스는 DockerShim 을 도입해서 CRI 밖에서 작동하도록하는 임시방편을 만들었다. 하지만 docker를 사용하기위해 너무 많은 문제점이 있어서 v1.24를 기준으로 docker support가 해제됐다. (현재 DockerShim 제거됨)

 

 

OCI (open container initiative): 컨테이너 기술의 표준화를 목적으로 설립된 비영리 조직으로, 컨테이너 관련 기술과 도구의 표준 사양을 정의하고 관리한다.

OCI는 컨테이너 런타임(runtime)과 컨테이너 이미지(image)에 대한 사양을 제공하여, 다양한 컨테이너 도구와 플랫폼이 서로 호환될 수 있도록 한다.

  • image spec : 이미지를 어떻게 build, 저장, 배포 해야하는지에 대한 specification
  • runtime spec: 컨테이너 프로세스의 시작, 실행, 정지와 같은 런타임 specification 정의
    • 파일시스템, 네트워크, 네임스페이스, cgroups(리소스 제한) 등과 같은 Linux 컨테이너의 기본 구성 요소
    • 주요 런타임:
      • runc: OCI 사양을 구현한 가장 널리 사용되는 런타임.
      • containerdCRI-O: runc를 기반으로 작동

 

반응형

'Container > Kubernetes' 카테고리의 다른 글

[K8S] Kube-API Server  (0) 2024.12.24
[K8S] ETCD  (1) 2024.12.24
[K8S] TS - Control Plane Failure  (0) 2024.04.28
[K8S] Multiple Container  (0) 2024.04.28
[K8S] SW Version & Cluster Upgrade  (0) 2024.04.26