K8s 和 Docker 的关系与管理逻辑详解

一、先搞懂:Docker 和 K8s 分别是做什么的?
  • Docker(容器工具):好比「集装箱工厂」,负责把应用和依赖打包成标准化容器(类似集装箱),让应用能在任何环境中运行(一次打包,到处运行)。
  • K8s(Kubernetes,容器编排工具):好比「集装箱码头调度系统」,当有大量集装箱(容器)需要管理时,K8s 负责调度、分配资源、保证容器正常运行,解决单个 Docker 无法处理的「大规模集群管理」问题。
二、K8s 与 Docker 的关系:不是替代,而是「分工合作」
  • Docker 是基础,K8s 是上层调度
    • Docker 解决「如何打包和运行单个容器」的问题。
    • K8s 解决「如何在集群中管理成千上万个容器」的问题,比如:
      • 容器挂了自动重启(自愈);
      • 按流量自动增减容器数量(扩缩容);
      • 把容器分配到最合适的服务器上(调度);
      • 让多个容器之间能互相访问(服务发现)。
三、K8s 如何管理 Docker?核心组件与流程

K8s 不直接管理 Docker,而是通过中间层 Container Runtime Interface(CRI,容器运行时接口) 间接控制。以 Docker 为例,其管理逻辑如下:

1. K8s 的「调度 - 执行」架构

K8s 控制平面(Master)       → 工作节点(Worker Node)

├─ 调度容器去哪运行                └─ Docker 负责实际运行容器

  • 控制平面(Master)
    • API Server:接收用户部署请求(如「运行 3 个 Web 容器」),并转化为标准格式(Pod)。
    • Scheduler:根据节点资源(CPU、内存)和容器需求,决定把容器放在哪个节点上。
    • Controller Manager:监控容器状态,比如发现容器挂了就通知重新部署。
  • 工作节点(Worker Node)
    • Kubelet:节点上的「管家」,接收控制平面的指令,通过 CRI 调用 Docker 运行容器。
    • Docker Engine:实际创建和运行容器,管理容器的生命周期。

 

2. CRI:K8s 与 Docker 沟通的「翻译官」
  • 为什么需要 CRI?:K8s 设计时希望支持多种容器运行时(如 Docker、Containerd、CRI-O),所以定义了 CRI 接口,让不同运行时按统一标准对接。
  • CRI 如何对接 Docker?
    • 早期 K8s 直接调用 Docker API,但后来为了解耦,引入了 containerd-shim 作为中间层:
      1. Kubelet 通过 CRI 发送请求(如「运行容器」)到 containerd-shim。
      2. containerd-shim 调用 Docker 的底层组件(containerd)创建容器。
      3. Docker 负责容器的运行,containerd-shim 负责将状态返回给 Kubelet。
3. K8s 管理 Docker 的最小单位:Pod
  • Pod 是什么?:K8s 中容器的「打包单元」,一个 Pod 可以包含 1 个或多个容器(通常是紧密协作的容器,如 Web 服务 + 日志收集器)。
  • Pod 与 Docker 容器的关系
    • 每个 Pod 对应一组 Docker 容器,这些容器共享网络和存储资源(比如同一个 Pod 里的容器可以通过 localhost 互相访问)。
    • K8s 部署时,先创建 Pod 对象,Kubelet 再通过 Docker 创建 Pod 里的所有容器。
四、举个生活例子:K8s 如何像「快递站」管理 Docker 容器?
  • 场景:你开了一家网店,需要处理大量订单(容器)。
  • Docker = 快递盒:把每个订单的商品(应用)打包成独立快递盒(容器),保证商品不受损坏(环境隔离)。
  • K8s = 快递站调度系统
    1. 接收订单(API Server):用户下单(部署请求),系统记录需要多少个快递盒(容器数量)。
    2. 分配快递员(Scheduler):根据快递员(节点)的工作量(资源),安排最合适的人去打包(运行容器)。
    3. 监控快递状态(Controller Manager):如果某个快递员生病(节点故障),调度系统会把订单转给其他快递员(容器迁移)。
    4. 快递盒打包(Docker):快递员接到任务后,用标准快递盒(Docker)打包商品,确保每个包裹一致。
五、K8s 管理 Docker 的核心功能:不止于「运行」
  1. 服务发现与负载均衡
    • K8s 为一组容器(如 Web 服务)创建一个「服务(Service)」,自动分配域名和 IP,让其他容器能找到它们,同时分摊流量(负载均衡)。
  2. 弹性伸缩
    • 当访问量增加时,K8s 自动通知 Docker 创建更多容器;访问量减少时,删除多余容器,避免资源浪费。
  3. 滚动更新与回滚
    • 升级应用时,K8s 会先启动新容器,再逐步替换旧容器,保证服务不中断;如果升级失败,能一键回滚到旧版本。
  4. 存储管理
    • K8s 可以为容器分配共享存储(如 NFS、云硬盘),即使容器在节点间迁移,数据也不会丢失。

containerd 和 dockerd 的关系:从 “母子” 到 “独立协作”

1. 技术演进:dockerd 曾是 containerd 的 “包装层”
  • containerd 的本质:它是一个底层容器运行时,负责管理容器的生命周期(创建、运行、停止)、镜像管理、存储和网络接口等核心功能,相当于容器世界的 “基建工程师”。

  • dockerd 的角色:Docker 早期版本中,dockerd是用户直接交互的命令行工具(比如docker run),但它内部依赖containerd来执行实际的容器操作。可以理解为:dockerd是给containerd穿了一层 “用户友好的外套”,让用户不用关心底层复杂逻辑。

  • 关系类比
    containerd像手机的操作系统内核(如 Android 内核),dockerd像手机的操作界面(如 MIUI/EMUI),用户通过界面(dockerd)操作,但真正干活的是内核(containerd)。

2. 如今:独立组件的协作模式
  • Docker 架构升级:随着容器技术发展,Docker 将containerd剥离为独立项目(2017 年捐赠给 CNCF),现在dockerdcontainerd是两个独立运行的进程,但仍需协作:

    • dockerd负责接收用户命令(如docker run),并将请求转发给containerd
    • containerd负责执行容器操作,完成后将结果返回给dockerd,再由dockerd反馈给用户。
  • 类比场景
    点外卖时,用户通过 App(dockerd)下单,App 将订单发给商家后厨(containerd),后厨做好饭菜后交给 App,再由 App 通知用户取餐。

3. 为什么 K8s 更倾向于直接使用 containerd?
  • K8s 作为容器编排工具,更关注底层容器运行时的效率和稳定性,而containerddockerd更轻量、更标准化(符合 OCI 容器标准)。因此,K8s 从 1.24 版本开始推荐直接使用containerd作为容器运行时,跳过dockerd这一层,就像手机用户绕过定制界面直接使用原生系统,减少性能损耗。

参考:

Docker 上 Kubernetes 的入门到进阶指南:构建和管理你的容器化应用_kubernetes docker 先装谁?-CSDN博客

深入理解K8s与Docker的关系:容器化技术的双雄-CSDN博客

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若转载,请注明出处:http://www.pswp.cn/pingmian/87106.shtml
繁体地址,请注明出处:http://hk.pswp.cn/pingmian/87106.shtml
英文地址,请注明出处:http://en.pswp.cn/pingmian/87106.shtml

如若内容造成侵权/违法违规/事实不符,请联系英文站点网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

QT MaintenanceTool 登录无法找到 QtAccount 凭据

亲测有效:QT6 Maintenance Tool 登录问题_qt6 maintenancetool-CSDN博客 将ini这个配置文件移出文件夹后,在切换自己账户登录即可

华为云Flexus+DeepSeek征文|利用华为云一键部署 Dify 平台并接入 DeepSeek 大模型,构建长篇文章生成助手

目录 前言 1 华为云一键部署 Dify 平台 1.1 华为云 Dify 平台介绍 1.2 部署过程介绍 1.3 登录 Dify 平台 2 接入华为云 ModelArts Studio 中的 DeepSeek 大模型 3 构建长篇文章生成助手 3.1 简要介绍长篇文章生成助手 3.2 开始节点 3.3 生成标题和大纲(LL…

js的一些基础概念总结

1.变量声明 首先js变量声明有三种,var,const,let,这三种变量声明中我们第一优先使用const,需要改变这个值的时候我们用ley,var是尽量不去使用。 那么我们现在来总结一下三种声明变量的区别。首先是var let …

防 XSS和CSRF 过滤器(Filter)

会话管理存在问题: 1.服务集群部署或者是分布式服务如何实现会话共享 2.会话的不同存储地方的安全性问题 答: 会话共享 可以使用后端集中管理(redis)或者客户端管理 (jwt); 存储安全性 这个还真的没有太好的方式&…

鸿蒙容器组件 WaterFlow、FlowItem解析:动态瀑布流布局实践

一、引言:不规则布局的智能化解决方案 在图片社交、电商导购、资讯聚合等现代应用场景中,瀑布流布局以其灵活的空间利用率和自然的视觉流动感成为界面设计的重要选择。鸿蒙提供的 WaterFlow 与 FlowItem 组件,通过智能布局算法与声明式语法&…

概率密度基本概念

概率密度(Probability Density)是概率论中用于描述随机变量分布的一种方式,特别适用于连续随机变量。它并不是一个概率值,而是表示单位范围内的概率大小或“浓度”。更具体地说,概率密度表示在某个特定值附近&#xff…

10-1 MySQL 索引优化与查询优化

10-1 MySQL 索引优化与查询优化 文章目录 10-1 MySQL 索引优化与查询优化1. 数据准备2. 索引失效案例2.1 索引字段:全值匹配最优2.2 索引字段:最佳左前缀法则2.3 主键插入顺序2.4 索引字段进行了:计算、函数、类型转换(自动或手动)导致索引失…

基于目标驱动的分布式敏捷开发

研究结论 风险对项目目标的影响 时间目标:需求管理不当(如需求优先级不明确、多产品负责人需求冲突)、架构变更导致的返工、跨站点协调问题(如第三方依赖、通信基础设施不足)是影响项目时间的主要风险因素。质量目标&…

高通手机跑AI系列之——穿衣试装算法

环境准备 手机 测试手机型号:Redmi K60 Pro 处理器:第二代骁龙8移动--8gen2 运行内存:8.0GB ,LPDDR5X-8400,67.0 GB/s 摄像头:前置16MP后置50MP8MP2MP AI算力:NPU 48Tops INT8 &&…

opencv入门(5)图像像素的读写操作和算术运算

文章目录 1 图像遍历与修改1.1 使用数组1.2 使用指针 2 图像的算术运算2.1 一般算术操作2.2 算术API 1 图像遍历与修改 C中支持 数组遍历 和 指针方式遍历 1.1 使用数组 访问使用 image.at(row,col) 进行访问 如果是单通道灰度图,就使用image.at进行读取 如果是三…

Stable Diffusion入门-ControlNet 深入理解-第三课:结构类模型大揭秘——深度、分割与法线贴图

大家好,欢迎回到Stable Diffusion入门-ControlNet 深入理解系列的第三课! 在上一课中,我们深入探讨了 ControlNet 文件的命名规则,以及线条类 ControlNet模型的控制方法。如果你还没有看过第二篇,赶紧点这里补课:Stable Diffusion入门-ControlNet 深入理解 第二课:Contr…

喷油嘴深凹槽内轮廓测量的方法探究 —— 激光频率梳 3D 轮廓测量

引言 喷油嘴作为燃油喷射系统核心部件,其深凹槽内轮廓精度直接影响燃油雾化效果与发动机排放性能。喷油嘴深凹槽具有深径比大(可达 30:1)、孔径小(φ0.5 - 2mm)、表面质量要求高(Ra≤0.2μm)等…

上证ETF50期权交易规则一文详解

50ETF期权,首先这是期权交易,所以50ETF期权有期权交易的所有特征,其次,50ETF期权的标的对象是上证50,所以50ETF(认购看涨)期权的走势和上证50的走势是一样的。 行权时间: 在行权日当…

Oracle获取执行计划之10046 技术详解

Oracle 的 10046 事件是性能调优中最常用的工具之一,通过跟踪会话的 SQL 执行细节,生成包含执行计划、等待事件、绑定变量等信息的跟踪文件,帮助定位性能瓶颈。以下是技术详解: 一、10046 事件基础 10046 是 Oracle 内部事件&…

Linux 日志监控工具对比:从 syslog 到 ELK 实战指南

更多云服务器知识,尽在hostol.com 你有没有被 Linux 上满屏飞滚的日志整崩溃过?看着 /var/log 目录越来越肥,关键日志像大海捞针一样藏在里面,每次出故障就像拆盲盒,赌你能不能第一眼看出问题。 日志系统&#xff0c…

本地服务器部署后外网怎么访问不了?内网地址映射互联网上无法连接问题的排查

我的网站部署搭建在本地服务器上的,在内网可以正常访问,但是外网无法访问,该怎么排查?局域网内部经过路由器的,有设置了虚拟服务器转发规则,在互联网公网上还是无法访问服务器怎么办?相信很多人…

如何免费正确安装微软的office全家桶

记录一下如何正确安装微软的office全家桶 找到安装包傻瓜式安装 找到安装包 安装包在附件,大家可以自行进行下载 傻瓜式安装 操作一目了然,点你需要的就行了

论文阅读:BLIPv1 2022.2

文章目录 一、研究背景与问题现有方法的局限性研究目标 二、核心方法与创新点多模态编码器 - 解码器混合架构(MED)标题生成与过滤(CapFilt)数据自举方法 三、实验与结果数据集与训练配置关键实验发现与 state-of-the-art 方法的对…

630,百度文心大模型4.5系列开源!真香

2025年被普遍认为是AI Agent商业化的关键之年,而大模型正是Agent能力的核心支撑。 当开发成本大幅降低,我们很可能看到各种垂直领域的Agent应用如雨后春笋般涌现。 技术普惠的现实意义对于广大AI创业者和开发者来说,这无疑是个好消息。 之…

数据结构:递归:斐波那契数列(Fibonacci Sequence)

目录 什么是斐波那契数列? 用递归推导Fibonacci 复杂度分析 用迭代推导Fibonacci 复杂度分析 递归优化:记忆化递归(Memoized Recursion) 复杂度分析 什么是斐波那契数列? 斐波那契数列(Fibonacci Seq…