什么是 Pod(同甘共苦的豌豆荚)?
为什么 Kubernetes 不直接调度单个 Docker 容器?因为 Pod 就像一个装有两三颗豆子的“豌豆荚(双人合租房)” —— 荚内的容器们共享同一个网络 IP、同一个 localhost 与同一个文件硬盘,同生共死、形影不离!
各自为政,跨容器通信像跨洋
如果主程序(Web 服务)和辅助程序(日志收集器)各自作为独立容器调度,它们可能被调度到两台不同的物理服务器上,网络延迟剧增,无法共享本地磁盘文件!
- ❌ 网络隔离繁琐:无法直接通过
127.0.0.1高速内存级通信 - ❌ 生命周期不同步:主容器死了,辅助容器还在白白耗电
合租同一间房,共享一切资源
Pod 将紧密绑定的多个容器打包为同一个调度单元。它们必定落在同一台物理机上,共享同一个网络 IP、用 localhost 毫秒级对话、读写同一块共享 Volume!
- ✨ 同机调度保证:所有豆子必定在同一台机器上一起生、一起死
- ✨ 边车模式(Sidecar):业务逻辑与运维辅助功能完美解耦
拆解 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 实时联动:
Pause 容器与网络绑定
当你在一个 Pod 里运行 3 个业务容器时,实际上宿主机上跑了 4 个容器(其中一个是 k8s.gcr.io/pause)。
Pause 容器什么活都不用干,它的唯一使命就是作为“房东”,维持网络环境永不释放。
Pod 是易耗品 (Ephemeral)
K8s 官方理念:“不要把 Pod 当宠物养,要把它们当牲畜管理”。
Pod 随时可能被驱逐、销毁或重建。因此不要在 Pod 本地磁盘存关键数据,一定要挂载 PVC 外部持久化云盘。
多 GPU 挂载与大模型 Worker
在 DeepSeek 等分布式训练中,一个 Pod 可以同时挂载 8 张 Nvidia H100 GPU 物理卡。
主容器跑 PyTorch 算子,Sidecar 容器跑 RDMA 网络监控与 NCCL 通信健康检查,高效支撑万卡并行。