K8s为什么要放弃Docker

news/2024/4/24 21:24:26/

公司定期分享整理的资料

放弃始由

在这里插入图片描述
https://github.com/kubernetes/kubernetes/blob/master/CHANGELOG/CHANGELOG-1.20.md#deprecation

2020 年,k8s 1.20 终于正式向 Docker “宣战”:kubelet将弃用 Docker 支持,并将在未来的版本中完全移除。

但由于 Docker 几乎已经成为容器技术的代名词,而且 K8s 已经使用 Docker 多年,该公告在传播时很快“变味了”,“kubelet 将弃用 Docker 支持”被简化为更吸人眼球的东西 “K8s 将弃用”Docker”。这自然引起了 IT 界的恐慌,“不明真相的群众”纷纷表示震惊:用了这么久的 Docker 突然不能用了。

为什么 K8s 会这样对待 Docker?
现有的大量镜像怎么办?

K8s与Docker之间的关系

什么是Docker?

Docker 于 2013 年发布,解决了开发人员在端到端运行容器时遇到的许多问题。下面是他包含的所有东西:
● 容器镜像格式
● 一种构建容器镜像的方法(Dockerfile/docker build);
● 一种管理容器镜像(docker image、docker rm等);
● 一种管理容器实例的方法(docker ps, docker rm 等);
● 一种共享容器镜像的方法(docker push/pull);
● 一种运行容器的方式(docker run);

在这里插入图片描述
Docker各组件之间通讯时序图
containerd,container-shim 组件本质上是runC 和dockerd 间的中间件

什么是OCI和runc?

OCI (Open Container Initiative)

标准包含 运行时标准 和 镜像标准 两个部分,而 OCI 这个组织则是由 Docker, CoreOS 和其他的一些公司共同发起创建的,致力于将容器运行时和格式标准化。即:凡是遵守此标准的实现,无论是 Docker 还是 rkt 或者其他的运行时实现,均可以通过标准的镜像启动容器。

runc

是在 OCI 成立后,Docker 将其容器运行时 libcontainer 贡献出来后,并加以改造而成的,是Docker按照开放容器格式标准(OCF, Open Container Format)制定的一种具体实现。runc 是一个命令行客户端,用于运行根据 Open Container Initiative (OCI) 格式打包的应用程序,并且是 Open Container Initiative 规范的兼容实现。

什么是K8s?

2014 年Google 推出 Kubernetes是用于自动部署、扩展和管理容器化应用程序的开源系统,它旨在提供跨主机集群的自动部署、扩展以及运行应用程序容器的平台。下面是他包含的所有东西
● 可以使用 containerd、cri-o 或其他 CRI 运行时容器、编配器需要完成很多任务。
● 将容器按照高级原语分组 (Pods、ReplicaSets 等)
● 将运行容器的节点连接到一个公共网络中
● 提供服务发现
在这里插入图片描述

什么是CRI?

Container Runtime Interface (CRI)

CRI(容器运行时接口)是 Kubernetes 用来控制创建和管理容器的不同运行时的 API,它使 Kubernetes 更容易使用不同的容器运行时。它一个插件接口,这意味着任何符合该标准实现的容器运行时都可以被 Kubernetes 所使用。
在这里插入图片描述

放弃Docker对K8s有什么好处?

1.Kubernetes 项目增加了对额外运行时的支持

在 Kubernetes 包括一个名为 dockershim 的组件,使它能够支持 Docker。但 Docker 由于比 Kubernetes 更早,并且没有实现 CRI,所以这就是 dockershim 存在的原因,它对docker的支持被硬编码到 Kubernetes 中。随着容器化成为行业标准,比如CRI,Kubernetes 项目增加了对额外运行时的支持,因此 dockershim 成为了 Kubernetes 项目中的一个异类,对 Docker 和 dockershim 的依赖已经渗透到云原生计算基金会(CNCF)生态系统中的各种工具和项目中,导致代码脆弱。那么移除对dockershim对k8s来说好处是巨大的。

在这里插入图片描述

2.直接调用CRI(containerd等)效率更高

在移除dockershim后,会将conatinerd作为默认容器运行时组件,containerd 1.1 版本已经内置了对 CRI 的实现,比直接使用 Docker 的性能要高很多。并且containerd本身是一个来自 Docker 的高级容器运行时,并实现了 CRI 规范。它是从 Docker 项目中分离出来,之后 containerd 被捐赠给云原生计算基金会(CNCF)为容器社区提供创建新容器解决方案的基础。

放弃Docker原有镜像如何转换?

dockershim 从 Kubernetes 1.24 中完全移除。今后 Kubernetes 将取消对 Docker 的直接支持,而倾向于只使用实现其容器运行时接口的容器运行时。这并不意味着 Kubernetes 将不能运行 Docker 格式的容器。containerd 和 CRI-O 都可以运行 Docker 格式(实际上是 OCI 格式)的镜像,它们只是无需使用 docker 命令或 Docker 守护程序。

K8s1.24后如何构建镜像?Dockerfile?

containerd不能像docker那样可以通过docker commit 容器id或者docker build (dockerfile)这样去直接构建镜像。(本地可以同时存在containerd和docker,但ctr不能在本地直接使用docker的镜像),可以使用buildkit工具进行构建,可以参考下面的文档https://blog.csdn.net/weixin_46015264/article/details/126504718

参考文档

http://k.sina.com.cn/article_1746173800_68147f68019013uo8.html
https://www.51cto.com/article/687502.html
https://www.sohu.com/a/243940957_760387
https://blog.csdn.net/Tongsheng_li/article/details/121650176


http://www.ppmy.cn/news/46709.html

相关文章

git使用规范文档

git使用规范文档 Git使用规范流程图 开发人员操作步骤: 第一步:clone代码 在你的本地代码库进行从远程仓库clone代码操作(100%表示clone完成) 进入项目文件,右键Git Bash Here 切换到你所进行开发的分支上 拉取该分…

故障重现, JAVA进程内存不够时突然挂掉模拟

背景,服务器上的一个JAVA服务进程突然挂掉,查看产生了崩溃日志,如下: # Set larger code cache with -XX:ReservedCodeCacheSize # This output file may be truncated or incomplete. # # Out of Memory Error (os_linux.cpp:26…

小红书达人种草怎么收费?

随着小红书平台的快速发展,用户数量在不断的上升,市场上也涌现出了很多的小红书营销公司,小红书营销主要是以小红书代写代发、品牌植入广告等方式来做品牌种草品宣。 小红书达人种草怎么收费这个问题,相信很多商家朋友都非常关心…

Ubuntu18.04 Gitkraken GitCracken

参考资料: ubuntu 安装 Gitkraken 9.x Pro 版本_gitkraken ubuntu CSDN博客【GitCracken】v8.1.1_gitcracken不起作用_等风来不如迎风去的博客-CSDN博客 关键: 材料1:需要使用linux/GitKraken-v8.1.1.tar.gz材料2:需要使用wcxo…

【Linux】 密码相关。pwconv

密码相关。pwconv 在linux中,早期的用户密码(经过加密)存放在/etc/passwd文件之中,但是大多数的应用程序通常都需要读取这个文件,所以会造成一定的安全隐患 因此后来的linux(centos)系统将这个…

第二十三章 弹跳训练

一夜无话。 看着跳廊外静静挂在空中的上弦月,张弦月与下弦月,巴哥奔脑海里浮现出月光下那泛着淡金色光芒的草垛,那绿莹莹黄澄澄的池塘,那紫色拱门,那藏青小球,那逐层凹陷的螺旋状圆盘,那闪着或青…

openpnp - 顶部相机 - 辅助光(环形灯)的电路原理图

文章目录 openpnp - 顶部相机 - 辅助光(环形灯)的电路原理图概述END openpnp - 顶部相机 - 辅助光(环形灯)的电路原理图 概述 同学帮我做的简易灯板设计不太合理, 发热量极大. 想看看商用的环形灯电路啥样的, 如果有可能, 自己做块灯板, 塞进商用环形灯外壳中. 拆解了一个环形…

洛谷题解【入门一】顺序结构

目录 B2002 Hello,World! 题目描述 输入格式 输出格式 输入输出样例 B2025 输出字符菱形 题目描述 输入格式 输出格式 输入输出样例 P1000 超级玛丽游戏 题目背景 题目描述 输入格式 输出格式 输入输出样例 P1001 AB Problem B2005 字符三角形 题目描述 输…

ROS学习——艰辛的环境安装之路一Ubuntu

文章目录 Ubuntu安装和下载页面设置安装Vmware Tools安装VSCODE用几个常用命令简单熟悉下Ubuntu Ubuntu 安装和下载 Ubuntu的安装和下载 看这个链接 Ubuntu安装和下载1 或者这个链接 Ubuntu安装和下载2 页面设置 安装Vmware Tools 看这个链接 VMware Tools的介绍和安装 安…

Qt——Qt控件之按钮-QDialogButtonBox对话框按钮盒子控件的使用总结(例程:自定义按钮)

【系列专栏】:博主结合工作实践输出的,解决实际问题的专栏,朋友们看过来! 《项目案例分享》 《极客DIY开源分享》 《嵌入式通用开发实战》 《C++语言开发基础总结》 《从0到1学习嵌入式Linux开发》 《QT开发实战》 《Android开发实战》

Spimes x5.0主题模板全开源源码/Typecho主题模板

☑️ 品牌:Typecho ☑️ 语言:PHP ☑️ 类型:主题模板 ☑️ 支持:PCWAP 🎉有需要的朋友记得关赞评,底部分享获取!!! 🎉 ✨ 源码介绍 Spimes x5.0主题模板全开…

SQL Server内存架构

2. 内存架构 所谓内存架构,这里是指SQL Server实例内存管理、使用与相关逻辑设计及实现等方面内容。更具体一点,就是讲SQL Server实例分配、管理和使用其内存空间的内部机制。本书1.1节中我们已经讲过,SQL Server实例包括多个内部机制各不相同的内存区域,在此,我们将讲解…

论文 : Multi-Channel EEG Based Emotion Recognition Using TCNBLS

Multi-Channel EEG Based Emotion Recognition Using Temporal Convolutional Network and Broad Learning System 本文设计了一种基于多通道脑电信号的端到端情绪识别模型——时域卷积广义学习系统(TCBLS)。TCBLS以一维脑电信号为输入,自动提取脑电信号的情绪相关…

牛顿法、梯度下降法与拟牛顿法

牛顿法、梯度下降法与拟牛顿法 0 引言1 关于泰勒展开式1.1 原理1.2 例子 2 牛顿法2.1 x 为一维2.2 x 为多维 3 梯度下降法4 拟牛顿法4.1 拟牛顿条件4.2 DFP 算法4.3 BFGS 算法4.4 L-BFGS 算法 0 引言 机器学习中在求解非线性优化问题时,常用的是梯度下降法和拟牛顿…

Python 无监督学习实用指南:6~10

原文:Hands-on unsupervised learning with Python 协议:CC BY-NC-SA 4.0 译者:飞龙 本文来自【ApacheCN 深度学习 译文集】,采用译后编辑(MTPE)流程来尽可能提升效率。 不要担心自己的形象,只关…

量子退火算法入门(7):如何QUBO中的三次多项式怎么转换?

文章目录 前言一、三次多项式的例题二、Python实现1.引入库 总结 前言 本文还是大部分截图来自于:《最適化問題とWildqatを用いた量子アニーリング計算入門》 https://booth.pm/ja/items/1415833 终于有人问到怎么将QUBO中的三次多项式转换为二次多项式了。直接以…

人工智能AI库Spleeter免费人声和背景音乐分离实践(Python3.10)

在视频剪辑工作中,假设我们拿到了一段电影或者电视剧素材,如果直接在剪辑的视频中播放可能会遭遇版权问题,大部分情况需要分离其中的人声和背景音乐,随后替换背景音乐进行二次创作,人工智能AI库Spleeter可以帮我们完成…

HiveQL快速上手

HiveQL 一、CREATE Statements1、CREATE DATABASESyntaxExamples2、CREATE TABLESyntaxExamples3、CREATE VIEWDescriptionSyntaxExamples4、CREATE MARCODescriptionSyntaxExamples5、CREATE FUNCTIONDescription<

电子束与材料相互作用Matlab代码

标题 1 题目2 实验原理2.1 蒙特卡洛模拟的基本思想2.2 电子散射的基本概念 3 代码 1 题目 扫描透射电镜(STEM)的基本原理是用极细的扫描电子束透射样品,透射电子直接被具有一定张角的接收器所接收&#xff0c;透射电流的强度直接反应了样品的质量厚度。 对于一定厚度的样品&am…

Python爬虫自动化从入门到精通第10天(Scrapy框架的基本使用)

Scrapy框架的基本使用 Scrapy框架简介Scrapy框架的运作流程安装Scrapy框架Scrapy框架的基本操作Scrapy常用命令 Scrapy框架简介 Scrapy框架主要包含以下组件&#xff1a; Scrapy Engine(引擎)&#xff1a;负责Spiders、Item Pipeline、Downloader、Scheduler之间的通信&#…