返回 ELI5 知识库首页 🌱 K8S ATOMIC SCHEDULING UNIT
🌱 The Smallest Atomic Unit · Shared IP & Localhost

什么是 Pod(同甘共苦的豌豆荚)?

为什么 Kubernetes 不直接调度单个 Docker 容器?因为 Pod 就像一个装有两三颗豆子的“豌豆荚(双人合租房)” —— 荚内的容器们共享同一个网络 IP、同一个 localhost 与同一个文件硬盘,同生共死、形影不离!

📦 孤立的单个 Docker 容器

各自为政,跨容器通信像跨洋

如果主程序(Web 服务)和辅助程序(日志收集器)各自作为独立容器调度,它们可能被调度到两台不同的物理服务器上,网络延迟剧增,无法共享本地磁盘文件!

Web 容器 (Node-1) IP: 10.244.1.5 ⚡❌ 日志容器 (Node-2) IP: 10.244.2.8 ⚠️ 亲密进程被迫异地分居,日志读取效率极低
  • 网络隔离繁琐:无法直接通过 127.0.0.1 高速内存级通信
  • 生命周期不同步:主容器死了,辅助容器还在白白耗电
VS
🌱 K8s Pod 豌豆荚模式

合租同一间房,共享一切资源

Pod 将紧密绑定的多个容器打包为同一个调度单元。它们必定落在同一台物理机上,共享同一个网络 IP、用 localhost 毫秒级对话、读写同一块共享 Volume

🌱 Pod (共享 IP: 10.244.1.20) 🐳 主容器 (Web) Port: :8080 localhost 🚗 边车容器 (Sidecar) 收集日志 / 监控 📁 共享磁盘存储挂载卷 (Shared Volume /logs) ✨ 同生共死 · 极速本地进程协作!
  • 同机调度保证:所有豆子必定在同一台机器上一起生、一起死
  • 边车模式(Sidecar):业务逻辑与运维辅助功能完美解耦
💡

一句话顿悟:Pod 底层到底靠什么把容器绑在一起的?

每个 Pod 启动时,K8s 会先暗中拉起一个微型的 Pause 容器(只占几百 KB 内存)! 这个 Pause 容器负责把网络命名空间(Network Namespace)占住,随后所有的业务容器直接“寄生加入”这个网络空间 —— 从而实现共享同一个 IP 和网络协议栈!

拆解 Pod 的 4 大核心超能力

从边车设计模式到生命周期状态,读懂 K8s 最小原子基石

🌐

1. 共享单 IP 与 Localhost

Pod 内的容器间相互通信直接用 http://localhost:8080,速度如同单机进程调用,彻底免除跨节点网络转发开销。

📁

2. 共享数据卷 (Volume)

主容器往 /var/log/app.log 写日志,Sidecar 边车容器直接从同一目录实时读取并上报给 Elasticsearch/ClickHouse。

🚗

3. 经典 Sidecar 边车模式

让业务代码专注写业务,所有的服务网格(Istio 代理)、配置热拉取、日志采集全交由 Sidecar 独立容器打理。

🔄

4. 5大生命周期状态

Pending (排队调度) ➔ Running (健康运行) ➔ Succeeded (跑完退出) / Failed (崩溃报错) / Unknown

🕹️ Pod 内部“主容器 + 边车容器”协作显微镜

观察同一个 Pod 内的两个容器如何通过 localhost 与共享 Volume 实时联动:

🌱 Pod: payment-service-7f89d IP: 10.244.3.42
🐳 主业务容器 (Python)
处理用户支付订单 (:8080)
🚗 边车容器 (FluentBit)
监听日志并上传数仓 (:9090)
📁 共享挂载点 /data/logs (内存级共享)
1. 外部流量进入主容器
HTTP POST /api/pay ➔ 10.244.3.42:8080
外界流量直接命中 Pod 分配的独立 IP。主业务容器处理订单,无需关心日志如何持久化。
✔ 同一个网络命名空间 (Pause 驱动)
⏸️ 幕后功臣

Pause 容器与网络绑定

当你在一个 Pod 里运行 3 个业务容器时,实际上宿主机上跑了 4 个容器(其中一个是 k8s.gcr.io/pause)。

Pause 容器什么活都不用干,它的唯一使命就是作为“房东”,维持网络环境永不释放。

💀 临时性哲学

Pod 是易耗品 (Ephemeral)

K8s 官方理念:“不要把 Pod 当宠物养,要把它们当牲畜管理”

Pod 随时可能被驱逐、销毁或重建。因此不要在 Pod 本地磁盘存关键数据,一定要挂载 PVC 外部持久化云盘。

🤖 AI 时代的 Pod

多 GPU 挂载与大模型 Worker

在 DeepSeek 等分布式训练中,一个 Pod 可以同时挂载 8 张 Nvidia H100 GPU 物理卡。

主容器跑 PyTorch 算子,Sidecar 容器跑 RDMA 网络监控与 NCCL 通信健康检查,高效支撑万卡并行。