Mirantis及时现身,接过Kubernetes dockershim支持大旗

标签: mirantis kubernetes dockershim | 发表时间:2020-12-05 14:32 | 作者:翔宇
出处:http://weekly.dockone.io

关于dockershim即将灭亡的传言无疑存在严重夸大。如果一直有关注Kubernetes生态系统,很多朋友一时之间可能确实被Kubernetes 1.20版本的发布公告弄得有点不知所措。从公告内容来看,自1.20版本开始dockershim将被全面弃用。但请不要恐慌,调整呼吸,一切都会好起来。

更重要的是,Mirantis现已同意与Docker开展合作,在Kubernetes之外独立维护shim代码并将其作为Docker Engine API的统一CRI接口。对于Mirantis客户而言,这意味着Docker Engine的商业支持版本Mirantis Container Runtime(MCR)也将提供CRI兼容能力。我们将从 https://github.com/dims/cri-dockerd上的Dims原型方案起步,并逐步将其转化为开源项目 https://github.com/Mirantis/cri-dockerd。换句话说,你可以像之前一样继续基于Docker Engine构建Kubernetes,唯一的区别就是dockershim由内置方案变成了外部方案。我们将共同努力,保证它在保持原有功能的同时,顺利通过各类一致性测试并提供与此前内置版本相同的使用体验。Mirantis将在Mirantis Kubernetes Engine中使用dockershim,Docker方面也将在Docker Desktop中继续提供dockershim。

从头说起……

用过Kubernetes的朋友都清楚,它的最大作用就是编排各类容器。对不少用户来说,容器已经与Docker完全统一了起来。但这种说法并不准确,Docker本身只是彻底改变了容器技术并将其推向了通用舞台,因此Docker Engine也成为Kubernetes所支持的第一种(也是最初唯一一种)容器运行时。

但Kubernetes社区并不打算长期保持这样的状态。

从长远来看,社区希望能够使用多种不同类型的容器,因此参与者们创建了容器运行时接口(CRI),也就是容器引擎与Kubernetes间进行通信的标准方式。如果容器引擎与CRI相兼容,即可轻松在Kubernetes当中运行。

第一款兼容CRI的容器引擎是containerd,而它来自……好吧,还是来自Docker。很明显,Docker本身不仅仅是一种容器运行时,而且提供可供其他用户消费的种种部件,甚至包括用户界面。因此,Docker提取出与容器实际相关的部分,并将其调整为第一种与CRI兼容的运行时,而后把它捐赠给了云原生计算基金会(CNCF)。由此衍生出的cri-containerd组件具有运行时中立特性,而且能够支持多种Linux与Windows操作系统。

但这还留下最后一个问题——Docker本身仍然不兼容CRI。

Dockershim是什么?

正如Kubernetes最初对Docker Engine提供内置支持一样,其中同样包含对各类存储卷解决方案、网络解决方案甚至是云服务商的内置支持。但要不断维护这些支持功能实在是太过麻烦,因此社区决定将所有第三方解决方案从核心中剥离出来并创建相关接口,例如:
  • 容器运行时接口(CRI)
  • 容器网络接口(CNI)
  • 容器存储接口(CSI)


其中的基本思路在于,只要兼容这些接口,那么任何供应商都可以创建出能自动与Kubernetes相对接的产品。

当然,这绝不是说不兼容的组件就没办法与Kubernetes配合使用;Kubernetes可以使用正确的组件完成各类协同。换言之,不兼容的组件仅仅需要加上个“shim(意为垫片)”,由其在组件与相应的Kubernetes接口之间完成转换,即可轻松解决问题。例如,dockershim会接收CRI命令并将其转换为Docker Engine能够理解的内容,反之亦然。但在第三方组件被从Kubernetes核心内剥离的背景之下,dockershim自身也需要逐步退出。

虽然听起来好像事情不小,但实际上没那么严重。大家使用docker build构建起的CRI兼容型镜像,未来仍然可以与Kubernetes正常配套使用。

Kubernetes放弃对dockershim的支持,会带来哪些影响?

对大多数人来说,弃用dockershim其实半点影响也没有。这是因为大部分用户既意识不到dockershim的存在,实际上使用的也不是Docker本体;相反,他们使用的是与CRI相兼容的containerd。

当然,也有一部分用户(包括Mirantis的客户)在运行依赖于dockershim的工作负载,借此与Kubernetes实现无缝协作。

考虑到dockershim仍然是不少企业难以割舍的重要组件,Mirantis与Docker达成协议,继续支持并开发dockershim。只不过这一次,dockershim将以独立开源组件的身份存在。

那么,这到底意味着什么?

简单来讲,如果你直接使用containerd,则不必抱有任何担心;因为containerd能够与CRI相兼容。如果你身为Mirantis的客户,同样不用担心;因为Mirantis容器运行时将包含对dockershim的支持,确保其与CRI相兼容。

但如果你使用的是开源Docker Engine,则dockershim项目将以开源组件的形式提供,您可以继续在Kubernetes上正常使用;唯一的区别就是需要对配置做出少量修改,具体请参见我们后续发布的说明文档。

所以,请大家不必惊异。Docker还在,dockershim还在,一切如常。

原文链接: Mirantis to take over support of Kubernetes dockershim

相关 [mirantis kubernetes dockershim] 推荐:

Mirantis及时现身,接过Kubernetes dockershim支持大旗

- - DockOne.io
关于dockershim即将灭亡的传言无疑存在严重夸大. 如果一直有关注Kubernetes生态系统,很多朋友一时之间可能确实被Kubernetes 1.20版本的发布公告弄得有点不知所措. 从公告内容来看,自1.20版本开始dockershim将被全面弃用. 但请不要恐慌,调整呼吸,一切都会好起来.

Kubernetes & Microservice

- - 午夜咖啡
这是前一段时间在一个微服务的 meetup 上的分享,整理成文章发布出来. 谈微服务之前,先澄清一下概念. 微服务这个词的准确定义很难,不同的人有不同的人的看法. 比如一个朋友是『微服务原教旨主义者』,坚持微服务一定是无状态的 http API 服务,其他的都是『邪魔歪道』,它和 SOA,RPC,分布式系统之间有明显的分界.

Kubernetes学习(Kubernetes踩坑记)

- - Z.S.K.'s Records
记录在使用Kubernetes中遇到的各种问题及解决方案, 好记性不如烂笔头. prometheus提示 /metrics/resource/v1alpha1 404. 原因: 这是因为[/metrics/resource/v1alpha1]是在v1.14中才新增的特性,而当前kubelet版本为1.13.

kubernetes移除Docker?

- -
两周前,Kubernetes在其最新的Changelog中宣布1.20之后将要弃用dockershime,也就说Kubernetes将不再使用Docker做为其容器运行时. 这一消息持续发酵,掀起了不小的波澜,毕竟Kubernetes+Docker的经典组合是被市场所认可的,大量企业都在使用. 看上去这个“弃用”的决定有点无厘头,那么为什么Kubernetes会做出这样的决定.

Kubernetes 完全教程

- - 午夜咖啡
经过一个阶段的准备,视频版本的 《Kubernetes 完全教程》出炉了. 课程一共分为七节,另外有一节 Docker 预备课,每节课大约一个多小时. 目标是让从没接触过 Kubernetes 的同学也能通过这个课程掌握 Kubernetes. 为什么要学习 Kubernetes. 在介绍课程之前,先说说为什么要学习 Kubernetes 以及什么人需要学习 Kubernetes.

Kubernetes 监控详解

- - DockOne.io
【编者的话】监控 Kubernetes 并不是件容易的事. 本文介绍了监控 Kubernetes 的难点、用例以及有关工具,希望可以帮助大家进一步了解监控 Kubernetes. 如果想要监控 Kubernetes,包括基础架构平台和正在运行的工作负载,传统的监控工具和流程可能还不够用. 就目前而言,监控 Kubernetes 并不是件容易的事.

Kubernetes 切换到 Containerd

- - bleem
由于 Kubernetes 新版本 Service 实现切换到 IPVS,所以需要确保内核加载了 IPVS modules;以下命令将设置系统启动自动加载 IPVS 相关模块,执行完成后需要重启. 重启完成后务必检查相关 module 加载以及内核参数设置:. 1.2、安装 Containerd. Containerd 在 Ubuntu 20 中已经在默认官方仓库中包含,所以只需要 apt 安装即可:.

Spring Cloud Kubernetes指南

- -
当我们构建微服务解决方案时,SpringCloud和Kubernetes都是最佳解决方案,因为它们为解决最常见的挑战提供组件. 但是,如果我们决定选择Kubernetes作为我们的解决方案的主要容器管理器和部署平台,我们仍然可以主要通过SpringCloudKubernetes项目使用SpringCloud的有趣特性.

喜大普奔:Spark on kubernetes

- - Zlatan Eevee
两个星期前(08/15/2017),spark社区提了一个新的SPIP(Spark Project Improvement Proposals): Spark on Kubernetes: Kubernetes as A Native Cluster Manager,即用k8s管理spark集群. 经过社区2个星期的投票,看上去很快要能合入了.

Kubernetes 日志收集方案

- - IT瘾-dev
Kubernetes 中的基本日志. Kubernetes 日志收集. 以 sidecar 容器收集日志. 用 sidecar 容器重新输出日志. 使用 sidecar 运行日志采集 agent. 前面的课程中和大家一起学习了 Kubernetes 集群中监控系统的搭建,除了对集群的监控报警之外,还有一项运维工作是非常重要的,那就是日志的收集.