### Main points - is not a kubernetes component itself. - a [container runtime](https://kubernetes.io/docs/setup/production-environment/container-runtimes) interface should be placed into each node in the cluster so that Pods can run there. - is present in all nodes. ### Examples - [containerd](https://kubernetes.io/docs/setup/production-environment/container-runtimes/#containerd) - [CRI-O](https://kubernetes.io/docs/setup/production-environment/container-runtimes/#cri-o) - [Docker Engine](https://kubernetes.io/docs/setup/production-environment/container-runtimes/#docker) - [Mirantis Container Runtime](https://kubernetes.io/docs/setup/production-environment/container-runtimes/#mcr) ### Docker as CRI In 2020 Kubernetes announced that Docker don't be supported as a CRI anymore. This leads to panic of the community. Kubernetes published [this article](https://kubernetes.io/blog/2020/12/02/dont-panic-kubernetes-and-docker/) titled "Don't panic!". Docker itself is not a container runtime and uses `containerd` as a CRI. Since [[kubelet]] can directly speak to `containerd`, `docker-shim` is needed anymore. Although `docker-shim` is still maintained (as of Feb 2025), it is recommended to use `containerd` directly to run docker containers. ### CNI & CSI Like CRIs, container network interfaces (CNI) and container storage interfaces (CSI) are 3rd-party software that can reside in a node. ![[Pasted image 20250206072107.png]] For example, CNI does pod-to-pod connectivity and handles IP pulling.