CRI-O是由Red Hat推出的一款容器运行时,旨在提供一种在OCI一致的运行时和Kubelet之间的集成方式。在文章后半部分我们将会进一步对比containerd和CRI-O的性能,为您在选择容器运行时的时候提供参考。
CRI-O:https://github.com/cri-o/cri-o
2、我仍然可以在Kubernetes 1.20中使用Docker吗?
是的,如果使用Docker作为运行时,在1.20中只会在Kubelet启动时打印一个警告日志。Kubernetes最早将在2021年末发布1.23版本中将dockershim移除。
3、我现有的Docker镜像仍然可以使用吗?
仍然可以使用。Docker生成的镜像实际上并不是特定于Docker的镜像,而是OCI(Open Container Initiative)镜像。无论你使用什么工具构建镜像,任何符合OCI标准的镜像在Kubernetes看来都是一样的。containerd和CRI-O都能够提取这些镜像并运行它们。所以您可以仍然使用Docker来构建容器镜像,并且可以继续在containerd和CRI-O上使用。
4、我应该使用哪个CRI实现?
这是一个比较复杂的问题,它取决于许多因素。如果您之前熟练使用Docker,那么迁移到containerd应该是一个相对容易的选择,并且containerd具有更好的性能和更低的成本。当然,您也可以探索CNCF领域中的其他项目,来选择更适合您的环境。
来源:https://kubernetes.io/blog/202 … i-use
eBay对containerd和CRI-O进行了一组性能测试,包括创建、启动、停止和删除容器,以比较它们所耗的时间。如图所示,containerd在各个方面都表现良好,除了启动容器这项。从总用时来看,containerd的用时比cri-o要短。