[Kubernetes] CRI-O란 무엇일까?

GoodCoder·2023년 5월 24일
0

쿠버네티스개념

목록 보기
1/6

Intro

쿠버네티스 관리를 위하여 설치하는 CRI-O와 Docker의 차이를 확인해보자.

Main

Kubernetes는 더이상 Docker를 호환하지 않는다. (version 1.2 이상부터)

왜 쿠버네티스는 Docker와 호환되지 않을까?
다양한 곳에서 확인하였는데 제가 생각하는 이유는 아래와 같습니다.

Kubernetes의 목적성과 맞지 않기 때문이다.
Kubernetes는 Container를 관리하는 것에 초점이 맞춰져 있습니다.
이에 비해 Docker의 경우에는 Image 관리, Container 관리, 개발환경 구축 등 다양한 환경을 제공합니다.
이 부분에서 Kubernetes의 이해관계가 상충되는 것입니다.

Kubernetes : 난 Container만 있으면 되는데..?
Docker : 나는 여러가지 작업을 다 해줄수 있어!
Kubernetes : 그러면.. 그냥 안쓸게 ㅋㅋ 너말고도 많아

이런 느낌...?

여기서까지만 듣게 되면 "Docker 없이 Container는 어떻게 만들건데..?"라고 생각할 수 있습니다.

이것을 이해하기 위해서는 Container가 어떻게 생성되는지를 좀 더 깊게 이해하고 넘어가야할 필요가 있습니다.

우리가 쉽게 접하는 Docker를 기준으로 먼저 생각을 하게 되면 다음과 같습니다.
Docker Image 생성 > Container 생성 및 Container에서 Image를 넣어서 사용

이 부분에서 Docker Image 생성하는 부분을 OCI(Open Container Initiative),
해당 이미지를 Container에서 압축해제하여 사용하는 부분을 CRI(Container Runtime Interface)라고 불리게 됩니다.

우리가 위에서 이야기를 한 것처럼 Kubernetes에서는 "Image는 모르겠고, CRI만 있으면 된다 이말이야"라고 말합니다. 그렇기에 이 부분만을 활용하는 CRI-O를 Kubernetes에서는 많이 연결하여 사용합니다.

그렇다면 Image는 어디서 만들어..?
저같은 경우에는 CRI-O와 Docker를 같이 설치하여 OCI는 Docker에서, CRI-O는 CRI를 담당하게끔 하였습니다. (Buildah와 같이 OCI만 담당하는 얘들도 있는거 같긴 합니다..)

결론

  1. Kubernetes는 더이상 docker를 호환하지 않는다.
  2. Kubernetes는 Buildah + CRI-O or Docker + CRI-O로 구성하는 것이 좋다.
  3. 기본 개념 자체가 엄청나게 빡세드아..
profile
항상 끊임없이 노력하는 개발자입니다.

0개의 댓글