CRI
개요
쿠버네티스에서 활용할 수 있는 컨테이너 런타임에 대한 양식을 지정한 인터페이스.
모든 런타임들이 그런 것은 아니겠지만, cri에 준수하는 플러그인을 만들어 이를 통해 통신할 수 있도록 만들어두는 듯하다.
조금 더 자세한 내용은 컨테이너 런타임에 담겨있다.
구조
Containerd 문서에 좋은 그림이 있어 싣는다.[1]
CRI란 인터페이스의 목표는 kubelet이 실행되고 있는 노드가 구동하고 있는 컨테이너 런타임이 무엇인지 관련 없이 일관된 방식으로 명령을 전달하여 컨테이너를 조작할 수 있게 하는 것이다.
이 CRI 구현체로 또 다양한 종류가 있으며, 대체로 이들은 OCI라는 커널 단의 컨테이너 런타임을 조작하는 방식을 통해 kubelet이 다뤄야 할 각종 작업들을 추상화시킨다.
사용자가 파드를 조작할 때 이어지는 흐름을 레이어로 간략하게 따져보자.
- 사용자의 요청이 kube-apiserver에 전달된다.
- api서버는 Etcd에 사용자의 희망 상태를 반영한다.
- kubelet이 자신 노드의 파드에 대한 정보를 읽는다.
- CRI 플러그인에 명령을 전달한다.
- CRI 구현체는 OCI 구현체에 명령을 전달한다.
- OCI는 커널 단에서 cgroups, namespace 등의 기능을 통해 명령을 수행한다.
관련 문서
이름 | noteType | created |
---|---|---|
Containerd | knowledge | 2025-02-24 |