### 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.