type
status
date
slug
summary
category
tags
create_time
Sep 2, 2025 06:29 AM
icon
password
my_create_time
📝 前言
在 Kubernetes 中,Pod 是最小的可部署单元。
理解 Pod 的资源对象,对于掌握集群调度机制、应用运行状态以及运维策略都至关重要。
很多同学初学时会将 Pod 视为“容器的集合”,但在生产实践中,Pod 不仅仅是容器的载体,它还包含网络、存储、生命周期管理等一整套资源对象特性。
本文将从概念、组成、生命周期,到实际操作全面解析 Pod 资源对象,并通过多个实战案例帮助你更好地掌握。
🧠 本章知识卡片

🚀 本章小节
1️⃣ 什么是Pod?
Pod 是 Kubernetes 中最小的调度和运行单元,可以理解为“一组紧密相关的容器的逻辑宿主”。
它具备以下特点:
- 最小调度单元:Pod 不是容器,而是容器的封装,Kubernetes 调度时以 Pod 为基本单位。
- 单容器或多容器:多数情况下 Pod 只包含一个容器;当需要共享网络、存储时,可在 Pod 内运行多个容器。
- 共享网络与存储:同一 Pod 内容器共享一个 IP 地址、端口空间,以及声明的 Volume。
- 短暂性:Pod 本身是临时的,用完即弃,通常通过控制器(如 Deployment、StatefulSet、Job)来创建和管理。
一句话总结:Pod 就是 Kubernetes 世界里承载和运行应用的“最小盒子”。
2️⃣ Pod 资源对象模型
和其他 Kubernetes 对象一样,Pod 遵循统一的资源对象模型:
- metadata:标识信息,如名称、标签、命名空间。
- spec:期望状态,定义容器镜像、端口、卷等。
- status:实际状态,由系统维护,反映 Pod 当前的运行情况。
一个最简单的 Pod 定义如下:
保存为一个
yaml
文件,然后通过kubectl apply -f nginx.yaml
即可创建出资源。也可以通过
run命令
快速创建出一个 Pod:PS:在实际生产中,通常不会直接创建 Pod,而是通过 Deployment、Job 等控制器管理 Pod 的模板,从而获得自动化调度和高可用。
3️⃣ Pod 生命周期与状态管理
一个 Pod 资源从创建到销毁主要会经历以下状态变化:
Pending
:已提交,调度中或拉取镜像。
ContainerCreating
: 正在创建容器。
Running
:至少一个容器在运行。
Succeeded
:容器成功退出。
Failed
:容器失败退出。
Unknown
:无法获取状态。
生命周期状态流程图如下:

状态查看:
4️⃣ Pod 的资源申请和限制
在 Kubernetes 中资源的管理是非常重要的,合理的资源管理是保障集群稳定性和应用性能的关键。
常见的资源申请和限制主要有以下几种:
资源类型 | 说明 | 单位示例 |
CPU | 计算资源 | 1 (1核), 500m (0.5核) |
Memory | 内存资源 | 1Gi , 512Mi |
GPU | 算力资源 | 1 (1卡) |
示例如下:
5️⃣ Pod 的健康检查
使用 Kubernetes 管理容器的一大核心杀器就是故障自愈,这里主要就是依靠健康检查特性来实现应用的高可用,当 Pod 健康检查未通过时,集群就会自动将其重启或迁移到其他节点再启动。
健康检查的类型主要有以下几种:
检查类型 | 说明 | 执行时机 |
Liveness Probe | 存活检查 | 容器运行期间定期检查 |
Readiness Probe | 就绪检查 | 容器启动后和服务流量前 |
Startup Probe | 启动检查 | 容器启动初期 |
检查方式也有多种:
检查方法 | 说明 | 适用场景 |
HTTP GET | HTTP请求检查 | Web服务、API服务 |
TCP Socket | TCP端口检查 | 数据库、缓存、网络服务 |
Exec | 执行命令检查 | 复杂状态检查、自定义逻辑 |
示例如下:
PS:若未添加健康检查配置则默认自动通过
exec
根据容器主进程状态进行检测。6️⃣ 多容器 Pod 的协作
在日志收集、监控代理和网络代理等场景中,多容器的Pod模式比较常见,通常称之为:sidecar。
示例如下:
说明:这里就是通过
volumes
实现了 存储共享
,app 容器写日志到共享卷,log-agent 容器实时收集日志。7️⃣ Pod 的初始化容器
与多容器不同,Pod 的初始化容器(Init Containers)仅在主容器运行前执行一次,常用于初始化准备工作,如创建一些目录文件、等待依赖服务启动等场景。
示例如下:
初始化容器支持添加多个,默认按照顺序进行启动,若初始化容器未执行结束是不会开始运行主容器的。
8️⃣ Pod 的常见命令
命令 | 描述 |
kubectl get pods | 列出当前命名空间的所有 Pod |
kubectl get pods -n <namespace> | 列出指定命名空间的所有 Pod |
kubectl get pods -A | 列出所有命名空间的所有 Pod(生产慎用,太多了很卡) |
kubectl get pods -o wide | 以宽格式显示(包含 IP 和节点信息) |
kubectl describe pod <pod-name> | 显示 Pod 的详细信息、事件和状态(排查问题非常有用) |
kubectl logs -f <pod-name> | 实时跟踪 Pod 日志输出 |
kubectl exec -it <pod-name> -- <command> | 在 Pod 中执行命令,类似docker exec 可直接进入 pod 容器内 |
kubectl apply -f <file.yaml> | 通过 YAML 文件创建/更新 Pod |
kubectl delete pod <pod-name> | 删除指定 Pod,注意 Pod 删除是不会重启的,Deployment 会。 |
kubectl delete -f <file.yaml> | 通过 YAML 文件删除 Pod |
✅ 总结
Pod 是 Kubernetes 的核心构建块,承载了应用运行的基本单元。
从资源对象模型、生命周期管理到实际部署,理解 Pod 的运行机制有助于我们更高效地运维和优化集群。
在生产环境中,正确使用 Pod 及其控制器,不仅能提升应用的可靠性,还能让资源调度更高效,充分发挥 Kubernetes 的自动化与弹性伸缩能力。
有关文章的任何疑问,欢迎您在底部评论区留言,一起交流~
若文章对您有帮助,欢迎 请我喝杯咖啡~
- 作者:青萍叙事
- 链接:https://blog.lusyoe.com/article/kubernetes-pod-resource-object
- 声明:本文采用 CC BY-NC-SA 4.0 许可协议,转载请注明出处。