业务云原生架构、推荐系统以及线上生活等热点方向的高可用高性能业务架构有哪些?点击了解 了解详情
写点什么

CRI-O:面向 Kubernetes 的开源容器运行时

作者:K Jonas

2019 年 6 月 04 日

CRI-O:面向 Kubernetes 的开源容器运行时

4 月 8 日,云原生计算基金会(CNCF)的技术监督委员会(Technical Oversight Committee,TOC)投票接受CRI-O 作为孵化级别的托管项目。CRI-O由 Red Hat 创建,是面向 Kubernetes 的开放容器计划(Open Container Initiative,OCI)的容器运行时,提供了DockerrktMoby的替代方案。


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 中运行容器,所以项目的范围仅限于:


  • 支持多种镜像格式,包括现有的 Docker 镜像格式;

  • 支持多种方式下载镜像,包括信任和镜像验证;

  • 容器镜像管理(管理镜像层、覆盖文件系统等);

  • 容器进程的生命周期管理;

  • 满足 CRI 所需的监控和日志记录;

  • CRI 所需的资源隔离。


CRI-O 运行时利用了开放容器计划(Open Container Initiative),该计划提供了容器配置、文件系统以及执行环境的规范,另外还有镜像配置、文件系统、索引和清单(manifest)的规范。为了管理容器镜像和存储,CRI-O 使用了开源Containers项目containers/imagecontainers/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 支持将runcKata容器作为容器运行时,任何兼容 OCI 的运行时都是可接入的。CRI-O 支持 OCI 容器映像,可以从任何容器注册表中拉取。它的核心贡献者包括 RedHat、Intel、SUSE、Hyper 和 IBM。


关于如何开始使用 CRI-O 和如何进行贡献的更多信息可以参考Github上的CRI-O项目


查看英文原文CRI-O: An Open Source Container Runtime for Kubernetes


2019 年 6 月 04 日 08:008483

评论

发布
暂无评论
发现更多内容

TypeScript魔法堂:函数类型声明其实很复杂

肥仔John

Java typescript

华为云的销售凭什么说“赢”了罗振宇?

ToB行业头条

tob

数据结构与算法系列之链表操作全集(二)(GO)

书旅

go 数据结构 算法

基于React+Koa实现一个h5编辑器

徐小夕

Java nodejs H5 React koa

云图说|知道吗?在和你对话的那头,也许是个机器人哦~

华为云开发者社区

华为 AI 机器人

TensorFlow 篇 | TensorFlow 数据输入的最佳实践

Alex

tensorflow keras input pipeline dataset

接口测试人员需要掌握的知识技能

测试人生路

接口测试

架构师训练营第 1 期 第 5 周作业

李循律

极客大学架构师训练营

一个研发团队是如何坚持7年技术分享的?

PingCode

团队管理 敏捷开发 研发管理 技术分享 程序员节

EDA最强攻略,如何为EDA选择存储?

焱融科技

分布式 高性能 存储 半导体 EDA

Docker底层技术

混沌畅想

Docker 容器 DevOps 底层技术

架构师训练营 1 期第 6 周作业

木头发芽

写文档太麻烦,试试这款 IDEA 插件吧!

程序员小航

Java markdown IDEA idea插件 文档

Forsage矩阵系统开发,智能合约搭建

薇電13242772558

MySQL中事务的持久性实现原理

X先生

MySQL 数据库 sql 数据库事务 事务

面试时说Redis是单线程的,被喷惨了!

云流

redis 编程 程序员 计算机

直播预告 | CloudQuery初体验——安装及多数据源连接

CloudQuery社区

数据库 sql 安全 工具软件 dba

独立显卡市场又一巨头跻入,英特尔锐炬® Xe MAX 独立显卡来了!

商业资讯

架构师训练营第 1 期 第 3 周作业

李循律

极客大学架构师训练营

精解四大集合框架:List核心知识总结

田维常

后端开发

SpringBoot-技术专题-war包部署读取外部配置Properties

李浩宇/Alex

在2020年更受关注和追捧的JS框架

Geek_Willie

react.js Vue js Svelte

试用阿里网盘内测版-不限速、无广告、隐私安全我全都要

郭旭东

阿里云网盘

精解四大集合框架:Queue核心知识总结

田维常

后端开发

当下工作流管理系统的发展趋势

Marilyn

敏捷开发 快速开发 软件架构 企业开发

永续合约系统开发源码,合约跟单软件搭建app

WX13823153201

专利申请其实并不难?四步教你玩转专利申请!

华为云开发者社区

专利 保护

快速掌握并发编程---深入学习ThreadLocal

田维常

合约交易所系统开发技术搭建

薇電13242772558

区块链

SpringBoot-技术专题-war包部署读取外部配置Yml

李浩宇/Alex

精解四大集合框架:Set核心知识总结

田维常

程序员 后端

CRI-O:面向 Kubernetes 的开源容器运行时-InfoQ