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(违背高内聚、低耦合原则)。