写点什么

Kubernetes 提供了另一种容器运行时

  • 2017-05-09
  • 本文字数:1039 字

    阅读完需:约 3 分钟

传统上, Kubernetes 容器运行时是绑定到 Docker 和 rkt 的。但是在过去数月中,这一情况发生了变化。Kubernetes 发布了自己的容器运行时接口(CRI,Container Runtime Interface)API,同时正在完成一个称为 CRI-O 的实现,力图构建 Kubernetes 和 OCI 兼容运行时之间的桥梁。这为 Kubernetes 以标准方式使用任何 OCI 兼容容器运行时铺平了道路。

Kubernetes 依赖于底层的容器运行时实现生命周期控制,例如 Pull、创建、删除等操作。运行时实现为实际的容器,从操作系统层面管理命名空间隔离和资源分配。早期,Docker 和 rkt 是通过非公开的 API紧密集成到Kubernetes 源代码中的。要添加其它的运行时需要修补源代码,这是非常繁琐的,并且稳定性没有保证。为改进这一问题,在Kubernetes 1.5 中以公开发表测试特性的形式引入了CRI。CRI 提供了将容器运行时插入Kubernetes 系统的通用接口,使用户可以运行kubernetes 去编排并扩展他们的非Docker 和非rkt 架构。运行时也可以是 runv 这样的基于容器的 Hypervisor。

开放容器联盟(OCI,Open Container Initiative)是一个为标准化容器格式和运行时而组建的工业界联盟,它发布了容器运行时标准“ runtime-spec ”。当前该标准的实现包括 runc、 HyperHQ 的 runv 以及一种基于 Intel Clear Containers 的实现。CRI-O 项目是由 Project Atomic / RedHat 所启动的,还包括其它来自工业界的贡献者。它使用 OCI 兼容的运行时实现 Kubernetes CRI API,这意味着任何 OCI 兼容的运行时都可以通过 Kubernetes 的 CRI API 插入到 Kubernetes 中,而不必对每个运行时分别实现一个 CRI 适配器。

当前,Kubernetes 的 CRI 具有如下实现:

图片由 http://blog.kubernetes.io/2016/12/container-runtime-interface-cri-in-kubernetes.html 提供。

在 Kubernetes 部署中,Kubelet(在 Kubernetes 中称为 Minion)是在每台主机上的本地代理,与容器运行时进行通信。使用 CRI 后,Kubelet 可以通过 gRPC(一种开源的 RPC 框架)与 CRI 垫片(Shim)通信,其前端调用实际的运行时。Pod 是 Kubernetes 中的最小部署单元,其概念已经扩展为一个具有类似语义的概念,称为 PodSandbox。对于基于 Hypervisor 的运行时,PodSandbox 可理解成一个虚拟机。对于 Docker 等运行时,PodSandbox 可理解为 Linux 命名空间。

查看英文原文: Alternative Container Runtimes in Kubernetes

2017-05-09 19:002307
用户头像

发布了 227 篇内容, 共 86.5 次阅读, 收获喜欢 28 次。

关注

评论

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

Vue进阶(十七):proxyTable 配置

No Silver Bullet

Vue 8月日更

十大排序算法--计数排序

Ayue、

排序算法 8月日更

千万级学生管理系统试卷存储场景

张文龙

#架构实战营

毕业总结

梦寐凯旋

#架构实战营

模块四作业

king

模块四作业

Geek_35a345

理解 defer、panic 和 recover

Rayjun

Go 语言

python--语句的多样性

加里都好

写作 7 堂课——【3. 碎片式写作】

LeifChen

时间管理 写作技巧 8月日更 碎片化 心流

阿里云-云开发平台计算篇——加强应用本身的计算能力

若尘

阿里云 云开发 8月日更

架构实战训练营模块四作业

NewBranSTONE

架构实战营

软件测试基础面试常问问题

程序员阿沐

面试 软件测试 自动化测试 经验分享 测试工程师

番外3. Python OpenCV 中如何绘制各种图形?

梦想橡皮擦

8月日更

奥运背后的5G赛场,竟然也这么激烈?

白洞计划

Python代码阅读(第6篇):根据给定的函数对列表中的元素进行分组

Felix

Python 编程 Code Programing 阅读代码

golang--切片(slice)

en

slice Go 语言 切片

架构实战营第四周作业——考试试卷存储

发酵的死神

架构实战营

prometheus介绍与安装

Rubble

Prometheus 8月日更

Vue进阶(十九): ES6 箭头函数

No Silver Bullet

Vue 箭头函数 8月日更

模块四作业:千万级试卷结构设计

buoge

架构实战营模块4作业

子豪sirius

架构实战营

【Vue2.x 源码学习】第二十九篇 - diff算法-节点比对| 8月更文挑战

Brave

源码 vue2 8月日更

搜索二维矩阵②

Memorys

Java 面试 算法

printf函数的常用格式化输出

Changing Lin

8月日更

架构实战营模块 4 作业指导

华仔

架构实战营

iOS官方瘦身方案ODR(二):换肤系统改造|践行 On-Demand Resources

LabLawliet

ios 独立开发者 apple 优化技巧 8月日更

架构实战营基于redis哨兵模式的考试数据存储设计

慕溶枫

#架构实战营

🏆【Git 实战专题】你知道git rebase如何让代码提交变得清晰明白吗?

码界西柚

git Rebase git rebase 8月日更

手撸二叉树之二叉树的最大深度

HelloWorld杰少

数据结构与算法 8月日更

kubernetes入门:可视化界面dashboard极简安装教程

小鲍侃java

8月日更

Flutter Android 端 Activity/Fragment 流程源码分析

工匠若水

flutter android 0 基础学习 Flutter 8月日更

Kubernetes提供了另一种容器运行时_DevOps & 平台工程_Hrishikesh Barua_InfoQ精选文章