当前位置: 首页 > news >正文

Kubernetes相关的名词解释POD(13)

POD是什么?

Pod 是 Kubernetes 中最小的工作单元,用于封装一个或多个紧密关联的容器(如主容器 + Sidecar 容器)。

设计目的:

  • 将共享同一生命周期、资源(如网络、存储)的容器组合在一起。

  • 例如:一个 Pod 可能包含主应用容器和一个日志收集容器,它们共享网络和存储卷。

关键特性:

  • 共享网络:Pod 内的所有容器共享同一个 IP 地址和端口空间。

  • 共享存储:Pod 可以挂载存储卷(Volume),供内部容器访问。

  • 原子性:Pod 是扩缩容的基本单位(不能单独扩缩容容器,只能扩缩容整个 Pod)。

Pod 与 Master/Node 的关系

  • Master 节点

    • 负责集群管理,不运行用户 Pod。

    • 包含组件:API Server、Scheduler、Controller Manager 等。

    • 决定 Pod 在哪个 Node 上运行(通过调度器)。

  • Node 节点

    • 是实际运行 Pod 的 worker 机器(物理机或虚拟机)。

    • 包含组件:kubelet(管理 Pod 生命周期)、kube-proxy(处理网络)、容器运行时(如 Docker/Containerd)。

    • 一个 Node 可以运行多个 Pod。

  • 关系总结

    • Master 控制集群状态,Node 执行具体工作。

    • Pod 由 Master 调度到 Node 上,由 Node 的 kubelet 负责启动和管理。

Master (Control Plane)

├── API Server
├── Scheduler (决定 Pod → Node)
└── Controller Manager (确保 Pod 健康)
                      |
Node (Worker)

├── Pod 1 (容器 A + 容器 B)
├── Pod 2 (单个容器)
└── kubelet (管理 Pod)

Pod 与容器的关系

  • Pod 是 Kubernetes 的抽象层,用于将容器组合成逻辑单元。

  • 一个 Pod 可以包含:

    • 单个容器(最常见,如一个 Nginx 容器)。

    • 多个容器(需紧密协作,例如:Web 服务器 + 文件同步 Sidecar)。

POD和容器的类比:

  • 容器是“进程”,Pod 是“虚拟机”(内部进程共享资源)。

  • Kubernetes 通过 Pod 管理容器,而非直接操作容器。

一个 Pod 通常专注于一个“业务逻辑单元”

一个 Pod 应该代表一个独立的“业务服务单元”(例如一个微服务实例),而不是将多个无关的业务塞进同一个 Pod。

典型场景:

  • 一个 Web 应用(主容器) + 日志收集器(Sidecar 容器)。

  • 一个 API 服务(主容器) + 配置热更新工具(Sidecar 容器)。

  • 一个数据库代理(主容器) + 监控代理(Sidecar 容器)。

关键点:

  • 这些容器共享生命周期(一起创建/销毁)和资源(网络、存储)。

  • 它们共同完成同一业务目标,但各自分工不同(如主业务逻辑 vs 辅助功能)。

多个容器不能放到一个POD?

  • 共享网络:多个容器在同一个 Pod 内可以通过 localhost 直接通信(无需 Service 发现)。

  • 共享存储:多个容器可以访问同一个 Volume(如主容器写日志,Sidecar 容器上传到云存储)。

  • 原子性:Sidecar 必须与主容器同生共死(例如日志收集器不能独立于主服务运行)。

反过来什么情况不该放同一个 Pod?

  • 无关的业务:例如 Web 前端和数据库不应该在一个 Pod 中(应拆分为两个 Pod,通过 Service 通信)。

  • 独立扩缩容需求:如果某个组件需要单独扩缩容(如日志收集器要横向扩展),它应该独立成 Pod。

  • 不同生命周期:例如数据库迁移工具只需要临时运行,不应与主服务绑定。

pod和容器、node、存储卷的关系图

总结

  • 一个 Pod = 一个业务单元,多个容器为同一目标协作。

  • 主容器负责核心逻辑,Sidecar 容器负责辅助功能(日志、监控、代理等)。

  • 判断标准:是否需要共享网络/存储、是否具有相同生命周期。

  • 错误用法:将多个独立业务塞进一个 Pod(违背高内聚、低耦合原则)。

相关文章:

  • Argo CD
  • 递归神经网络
  • 栈和队列--数据结构初阶(2)(C/C++)
  • 大数据系列 | 详解基于Zookeeper或ClickHouse Keeper的ClickHouse集群部署--完结
  • 查看MAC 地址以及简单了解
  • jvm-描述符与特征签名的区别
  • JavaScript-原型、原型链详解
  • Office文件内容提取 | 获取Word文件内容 |Javascript提取PDF文字内容 |PPT文档文字内容提取
  • 聊透多线程编程-线程互斥与同步-13. C# Mutex类实现线程互斥
  • 图片压缩工具,多种压缩方案可选
  • requestAnimationFrame是什么?【前端】
  • 基于瑞芯微RK3576国产ARM八核2.2GHz A72 工业评估板——ROS2系统使用说明
  • MH2103系列coremark1.0跑分数据和优化,及基于arm2d的优化应用
  • 鸿蒙NEXT开发LRUCache缓存工具类(单例模式)(ArkTs)
  • Gmssl实战
  • OpenSSL1.1.1d windows安装包资源使用
  • 【C++编程入门】:从零开始掌握基础语法
  • Python常用的第三方模块【openpyxl库】读写Excel文件
  • Vue路由传参的几种方式-案例
  • 系统分析师知识点:访问控制模型OBAC、RBAC、TBAC与ABAC的对比与应用
  • 夜读丨一位医生0点后的朋友圈
  • 大气科学家、北京大学副教授李成才逝世,终年56岁
  • 消费维权周报丨上周合同纠纷类投诉多,合同未到期关闭门店等
  • 全球南方声势卓然壮大的历史逻辑——写在万隆会议召开70周年之际
  • 调查显示特朗普在经济问题上的支持率跌至其总统生涯最低
  • 商务部新闻发言人就美对我海事、物流和造船等领域宣布最终措施答记者问