关于Kubernetes不兼容Docker

本博客地址:https://security.blog.csdn.net/article/details/129153459
参考文献:https://www.cnblogs.com/1234roro/p/16892031.html

一、总结

总结起来就是一句话:

k8s只是弃用了dockershim,并不是弃用了整个Docker(这里指容器),即不再支持让docker去调用containerd,而是直接操作containerd

具体可以溯源一下功能链,就很清晰了:

1、dockershim的作用是把外部收到的请求转化成docker daemon能听懂的请求,让docker daemon执行相关的容器操作;
2、docker daemon是Docker的守护进程,是docker engine中真正处理事务的部分,它的主要功能包括镜像管理、镜像构建、REST API、身份验证、安全、核心网络以及编排;
3、docker daemon捐献给CNCF后,就形成了containerd,而Kubernetes也是CNCF项目,因此它们的标准是一样的(CRI标准);
4、所以对于容器的运行,就变成了Kubernetes直接调用containerd,相较此前本质上没有任何变化,只是去掉了一条复杂的调用链而已。

如下图所示:

在这里插入图片描述

二、历史

2016年,k8s发布了1.0版本,该版本可以正式用于生产环境,同年,k8s加入CNCF基金会;

2016年,k8s发布了1.5版本,引入了新的接口标准CRI,CRI规定k8s该如何调用容器运行时去管理容器和镜像,同时为了兼容docker(因为它用户量太庞大了),产生了转换适配组件(dockershim);

2017年,Docker将docker engine拆分,将其中的docker daemon部分捐献给了CNCF基金会,形成了containerd;

2018年,containerd发布了1.1版本,正式支持CRI标准,与k8s实现集成(此时k8s是1.10版本),此时k8s可直接调用containerd;

2020年,k8s宣布将弃用对Docker的支持(此时k8s是1.20版本),未来将删除dockershim;

2022年,k8s发布了1.24版本,正式剔除dockershim;

至此,弃用对于Kubernetes和Docker来说都不会有什么太大的影响,因为他们两个都早已经把下层都改成了开源的containerd,原来的Docker镜像和容器仍然会正常运行,唯一的变化就是Kubernetes绕过了Docker,直接调用Docker内部的containerd而已。

具体关系参考下图:

在这里插入图片描述

  • 4
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

武天旭

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值