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

传统上,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具有如下实现:

CRI-O:符合OCI的运行时; rktlet:rkt容器运行时; Frakti:一种基于Hypervisor的容器运行时; Docker CRI shim:支持Docker直接充当CRI适配器。

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

本文转自d1net(转载)

时间: 2024-08-05 04:01:11

Kubernetes提供了另一种容器运行时的相关文章

Linux容器运行时Docker开源

Linux容器运行时Docker开源 发表于2013-03-28 10:22| 次阅读| 来源CSDN| 0 条评论| 作者张红月 开源LinuxDocker 摘要:Docker是一个http://www.aliyun.com/zixun/aggregation/13423.html">云计算平台,它利用Linux的LXC.AUFU.Go语言.cgroup实现了资源的独立,可以很 轻松的实现文件.资源.网络等隔离,其最终的目标是实现类似PaaS平台的应用隔离. Docker是一个功能强大的

容器、Docker与Kubernetes——什么是Kubernetes以及它是如何使得容器化基础设施变得简单

本文讲的是容器.Docker与Kubernetes--什么是Kubernetes以及它是如何使得容器化基础设施变得简单[编者的话]本文是系列文章第2篇,主要介绍Kubernetes. 在本系列文章的第一篇中我阐述了从基础设施的容器化角度阐述了什么是容器,什么是Docker以及它们是怎么来重新定义运维工作以及对基础设施产生的影响.但是,仅仅了解了容器与Docker还不足以将它们运用到我们实际的技术栈中去:所以在本篇文章中我会介绍Kubernetes--一个容器的编排(orchestration)工

三种容器网络方案

本文讲的是三种容器网络方案[编者的话]本文是TheNewStack容器电子书的一部分,着重介绍了容器的网络互联方案.有兴趣的同学可以关注下电子书. 任何云端部署容器的关键之一是管理容器间的网络.在研究编写我们最新的电子书<Networking, Security & Storage with Docker & Containers>期间,我们总结了三种通过插件集成容器网络的方式.前一篇文章中,我们介绍了容器网络模型(CNM)和容器网络接口(CNI),这篇文章中我们会介绍它们的起

遍历-如何读取一个大文件夹中全部xml文件。将其路径放入哪种容器

问题描述 如何读取一个大文件夹中全部xml文件.将其路径放入哪种容器 现在在一个大的文件夹中,包含了若干个子文件夹,每个文件夹可能包含N个xml,txt等其他文件.现在想通过遍历把这个大的文件夹中所有的xml文件保存到一个容器中.1.请问用什么容器比较好vector?2.最好能来个详细的例子 让鄙人学习下 解决方案 你这种方法用递归比较好,至于容器,你说的是将找到的文件的路径存放起来吧.那个就随便都可以.用List吧. public void findFileByEndStr(String di

面向云服务提供商的一种架构

本文讲的是面向云服务提供商的一种架构,[IT168 资讯]面向云服务提供商市场的交付基础架构 思杰云中心(C3)是面向云服务提供商市场推出的思杰交付基础架构产品组合.C3整合了经云验证的虚拟化产品和网络产品,可支持当今大多数大型互联网和Web服务提供商的业务运作.采用这一独特的产品组合,下一代云提供商可以充分利用部署最为广泛的.面向托管云业务的虚拟基础架构平台以及经实践检验的基础架构将业务可靠地.安全地交付给云客户和企业数据中心. 云计算时代 正如分布式计算替代主机时代成为时代主流,云计算将会成

大型Web应用运行时 PHP负载均衡指南

过去当运行一个大的web应用时候意味着需要运行一个大型的web服务器.因为你的应用吸引了大量的用户,你将不得不在你的服务器里增加更多的内存和处理器.今天,"大型服务器"模式已经过去,取而代之的是大量的小服务器,使用各种各样的负载均衡技术. "更多小服务器"的优势超过过去的"大型服务器"模式体现在两个方面: 1. 如果服务器宕机,那么负载均衡系统将停止请求到宕机的服务器,转而分发负载到其他正常运行的服务器上. 2. 扩展你的服务器更加容易.你要做的

.NET基础知识-公共语言运行时

   .NET提供了一个运行环境,叫做公共语言运行时(CLR).CLR管理代码的执行并使开发过程变得更加简单.CLR是一种受控的执行环境,其功能通过编译器与其他工具共同展现.以"运行时"为目标的代码称为受控代码(Managed Code).受控代码指向的对象在执行过程中完全被CLR所控制.在执行过程中,CLR提供自动内存管理.调试支持.增强的安全性及与受控代码(如COM组件)的互操作性.凡是符合CLS(公共语言规范)的程序语言(如C#和Visual Basic.NET等)所开发的程序都

使用并发与协调运行时

介绍 并发与协调运行时(Concurrency and Coordination Runtime,CCR)是一个.NET平台 上的异步信息传递类库,提供了一套细小而强大的基础功能,能够使用不同的方式来组织 应用程序.应用程序通过有效使用CCR可以获得更好的响应能力,以及更好的伸缩性及容 错性.而它最神奇的地方则在于,开发人员获得这些便利的同时,还减少(甚至完全消除 )了对线程.锁.互斥体(mutex)或其他同步元素的直接操作(或捕获错误). 如果您的应用程序是单线程的,CCR可以使您的程序提高响

[译] 在你沉迷于包的海洋之前,还是了解一下运行时 Node.js 的本身

本文讲的是[译] 在你沉迷于包的海洋之前,还是了解一下运行时 Node.js 的本身, 原文地址:Before you bury yourself in packages, learn the Node.js runtime itself 原文作者:该文章已获得作者 Samer Buna 授权 译文出自:掘金翻译计划 译者:fghpdf 校对者:rccoder,reid3290 在你沉迷于包的海洋之前,还是了解一下运行时 Node.js 的本身 这篇文章将挑战你 Node.js 的知识极限. 我