-
OCI와 CRIKubernetes - 기초 2022. 8. 23. 01:14
Kubernetes(이하, k8s)를 스터디 시작에 앞서 제일 먼저 도커를 배우게 된다.
먼저 가상화 환경을 이해해야 컨테이너를 관리 및 실행하는 docker와 k8s container runtime을 이해 할 수 있기 때문이라고 생각한다.
그럼, container를 실행하는 것은 docker 뿐이고 k8s는 docker를 관리하는 것일까?? 아니다.
Don't panic: Kubernetes and Docker
k8s v1.20 이후 Container runtime에서 docker 사용이 중단 된다. 괜찮을까?
아래에서 다룰 OCI와 CRI에 의해서 괜찮다. 도커가 생성하는 이미지는 실제로는 도커에만 특정된 이미지가 아니라 OCI 이미지이다.
k8s는 OCI 호환 이미지를 어떤 도구를 사용해 빌드했던 동일하게 인식한다.
또한, 해당 이미지를 도커가 아닌 containerd, CRI-O 등의 다른 Container runtime으로 실행하기 때문이다.
그럼 OCI와 CRI에 대해 가볍게 알아보자.
OCI 란?
CRI를 알아보기에 앞서 OCI에 대해 먼저 알아보자.
Open Container Initiative는 Container의 runtime, format의 표준을 만드는 것을 목적으로 리눅스 재단의 후원을 받아 만들어졌다.
쉽게 말하면 Container platform (docker, rkt 등)에 종속되지 않고 어떠한 container platform을 사용하던 동일한 기능을 하도록 표준을 만들겠다! 라고 이해하면 된다.
자세한 spec은 OCI Github을 통해 확인해보자.
CRI란?
간단하게 설명하자면 k8s 노드의 가장 lowest 계층에는 container를 시작/중지하는 S/W가 있는데. 이것을 컨테이너 런타임이라고 합니다. 우리가 알고 있는 컨테이너 런타임은 대표적으로 도커이지만 도커만 사용 되는 것은 아닐뿐더러 컨테이너 런타임은 빠르게 진화하고 있었습니다. 이러한 환경에 맞춰 k8s는 도커 뿐만 아니라 다른 컨테이너 런타임을 수월하게 지원하기 위해 컨테이너 런타임용 플러그인 API를 개발하게 되었습니다.
k8s 초기 CRI-O(Container Runtime Interface - Open Container Initiative)
CRI-O는 OCI 표준 스펙으로 구현한 컨테이너를 실행하는 것에 중점을 둔 경량화 된 컨테이너 런타임입니다.
Docker, containerd, CRI-O
k8s cri present
자세한 이해를 도울 수 있는
https://kubernetes.io/ko/docs/setup/production-environment/container-runtimes/
https://kubernetes.io/ko/docs/concepts/architecture/cri/
https://kubernetes.io/blog/2016/12/container-runtime-interface-cri-in-kubernetes/
https://kubernetes.io/blog/2020/12/02/dont-panic-kubernetes-and-docker/
'Kubernetes - 기초' 카테고리의 다른 글
쿠버네티스 클러스터와 컴포넌트 (0) 2022.08.24 로컬 kubernetes 환경 구성 + Cheatsheet 적용 (with. minikube, kubectl) (0) 2022.08.22