@levinzhang
2019-06-01T07:10:48.000000Z
字数 1672
阅读 623
by
4月8日,云原生计算基金会(CNCF)接受CRI-O作为孵化级别的托管项目。CRI-O由Red Hat创建,是面向Kubernetes的开放容器计划(Open Container Initiative)的容器运行时,提供了替代Docker的方案。
4月8日,云原生计算基金会(CNCF)的技术监督委员会(Technical Oversight Committee,TOC)投票接受CRI-O作为孵化级别的托管项目。CRI-O由Red Hat创建,是面向Kubernetes的开放容器计划(Open Container Initiative,OCI)的容器运行时,提供了Docker、rkt或Moby的替代方案。
CRI-O是专门针对在Kubernetes中运行所设计的,它会交付一个最小化的运行时,该运行时实现了Kubernetes容器运行时接口(Container Runtime Interface,CRI)的标准组件。早期版本的Kubernetes只支持Docker运行时的容器。当Kubernetes团队决定支持新的运行时(比如rkt)的时候,他们决定开发并发布CRI,以便于将Kubernetes与特定的容器运行时解耦。
CRI是一个插件接口,由protocol buffers和gRPC API组成,它允许Kubernetes通过kubelet与任意满足CRI接口的容器运行时进行交互。CRI主要的两个RPC是Image Service和Runtime Service,它们分别规定了如何拉取镜像以及管理容器的生命周期。
CRI-O能够让Kubernetes使用任意兼容OCI的运行时作为运行pod的容器运行时。因为只关注在Kubernetes中运行容器,所以项目的范围仅限于:
CRI-O运行时利用了开放容器计划(Open Container Initiative),该计划提供了容器配置、文件系统以及执行环境的规范,另外还有镜像配置、文件系统、索引和清单(manifest)的规范。为了管理容器镜像和存储,CRI-O使用了开源Containers项目的containers/image和containers/storage,其中包括多个容器工具。这两个容器库用于从镜像注册表中拉取镜像,并将镜像内容存储在容器文件系统中。
CRI-O网络是通过容器网络接口(Container Networking Interface)实现的,该接口是CNCF的另外一个项目,它提供了在Linux容器中配置网络接口的规范和库。容器会被一个内部工具cronmon所监控,它会收集容器日志并记录退出时的编码。
按照CRI-O项目的说法,CRI-O的主要好处是Kubernetes生态系统的稳定性,并承诺通过Kubernetes的测试。 CRI-O为每个Kubernetes发布版本均开发了分支,并与Kubernetes的版本发布和废弃周期保持一致。CRI-O代码库包含针对Kubernetes的端到端测试,该测试在每次pull request时都会运行,并且必须通过才能接受PR。
CRI-O在2016年开始开发,在Kubernetes项目引入CRI之后,在2017年发布了CRI-O 1.0。目前,CRI-O支持将runc和Kata容器作为容器运行时,任何兼容OCI的运行时都是可接入的。CRI-O支持OCI容器映像,可以从任何容器注册表中拉取。它的核心贡献者包括RedHat、Intel、SUSE、Hyper和IBM。
关于如何开始使用CRI-O和如何进行贡献的更多信息可以参考Github上的CRI-O项目。
查看英文原文:CRI-O: An Open Source Container Runtime for Kubernetes