컨테이너 런타임은 쿠버네티스에서 컨테이너를 실행하고 관리하는 핵심 구성 요소
컨테이너 런타임(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 사양을 구현한 가장 널리 사용되는 런타임.
- containerd와 CRI-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 |