티스토리 뷰

728x170

1) CRI-O의 등장? 왜 나타났을까? 이미 대표적인 Container Runtime인 Docker가 있는데..

사실 잘못 알고 있는 점이 있는데, 도커는 Kubernetes를 위해 등장한 기술은 아니다. 컨테이너 런타임이라는 기술을 만든것은 일종의 규격을 만들기 위할 뿐 컨테이너가 활용되는 다양한 오케스트레이션 플랫폼을 위해 도커는 존재한다.

따라서 도커가 Kubernetes를 지원하는 것이 아니라 Kubernetes가 도커를 지원하는 방식이다.

이는 최근 Kubernetes가 컨테이너 오케스트레이션 플랫폼의 대부분을 점유함으로써 도커에서는 무상으로 사용하는 것에 대한 문제를 삼게 되었다. Docker-CE가 존재하지만, 이 마저도 Docker에서는 지원 중단을 선언했다.

이로 인해 구글은 CRI-O를 개발했고 서서히 CRI-O로의 전환을 시도하고 있다.

 

2) Docker의 단점은?

- Docker는 너무 무겁다.

- DockerEE는 subscription 구매를 해야 한다.

- Docker Runtime의 불필요한 기능이 포함된 무거운 모듈

- 버그 픽스의 시간 소요 (Kubernetes에서 버그 픽스를 해야 함)

 

3) CRI-O는 무엇인가요?

- Docker -> CRI-O(Runtime), Podman(API)

- CRI-O는 구글에서 최초 개발

- PodMan은 Docker처럼 클러스터로 관리할 수 있음

- CRI-O는 Single node관리

- CRI-O는 Kubernetes를 위해 개발됨 (Only Kubernetes)

 

4) OCI 구성요소

- CRI-O (Runtime)

- PODMAN (API)

- BuildAH (이미지 빌드)

- Skepo (이미지 서버)

 

그리드형
댓글
  • 프로필사진 sup 내용이 좀 이상합니다. CRI-O의 full name은 Container Runtime Interface - Open Container Initiative로, CRI-OCI 입니다. 포스팅 제목에도 직접 쓰셨네요. k8s의 CRI를 구현하면서, OCI 스펙을 충족해 OCI와 호환되는 컨테이너 런타임이라는 뜻에서 지어진 이름입니다. 근데 OCI의 구성요소중 하나가 CRI-O라니 이상하지 않나요? 2022.02.10 16:13
  • 프로필사진 GodNR OCI는 컨테이너 표준을 의미합니다. CRI-O만으로는 OCI 표준을 완전히 구현할 수 없으며, CRI-O, PODMAN 등이 함께 구성되어야 OCI 표준을 준수할 수 있다는 의미입니다. 2022.02.17 18:20 신고
  • 프로필사진 sup OCI를 준수하는 것에 CRI-O, podman, buildah, skopeo가 각각 어떤 식으로 기여하고 있나요? OCI는 image specification이랑 runtime specification 등, 몇가지 spec을 정의하고 있습니다. (제가 알기론 이렇게 2가지인데, 최근에 보니 distribution spec이 또 있는 것 같더군요) 이 OCI의 image spec을 준수하여 빌드된 이미지라면 OCI runtime spec을 준수하여 구현된 container runtime에서 컨테이너화가 되는 것이 보장되도록 되어 있습니다. 따라서 buildah는 OCI 이미지 spec을 준수하여 이미지를 빌드하도록 되어 있고, podman은 OCI runtime spec을 준수하여 구현된 컨테이너 런타임이라서 buildah에서 빌드한 이미지를 run 할 수 있는 것입니다. 이 처럼 OCI라는 표준 spec을 준수하였기 때문에, docker로 빌드한 이미지를 podman으로 띄울 수 있고, buildah로 빌드한 이미지를 docker로 띄울 수 있는 것입니다. 이처럼, cri-o, podman, buildah, skopeo 각각이 OCI 표준을 준수하여 구현된 것이지, 이 녀석들을 조합해야 완벽하게 OCI를 준수할 수 있다는게 무슨 의미인지 모르겠습니다. (추가로 오타이신 것 같은데 skepo가 아니라 skopeo입니다) 2022.02.28 17:34
  • 프로필사진 sup 더불어, cri-o는 CRI를 구현했다는 말은 있지만 OCI를 구현한다는 말은 없습니다. OCI compatible runtimes를 사용할 수 있게 해준다고 되어 있을 뿐입니다. 출처는 공식 docs입니다. 2022.02.28 17:37
댓글쓰기 폼