K8s 1.27.1 实战系列(六)Pod
一、Pod介绍
1、Pod 的定义与核心设计
Pod 是 Kubernetes 的最小调度单元,由一个或多个容器组成,这些容器共享网络、存储、进程命名空间等资源,形成紧密协作的应用单元。Pod 的设计灵感来源于“豌豆荚”模型,容器如同豆子,共享同一环境但保持隔离性。其核心设计目标包括:
- 轻量性:Pod 本身不负责资源分配,仅作为容器的逻辑封装单元,高效利用集群资源。
- 临时性:Pod 生命周期短暂,故障或任务完成后会被销毁重建。
- 共享性:容器间通过共享网络(同一 IP/端口)、存储卷(Volume)和进程空间实现协作。
2、Pod 的实现机制
-
基础容器(Pause 容器)
每个 Pod 启动时首先创建
pause
容器,作为网络和存储的共享基础。后续容器通过链接到pause
容器实现资源共用。例如,多容器 Pod 中,Nginx 和日志采集容器可通过localhost
直接通信。 -
多容器协作模式
- 主从容器(Sidecar):如 Web 服务容器与日志采集容器协同工作。
- 初始化容器(Init Container):用于预配置环境(如数据库迁移),完成后才启动主容器。
- 临时任务容器:处理一次性任务(如数据备份),任务完成后自动终止。
3、网络与存储共享
- 网络共享
所有容器共享同一网络命名空间,拥有相同的 IP 和端口空间。例如,一个 Pod 内的 Nginx 容器和调试工具容器可通过localhost:80
直接通信。
- 存储共享
通过 Volume 挂载实现数据持久化与共享。例如,多个容器可同时读写同一emptyDir
卷中的临时文件。
4、生命周期与重启策略
-
生命周期阶段
- Pending:等待调度与资源分配。
- Running:容器已启动并运行。
- Succeeded/Failed:任务成功完成或异常终止。
-
重启策略
- Always(默认):容器退出后自动重启,适合长期服务。
- OnFailure:仅当容器异常退出(非零状态码)时重启,适合批处理任务。
- Never:不重启