为什么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语句时才加载对应的模块。 (也就是说…...

label-studio的使用教程(导入本地路径)
文章目录 1. 准备环境2. 脚本启动2.1 Windows2.2 Linux 3. 安装label-studio机器学习后端3.1 pip安装(推荐)3.2 GitHub仓库安装 4. 后端配置4.1 yolo环境4.2 引入后端模型4.3 修改脚本4.4 启动后端 5. 标注工程5.1 创建工程5.2 配置图片路径5.3 配置工程类型标签5.4 配置模型5.…...

如何在看板中体现优先级变化
在看板中有效体现优先级变化的关键措施包括:采用颜色或标签标识优先级、设置任务排序规则、使用独立的优先级列或泳道、结合自动化规则同步优先级变化、建立定期的优先级审查流程。其中,设置任务排序规则尤其重要,因为它让看板视觉上直观地体…...
c++ 面试题(1)-----深度优先搜索(DFS)实现
操作系统:ubuntu22.04 IDE:Visual Studio Code 编程语言:C11 题目描述 地上有一个 m 行 n 列的方格,从坐标 [0,0] 起始。一个机器人可以从某一格移动到上下左右四个格子,但不能进入行坐标和列坐标的数位之和大于 k 的格子。 例…...

微信小程序 - 手机震动
一、界面 <button type"primary" bindtap"shortVibrate">短震动</button> <button type"primary" bindtap"longVibrate">长震动</button> 二、js逻辑代码 注:文档 https://developers.weixin.qq…...
生成 Git SSH 证书
🔑 1. 生成 SSH 密钥对 在终端(Windows 使用 Git Bash,Mac/Linux 使用 Terminal)执行命令: ssh-keygen -t rsa -b 4096 -C "your_emailexample.com" 参数说明: -t rsa&#x…...

GC1808高性能24位立体声音频ADC芯片解析
1. 芯片概述 GC1808是一款24位立体声音频模数转换器(ADC),支持8kHz~96kHz采样率,集成Δ-Σ调制器、数字抗混叠滤波器和高通滤波器,适用于高保真音频采集场景。 2. 核心特性 高精度:24位分辨率,…...

搭建DNS域名解析服务器(正向解析资源文件)
正向解析资源文件 1)准备工作 服务端及客户端都关闭安全软件 [rootlocalhost ~]# systemctl stop firewalld [rootlocalhost ~]# setenforce 0 2)服务端安装软件:bind 1.配置yum源 [rootlocalhost ~]# cat /etc/yum.repos.d/base.repo [Base…...
4. TypeScript 类型推断与类型组合
一、类型推断 (一) 什么是类型推断 TypeScript 的类型推断会根据变量、函数返回值、对象和数组的赋值和使用方式,自动确定它们的类型。 这一特性减少了显式类型注解的需要,在保持类型安全的同时简化了代码。通过分析上下文和初始值,TypeSc…...
LOOI机器人的技术实现解析:从手势识别到边缘检测
LOOI机器人作为一款创新的AI硬件产品,通过将智能手机转变为具有情感交互能力的桌面机器人,展示了前沿AI技术与传统硬件设计的完美结合。作为AI与玩具领域的专家,我将全面解析LOOI的技术实现架构,特别是其手势识别、物体识别和环境…...

C++_哈希表
本篇文章是对C学习的哈希表部分的学习分享 相信一定会对你有所帮助~ 那咱们废话不多说,直接开始吧! 一、基础概念 1. 哈希核心思想: 哈希函数的作用:通过此函数建立一个Key与存储位置之间的映射关系。理想目标:实现…...