1. 说明
Kubernetes(K8s)决定放弃直接使用 Docker 作为容器运行时,并转而使用 containerd,主要是为了简化容器运行时架构,提高性能,增强可扩展性,以及更好地遵循容器行业的标准。
具体原因如下:
K8S CRI
K8S发布CRI(Container Runtime Interface),统一了容器运行时接口,凡是支持CRI的容器运行时,皆可作为K8S的底层容器运行时。
例1:如果你使用Docker作为K8S容器运行时的话,kubelet需要先要通过dockershim去调用Docker,再通过Docker去调用containerd。
例2:如果你使用containerd作为K8S容器运行时的话,由于containerd内置了CRI插件,kubelet可以直接调用containerd。
好处:
使用containerd不仅性能提高了(调用链变短了),而且资源占用也会变小(Docker不是一个纯粹的容器运行时,具有