Fairy ' s
[K8s] CLI 본문
Container Runtime Interface (CRI)
어떤 공급업체든 OCI 표준을 준수하는 한에서 쿠버네티스의 컨테이너 런타임으로 작업하게 해준다.
- Open Container Initiative (OCI) : 이미지 스펙과 런타임 스펙의 기준으로 구성돼 있다.
- Dockershim : Docker는 CRI가 도입되기 전에 만들어졌고, 여전히 가장 지배적인 컨테이너 도구이기 떄문에, CRI 밖에서 Docker를 지속 지원하는 임시방편으로 만들어진 도커 지원 방식이다.
- 하지만 Dockershim을 유지하기 위한 불필요한 노력으로 문제가 커졌기 때문에, Dockershim을 완전히 제거하였다.
- 따라서 Docker 자체는 쿠버네티스에서 지원 런타임으로 제거되었다.
- Docker 지원이 해제 된 뒤에도 Docker의 이미지들은 OCI의 표준을 모두 준수하기 때문에 여전히 작동한다.
- ContainerD : Docker의 일부지만, 현재는 독립된 프로젝트로, CRI 호환이 가능하고 다른 런타임처럼 쿠버네티스와 직접적으로 작업할 수 있다. Docker와 별도로 자체 런타임으로 사용될 수 있다.
CLI 명령어
nerdctl
- Docker 지원이 해제 된 후 사용할 수 있는 CLI는 nerdctl이 있다.
- Docker CLI와 같거나 그 이상의 기능을 지원한다.
- 컨테이너를 만드는 데 일반 목적으로 사용된다.
$ docker
$ nerdctl
$ docker run --name redis redis:airplane
$ nerdctl run --name redis redis:airplane
$ docker run --name webserver -p 80:80 -d nginx
$ nerdctl run --name webserver -p 80:80 -d nginx
circtl
- cri 호환이 가능한 컨테이너 런타임과 상호작용하거나, 디버깅 목적으로 사용된다.
- 컨테이너 생성엔 이상적으로 사용되진 않는다.
- 쿠버네티스 커뮤니티에서 개발, 관리하고 모든 다양한 컨테이너 런타임에 걸쳐 작동한다.
- 별도로 설치가 필요하며, Docker 명령어와 유사하다.
- Kubelet과 함께 작동한다.
$ crictl
$ crictl pull busybox
$ crictl images
$ crictl ps -a
$ crictl exec -i -t <container ID> ls
$ crictl logs <container ID>
$ crictl pods
$ crictl --runtime-endpoint <endpoint>
endpoint ▽
unix:///var/run/dockershim.sock
unix:///run/containerd/containerd.sock
unix:///run/crio/crio.sock
unix:///var/run/cri-dockered.sock
CRI에 대한 Runtime Endpoint를 지정하는데 사용하는 명령어로, CRI가 컨테이너 런타임과 통신하는 통신 채널 또는 소켓을 지정한다. 연결이 설정되면 crictl 명령을 사용하여 해당 런타임 내에서 컨테이너를 관리하고 검사할 수 있다.
CTR CLI
- ContainerD와 함께 제공되고 작동한다.
- 디버깅 목적으로만 사용되며 기능도 제한되어 있다.
Docker와 crictl CLI 비교 차트
>> 참고 자료 <<
'Study > K8s' 카테고리의 다른 글
[K8s] Pods (0) | 2023.07.28 |
---|---|
[K8s] Kube Scheduler & Kublet & Kube Proxy (0) | 2023.07.12 |
[K8s] Kube Controller Manager & Kube API Server (0) | 2023.07.12 |
[K8s] ETCD (0) | 2023.07.11 |
[K8s] Cluster Architecture (0) | 2023.07.11 |
Comments