根据 ZDNet 的消息,近期 CNCF 正式接纳了 CRI-O 为孵化项目,这意味着 CRI-O 或许将直接挑战 Docker 作为顶级容器运行时的地位。
CRI-O(Container Runtime Interface Orchestrator) 是一个轻量级的,专门对 Kubernetes 进行优化的容器运行时环境。CRI 最初是作为 API 来定义对容器运行时的调用,这允许用户开发 Kubernetes 友好的轻量级容器运行时程序。CRI-O 是第一个与 Kubernetes CRI 兼容的容器运行时,由 Google、Red Hat、英特尔、SUSE 和 IBM 联合开发。
几年前,Docker 很受欢迎。要大规模运行容器,你需要一个编排程序。到 2017 年底,Kubernetes 已成为最受欢迎的容器编排器。
当然,你可以在 Kubernetes 之下用 Docker 运行容器。实际上,Docker 仍然是 Kubernetes 的默认容器运行时。但轻量级的 CRI-O 运行时可以更好地通过 API 与 Kubernetes 一起使用。
CRI-O 有如下功能:
存储:github.com/containers/storage 库用于管理层并为 pod 中的容器创建根文件系统:实现 OverlayFS,devicemapper,AUFS 和 btrfs,OverlayFS 作为默认驱动程序。
容器镜像:github.com/containers/image 库用于从注册表中提取图像。 目前,它支持 Docker schema 2 /版本 1 以及 schema 2 /版本 2。它还通过了所有的 Docker 和 Kubernetes 测试。
网络:容器网络接口(CNI)用于为容器设置网络。各种 CNI 插件如 Flannel,Weave,Cilium 和 OpenShift-SDN 已经经过了 CRI-O 的测试,并且能按预期工作。
监控:github.com/containers/conmon 是 CRI-O 中的一个实用程序,用于监控容器,处理来自容器进程的日志记录,为附加客户端提供服务以及检测和报告内存不足的情况。
安全:容器安全分离策略由一系列工具提供,包括 SELinux,Capabilities,seccomp 和 OCI 规范中指定的其他安全分离策略。
CRI-O 已经非常受欢迎了。Kubernetes 联合创始人 Brendan Burns 表示,部分原因是因为 CRI-O 的创始负责人不是在重复造轮子,而是使用共享组件,在生产中测试后改进的方法,以及现有的经过实战检验的代码。因为 CRI- O 是专为 Kubernetes 量身定制的,它针对性能,稳定性,兼容性和其他标准,特别是 Kubernetes 一致性测试,进行了调整。CRI-O 是 Kubernetes 集群的构建块,可以根据需要促进容器的生命周期。
这是否意味着 CRI-O 将取代 Docker? 是的,但也不是。
正如 Red Hat 高级工程师和 CRI-O 维护者 Antonio Murdaca 所解释的那样,“CRI-O 是否会取代 Docker?并不会,或者说,它是一个以 Kubernetes 为中心的运行时,因此它在 Kubernetes 的背景下取代了 Docker。但是 Docker 作为我们习惯的开发工具,CRI-O 是没有办法取代的,因为它没有实现 Docker Engine API 或 Docker CLI。这意味着你不能使用 Docker CLI 与 CRI-O 守护进程通信。你必须经过 Kubernetes 才能实现通信。“
CRI-O 仍然会给 Docker 带来竞争。正如 CNCF 首席技术官 Chris Aniszczyk 所写,“CNCF 拥有各种容器运行时,我们很高兴 CRI-O 加入它们进行孵化。选择和竞争将使最终用户受益。”
评论