本文转自Rancher Labs

近期,Kubernetes在其最新的Changelog中宣布,自Kubernetes 1.20之后将弃用Docker作为容器运行时。这一消息在云原生领域激起了不小的水花,在Rancher技术社区里许多小伙伴也对此进行了激烈的讨论。

Kubernetes为什么选择弃用Docker呢?我们需要先简单了解Dockershim。它是一个桥接服务,帮助Kubernetes与Docker进行通信,Kubelet 之前使用 dockershim 实现对 Docker 的 CRI 支持(Docker本身目前尚未实现CRI)。但时至今日,维护Dockershim已成为运维/开发人员的沉重负担。因此Kubernetes社区建议大家考虑使用包含 CRI 完整实现(兼容 v1alpha1 或 v1)的可用容器运行时。从而取消了对Docker作为容器运行时的支持。

不过大家不必过分担心,近期从Rancher社区里面搜集了一些大家比较关注的问题,下面一一为大家解答:

1、Kubernetes Kubelet 弃用了Docker作为容器运行时,有代替方案吗?

在Kubernetes集群中,容器运行时负责提取和运行容器镜像。Docker只是被普遍使用的容器运行时,在Docker被弃用之后,我们还有两个常见的选项:containerd 和 CRI-O。

Containerd 是一个工业级标准的容器运行时,它极为简单、健壮并且具备可移植性。Containerd 可以在宿主机中管理完整的容器生命周期。这是一个100%开源的软件,已于去年2月份从CNCF毕业。

去年年初,Rancher推出的轻量级Kubernetes发行版K3s已经使用containerd作为默认容器运行时。

containerd:https://github.com/containerd/containerd/

CRI-O是由Red Hat推出的一款容器运行时,旨在提供一种在OCI一致的运行时和Kubelet之间的集成方式。在文章后半部分我们将会进一步对比containerd和CRI-O的性能,为您在选择容器运行时的时候提供参考。

CRI-O:https://github.com/cri-o/cri-o

2、我仍然可以在Kubernetes 1.20中使用Docker吗?

是的,如果使用Docker作为运行时,在1.20中只会在Kubelet启动时打印一个警告日志。Kubernetes最早将在2021年末发布1.23版本中将dockershim移除。

3、我现有的Docker镜像仍然可以使用吗?

仍然可以使用。Docker生成的镜像实际上并不是特定于Docker的镜像,而是OCI(Open Container Initiative)镜像。无论你使用什么工具构建镜像,任何符合OCI标准的镜像在Kubernetes看来都是一样的。containerd和CRI-O都能够提取这些镜像并运行它们。所以您可以仍然使用Docker来构建容器镜像,并且可以继续在containerd和CRI-O上使用。

4、我应该使用哪个CRI实现?

这是一个比较复杂的问题,它取决于许多因素。如果您之前熟练使用Docker,那么迁移到containerd应该是一个相对容易的选择,并且containerd具有更好的性能和更低的成本。当然,您也可以探索CNCF领域中的其他项目,来选择更适合您的环境。

来源:https://kubernetes.io/blog/2020/12/02/dockershim-faq/#which-cri-implementation-should-i-use

eBay对containerd和CRI-O进行了一组性能测试,包括创建、启动、停止和删除容器,以比较它们所耗的时间。如图所示,containerd在各个方面都表现良好,除了启动容器这项。从总用时来看,containerd的用时比cri-o要短。

以下数据来自eBay的分享:

containerd和cri-o的性能比较


containerd和cri-o的综合比较

Rancher,阿里云,AWS, Google,IBM和Microsoft作为初始成员,共同建设 containerd 社区。2017年3月,Docker 将 containerd 捐献给CNCF(云原生计算基金会)。containerd得到了快速的发展和广泛的支持。Docker引擎已经将containerd作为容器生命周期管理的基础,Kubernetes也在2018年5月,正式支持containerd作为容器运行时管理器。2019年2月,CNCF宣布containerd毕业,成为生产可用的项目,更加稳定。

5、Rancher 对 Containerd 的支持

Rancher 在轻量级Kubernetes发行版 K3s和 RKE2(2020年10月推出)中早已将 containerd 作为默认的容器运行时。相信在 Rancher 2.x 支持 Kubernetes 1.20+ 之后会将这些宝贵经验运用到新版本的Rancher 2.x 迭代中。

其实Kubernetes弃用Docker这一决定已经酝酿很长时间了,可能对于没有密切关注这个方面的工程师来说有些措手不及。但其实无需特别担心:如果你是Kubernetes的终端用户,这仅仅是一个后端容器运行时的更改,从使用方面来说几乎感觉不到区别;如果你是一名开发/运维人员,你依旧可以继续使用Docker来构建镜像,以相同的方式将镜像推送到Registry,并且将这些镜像部署到你的Kubernetes中;如果你是运行和操作集群的用户,你只需要将Docker切换成你需要的容器运行时即可。

Kubernetes弃用Docker后怎么办?相关推荐

  1. Kubernetes弃用Docker?关于Kubernetes、Docker和containerd的那些事

    00 前情提要 作为后端研发工程师,之前的工作中还是涉及到一部分K8S的工作.在当时的工作场景下,我们通过使用Kubernetes(简称k8s)+docker编排部署的架构方案来提供云原生的在线服务. ...

  2. 不讲武德,Kubernetes 弃用 Docker刷爆了网络,我们公司也慌了!

    点击上方"芋道源码",选择"设为星标" 管她前浪,还是后浪? 能浪的浪,才是好浪! 每天 8:55 更新文章,每天掉亿点点头发... 源码精品专栏 原创 | J ...

  3. Kubernetes 弃用 Docker !

    多年间,Docker.Kubernetes 被视为云计算时代下开发者的左膀右臂. Docker 作为一种开源的应用容器引擎,开发者可以打包他们的应用及依赖到一个可移植的容器中,发布到流行的 Linux ...

  4. 重磅,Kubernetes 决定弃用 Docker!

    点击上方 好好学java ,选择 星标 公众号 重磅资讯.干货,第一时间送达 今日推荐:硬刚一周,3W字总结,一年的经验告诉你如何准备校招! 个人原创100W+访问量博客:点击前往,查看更多 作者 | ...

  5. Kubernetes中部署Docker registry2.7.1并通过containerd实现拉取镜像到应用Pod的部署

    这里主要介绍一下私有仓库(HTTPS)在Kubernetes中部署的问题,由于Kubernetes将弃用docker,因此这里主要介绍以下使用containerd替换docker后如何从私有仓库拉取镜 ...

  6. kubernetes (k8s) 与 Docker 关系

    kubernetes (k8s) 与 Docker 关系 简要介绍 Docker就像飞机,而Kubernetes就像飞机场. Docker: 是一个开源的应用容器引擎,开发者可以打包他们的应用及依赖到 ...

  7. K8s 为什么要弃用 Docker?

    在写"K8s"系列文章的过程中,很多读者留言询问 K8s 弃用 Docker 的事,担心现在学习 Docker 是否还值得,是不是该切换到 containerd 或其他运行时. 这 ...

  8. K8S Runtime CRI OCI contained dockershim 理解 1.23弃用docker - 含docker containerd通用工具 nerdctl

    一 实践 contained实用管理工具 http://www.ciscoedu.com.cn/details/id/252.html containerd的默认命令行工具(crictl)也不是很好用 ...

  9. 容器编排技术 -- Kubernetes kubectl 与 Docker 命令关系

    容器编排技术 -- Kubernetes kubectl 与 Docker 命令关系 1 docker run 2 docker ps 3 docker attach 4 docker exec 5  ...

最新文章

  1. android获取卡号号码,Android银行卡扫描获取银行卡号
  2. python将大于输出列表_python找出列表中大于某个阈值的数据段示例
  3. c语言格式化字符漏洞,格式化字符串漏洞题目练习
  4. 图论--网络流--最大流 洛谷P4722(hlpp)
  5. usb接口定义引脚说明_PerfDogService使用说明
  6. w10自动删除文件怎么关了_清理win10系统垃圾方法,自动更新文件删除介绍
  7. oracle 监听报错,Oracle EBS系统数据库监听报错TNS-12547、TNS-12560和TNS-00517解决方法...
  8. Keras——用Keras搭建分类神经网络
  9. android alphaanimation xml,android AlphaAnimation动画代码实现与XML实现
  10. eclipse 改java版本_修改eclipse工程jdk版本
  11. 微型计算机原理 考试试题,微机原理期末考试试题及答案
  12. 微信小程序的布局css样式
  13. 应用随机过程——张波
  14. 中标麒麟系统成功安装英伟达显卡驱动程序记
  15. java实现阿里云图片文字识别
  16. Virtualbox上openSUSE 15.2 Leap安装guest additions
  17. PCB:Beyond Part Models: Person Retrieval with Refined Part Pooling(论文阅读笔记)
  18. SSS1540TypeC转3.5mm线控耳机方案(带按键)参考电路图
  19. centos tcpdump
  20. 玩一玩Android下载框架

热门文章

  1. 盛世昊通2022全新布局,九大生态板块赋能产业数字化
  2. 电动汽车简化设计,“减重瘦身”不再难
  3. 伊藤清|概率论大师的“哲学”指引
  4. 微信小程序导入云开发数据库表报错问题解决
  5. 一、简单工厂模式(simple factory method)
  6. u盘中毒,文件夹不见了的解决方法
  7. 关于ros提到的那只turtle
  8. 通过小程序和微信社群来构建产品运营体系
  9. java 线程ping pong_面试题。线程pingpong的输出问题
  10. VS连接Linux服务器