为什么k8s不支持docker-kubernetes
为什么Kubernetes不再支持Docker?
在Kubernetes 1.20版本之后,Kubernetes宣布逐步停止对Docker作为容器运行时的支持。这一改变在容器管理领域引起了广泛关注。许多人不禁疑惑:Kubernetes与Docker一向密切合作,为何会做出这样的决定?本文将深入解析Kubernetes与Docker之间的关系变化,探讨这一转变背后的原因,以及对用户和开发者的影响。

1. Kubernetes和Docker的关系:从合作到转变
Kubernetes最初在设计时,是为了协调管理Docker容器,提供了自动化的容器调度和集群管理能力。然而,Docker本身不仅仅是一个容器运行时,它还包括开发工具和镜像管理功能。Kubernetes使用Docker作为运行时,需要依赖一个称为Dockershim的适配层,以实现与Docker的通信。Dockershim是一个中间层,负责将Kubernetes的指令转换为Docker能够理解的格式,并通过Docker来启动和管理容器。
然而,Dockershim带来的架构复杂性和维护成本逐渐成为Kubernetes发展的负担。Kubernetes社区长期以来都计划去除这个额外的中间层,并转向使用更符合Kubernetes标准的运行时接口(Container Runtime Interface, CRI)。
2. 容器运行时接口(CRI):简化运行时管理
为了让Kubernetes支持多种容器运行时,社区在Kubernetes 1.5版本引入了CRI标准。CRI是一组标准化接口,旨在让Kubernetes的核心组件Kubelet能够与任何支持CRI的容器运行时进行通信。通过CRI,Kubernetes可以与如containerd和CRI-O这样的轻量级运行时直接集成,避免了像Dockershim这样的额外适配层。
Docker并未原生支持CRI,因此,Kubernetes团队需要通过维护Dockershim来使Docker运行时与Kubernetes兼容。然而,随着containerd等CRI兼容运行时逐渐成熟且稳定,Kubernetes社区决定不再继续维护Dockershim,这样可以简化Kubernetes的代码库,提升系统的效率和稳定性。
3. Docker被弃用的技术原因
-
架构简化与性能优化:Docker是一个全面的容器管理工具,不仅包括容器运行时,还包括开发、构建、镜像管理等功能。然而,对于Kubernetes而言,只需要一个负责运行容器的基础组件,因此Docker显得过于复杂。通过直接使用containerd等轻量化的CRI兼容运行时,Kubernetes可以减少系统层级间的额外消耗和复杂性。
-
减少维护负担:维护Dockershim需要额外的人力和代码管理。随着社区对CRI标准的完善,使用专门为Kubernetes设计的运行时(如containerd和CRI-O)可以减少维护复杂性,提高系统的兼容性和稳定性。
4. 这对用户的影响:Docker镜像依然可用
值得注意的是,Kubernetes停止支持Docker作为运行时,并不意味着完全放弃Docker。Docker依然在容器开发和镜像构建中发挥着重要作用,用户仍然可以使用Docker镜像来构建应用程序,并将这些镜像部署在Kubernetes集群上。Kubernetes只是建议在生产环境中使用更轻量化的容器运行时。
对于已经在使用Docker作为运行时的Kubernetes用户,Kubernetes在1.20版本发布后提供了过渡期,给开发者足够的时间迁移到containerd或CRI-O等其他运行时。在1.22版本之后,Dockershim被完全移除,用户必须确保使用的运行时符合CRI标准。
5. 未来的发展趋势:从Docker到容器生态的多样化
Kubernetes逐步脱离对Docker的依赖,标志着容器生态系统的成熟与多样化。通过CRI接口,Kubernetes为不同类型的运行时提供了统一的标准,使得用户可以根据自己的需求选择最合适的运行时,如:
- containerd:由Docker公司开发,但专注于容器运行时部分,与Kubernetes深度集成,成为大多数Kubernetes发行版的默认选择。
- CRI-O:由Red Hat开发的轻量级容器运行时,专为Kubernetes设计,支持OCI(开放容器标准)。
这些替代方案在提供类似Docker的基础功能的同时,也更加符合Kubernetes对容器管理的需求。
结论:Docker在Kubernetes中的角色转变
Kubernetes不再支持Docker作为容器运行时,是为了简化架构、提升性能,并适应现代化容器管理需求的结果。这一变化并不意味着Docker将退出容器生态,而是Docker从直接的运行时角色转向了容器开发和构建工具的角色。用户可以继续使用Docker构建应用程序镜像,同时在Kubernetes中使用更加轻量化的运行时来管理容器集群。对于开发者和运维团队而言,理解这一转变,选择合适的运行时,是确保系统稳定和高效运行的关键。
这一转变标志着容器技术的进一步成熟,也为Kubernetes用户提供了更丰富的选择。随着containerd、CRI-O等新兴容器运行时的崛起,Kubernetes的生态将继续向着更灵活、更高效的方向发展。
更多了解:
Kubernetes与Docker对比如何选择
为何很多公司不用k8s-kubernetes详解
相关文章:
为什么k8s不支持docker-kubernetes
为什么Kubernetes不再支持Docker? 在Kubernetes 1.20版本之后,Kubernetes宣布逐步停止对Docker作为容器运行时的支持。这一改变在容器管理领域引起了广泛关注。许多人不禁疑惑:Kubernetes与Docker一向密切合作,为何会做出这样的决…...
数据结构编程实践20讲(Python版)—17散列
本文目录 17 散列(Hashing)S1 说明特点应用领域S2 示例:字符串哈希S2 示例:文件、图片哈希S3 应用1:食品安全追溯S4 应用2:在线内容版权保护S5 应用3:社交媒体内容审核往期链接 01 数组02 链表03 栈04 队列05 二叉树06 二叉搜索树07 AVL树08 红黑树09 B树10 B+树11 线段…...
看了大厂用AI审简历,我才发现社会的残酷真相!今年的秋招太可怕了
太可怕了!今年秋招,大厂竟然引进黑科技—— AI 面试、AI 智能分析简历, 这让打工人以后咋敢写精通 Office 三件套,就怕被 AI 一眼识破 劝你现在掌握 AI 技能,真的不是说说而已! 微软的最新职场 AI 统计数…...
京东大模型革命电商搜推技术:挑战、实践与未来趋势
大模型对搜推技术产生了深远的影响,极大地推动了搜推技术的演进趋势,使得搜推更加的智能化和个性化,然而在搜推中引入大模型时同样面临一系列的挑战,例如商品知识的幻觉,复杂查询的理解,个性化商品推荐&…...
深入学习二叉树(BinaryTree)(纯小白进)
目录: 一、 前言二、 正文2.1、 树的概念2.1.1、 树的结构2.1.2、 树的小知识 2.2、 认识二叉树2.2.1、 二叉树的概念2.2.2、 特殊的二叉树 2.3、 实现二叉树2.3.1、 结构2.3.2、 节点数2.3.3、 树深度2.3.4、 前、中、后序遍历 销毁2.3.4.1、 前序遍历2.3.4.2、 中…...
诗风秦韵诗词学习画廊宣言
诗风秦韵诗词学习画廊宣言 弘扬传统传承文明,奋斗路上不断前进,青春不朽梦想扬帆,华夏赞歌我心飞扬...
Cannot determine local hostname
1. 问题与解答 报错: o.s.cloud.commons.util.InetUtils : Cannot determine local hostname 可能原因: 缺少一个logback.xml 2. logback日志文件介绍 2.1 logback结构与组成 logback.xml 文件是 Logback 的核心配置文件,其基本…...
电工课堂-对晶闸管移相控制触发要求
晶闸管移相控制触发的要求主要包括触发信号的同步性、移相范围、输出功率、触发脉冲的参数和形式等。 触发信号的同步性:触发信号必须与主电路的电源频率保持一致,并具有固定的相位关系。这是为了确保在每个周期内晶闸管都能在相同的相位上被触发&#x…...
基于Arduino做的“鱿鱼游戏”BOSS面具,支持动作检测
这是一个结合了3D打印、舵机、PIR传感器和DFPlayer MP3模块的DIY项目,旨在制作一个带有动画眼睛的"鱿鱼游戏"老板面具。当检测到动作时,面具的眼睛会移动并播放声音,非常适合万圣节使用。 这个项目是一个很好的起点,特…...
数据库的查询操作
之前学习了怎么创建数据库,创建数据表以及给数据表添加数据,我们今天就学习一下数据的查询 一. 查询语句的语法 select 列名(字段名) form 表名 [where (查询条件表达式)] [order by <排序的列明>[…...
WebGL编程指南 - WebGL概述
WebGL,是一项用来在网页上绘制和渲染复杂三维图形(3D图形),并允许用户与之进行交互的技术 WebGL的一些信息: 表层基于HTML5标准,通过Canvas元素公开底层基于OpenGL,与OpenGL ES规范非常接近暂…...
前端杂学录(十)
1.axios 的底层实现 1. XMLHttpRequests 在浏览器环境中,Axios 使用 XMLHttpRequest 对象来发送请求。这是一个古老的 Web API,用于在浏览器中进行异步 HTTP 请求。 2. Node.js 的 http 模块 在 Node.js 环境中,Axios 使用 Node.js 的 ht…...
C++上机|编写函数invert实现对一维数组的倒序
//编写函数invert实现对一维数组的倒序 # include <iostream> using namespace std;class invert_array {private://int a[10]{0,1,2,3,4,5,6,7,8,9};public: void invert(int A[], int n){int i,j,temp;int m (n-1)/2;for(i0;i<m;i){jn-1-i;tempA[i];A[i]A[j];A[j]t…...
使用LSPatch+PlusNE修改手机软件
一、问题概述 国内使用一些软件,即使科学上网,打开都是网络错误,更换节点同样如此。 二、软件下载 通过官网或者正规商店(如Google play)下载并且安装。 是的,先要下载一个无法使用的版本,后续对其进行修改。 三、下…...
基于springboot的4S店车辆管理系统
作者:计算机学长阿伟 开发技术:SpringBoot、SSM、Vue、MySQL、ElementUI等,“文末源码”。 系统展示 【2024最新】基于JavaSpringBootVueMySQL的,前后端分离。 开发语言:Java数据库:MySQL技术:…...
C++从入门到起飞之——(multi)set与(multi)map的的使用 全方位剖析!
🌈个人主页:秋风起,再归来~🔥系列专栏:C从入门到起飞 🔖克心守己,律己则安 目录 1. 序列式容器和关联式容器 2. set系列的使⽤ 2.1 set和multiset参考⽂档 2.2 set类的介绍 2.3 se…...
HTML5实现古典音乐网站源码模板2
文章目录 1.设计来源1.1 主界面1.2 古典音乐界面1.3 著名人物界面1.4 古典乐器界面1.5 历史起源界面1.6 联系我们界面 2.效果和源码2.1 动态效果2.2 源代码 源码下载万套模板,程序开发,在线开发,在线沟通 作者:xcLeigh 文章地址&a…...
基于SpringBoot+Vue+uniapp的诗词学习系统的详细设计和实现
详细视频演示 请联系我获取更详细的演示视频 项目运行截图 技术框架 后端采用SpringBoot框架 Spring Boot 是一个用于快速开发基于 Spring 框架的应用程序的开源框架。它采用约定大于配置的理念,提供了一套默认的配置,让开发者可以更专注于业务逻辑而不…...
基于SpringBoot网上超市的设计与实现(论文+源码)_kaic
摘 要 网络技术和计算机技术发展至今,已经拥有了深厚的理论基础,并在现实中进行了充分运用,尤其是基于计算机运行的软件更是受到各界的关注。加上现在人们已经步入信息时代,所以对于信息的宣传和管理就很关键。因此超市商品销售信…...
《webpack深入浅出系列》
webpack深入浅出系列 ES6模块与CommonJS模块的主要区别 加载时机:ES6模块是编译时输出,即模块在编译阶段就已经确定了依赖关系;而CommonJS模块是运行时才加载,即运行到某个require语句时才加载对应的模块。 (也就是说…...
Spring Boot 实现流式响应(兼容 2.7.x)
在实际开发中,我们可能会遇到一些流式数据处理的场景,比如接收来自上游接口的 Server-Sent Events(SSE) 或 流式 JSON 内容,并将其原样中转给前端页面或客户端。这种情况下,传统的 RestTemplate 缓存机制会…...
【SpringBoot】100、SpringBoot中使用自定义注解+AOP实现参数自动解密
在实际项目中,用户注册、登录、修改密码等操作,都涉及到参数传输安全问题。所以我们需要在前端对账户、密码等敏感信息加密传输,在后端接收到数据后能自动解密。 1、引入依赖 <dependency><groupId>org.springframework.boot</groupId><artifactId...
linux arm系统烧录
1、打开瑞芯微程序 2、按住linux arm 的 recover按键 插入电源 3、当瑞芯微检测到有设备 4、松开recover按键 5、选择升级固件 6、点击固件选择本地刷机的linux arm 镜像 7、点击升级 (忘了有没有这步了 估计有) 刷机程序 和 镜像 就不提供了。要刷的时…...
论文浅尝 | 基于判别指令微调生成式大语言模型的知识图谱补全方法(ISWC2024)
笔记整理:刘治强,浙江大学硕士生,研究方向为知识图谱表示学习,大语言模型 论文链接:http://arxiv.org/abs/2407.16127 发表会议:ISWC 2024 1. 动机 传统的知识图谱补全(KGC)模型通过…...
AspectJ 在 Android 中的完整使用指南
一、环境配置(Gradle 7.0 适配) 1. 项目级 build.gradle // 注意:沪江插件已停更,推荐官方兼容方案 buildscript {dependencies {classpath org.aspectj:aspectjtools:1.9.9.1 // AspectJ 工具} } 2. 模块级 build.gradle plu…...
零基础在实践中学习网络安全-皮卡丘靶场(第九期-Unsafe Fileupload模块)(yakit方式)
本期内容并不是很难,相信大家会学的很愉快,当然对于有后端基础的朋友来说,本期内容更加容易了解,当然没有基础的也别担心,本期内容会详细解释有关内容 本期用到的软件:yakit(因为经过之前好多期…...
Typeerror: cannot read properties of undefined (reading ‘XXX‘)
最近需要在离线机器上运行软件,所以得把软件用docker打包起来,大部分功能都没问题,出了一个奇怪的事情。同样的代码,在本机上用vscode可以运行起来,但是打包之后在docker里出现了问题。使用的是dialog组件,…...
CVE-2020-17519源码分析与漏洞复现(Flink 任意文件读取)
漏洞概览 漏洞名称:Apache Flink REST API 任意文件读取漏洞CVE编号:CVE-2020-17519CVSS评分:7.5影响版本:Apache Flink 1.11.0、1.11.1、1.11.2修复版本:≥ 1.11.3 或 ≥ 1.12.0漏洞类型:路径遍历&#x…...
Web后端基础(基础知识)
BS架构:Browser/Server,浏览器/服务器架构模式。客户端只需要浏览器,应用程序的逻辑和数据都存储在服务端。 优点:维护方便缺点:体验一般 CS架构:Client/Server,客户端/服务器架构模式。需要单独…...
CVPR2025重磅突破:AnomalyAny框架实现单样本生成逼真异常数据,破解视觉检测瓶颈!
本文介绍了一种名为AnomalyAny的创新框架,该方法利用Stable Diffusion的强大生成能力,仅需单个正常样本和文本描述,即可生成逼真且多样化的异常样本,有效解决了视觉异常检测中异常样本稀缺的难题,为工业质检、医疗影像…...
