type
status
date
slug
summary
category
tags
create_time
Sep 3, 2025 11:58 PM
icon
password
my_create_time
📝 前言
在 Kubernetes 中,Pod 是最小的运行单元,但直接使用 Pod 往往缺乏弹性伸缩、版本管理与自动修复的能力。
为了满足这些需求,Kubernetes 提供了更高层级的 控制器资源对象(Controller)。
其中 Deployment 是最常用的控制器之一,它基于 ReplicaSet 管理 Pod,能够实现滚动升级、自动扩缩容、回滚等功能,是现代应用部署的核心。
本文将通过实战结合理论,详细解析 Deployment 资源的工作原理与最佳实践。
🧠 本章知识卡片

🚀 本章小节
1️⃣ 什么是 Deployment?
Deployment 是 Kubernetes 中的一种 声明式控制器资源对象,用于管理无状态应用。
它的主要作用是确保系统中始终运行指定数量的 Pod 副本,并支持以下能力:
- 自动修复:Pod 异常退出后,Deployment 会通过 ReplicaSet 自动拉起新 Pod。
- 滚动升级与回滚:支持零停机更新镜像、配置;出错时可快速回滚到之前的版本。
- 扩缩容:通过调整副本数(replicas),可以轻松实现水平扩缩容。
- 版本历史管理:保存历史版本,便于追踪与回滚。
2️⃣ Deployment 工作原理
Deployment 的核心机制是:
Deployment → 管理 ReplicaSet → 管理 Pod
流程大致如下:
- 用户创建 Deployment,声明副本数、副本模板(PodSpec)等。
- Deployment 创建并维护一个 ReplicaSet。
- ReplicaSet 确保运行指定数量的 Pod。
- 当 Deployment 更新时(如镜像版本变化),会生成新的 ReplicaSet,并逐步替换旧 Pod,实现滚动更新。
- 如果更新失败,可通过 Deployment 直接回滚到之前的 ReplicaSet。
3️⃣ Deployment 生命周期
生命周期流程大致如下:

4️⃣ 创建一个 Deployment
Deployment 的资源配置大部分都与 Pod 一致,只是在这之上又增加补充了一些,如:副本数,选择器和 Pod 模板(Pod 配置)。
示例如下:
创建
deployment.yaml
文件创建资源:
kubectl apply -f deployment.yaml
也可以通过一行命令简化创建:
查看状态:
5️⃣ 扩缩容
可以直接编辑
yaml
文件中replicas
,然后再重新apply
进行扩缩容。也可以通过以下命令直接扩缩容:
kubectl scale deployment my-deployment --replicas=5
更高级一点的方法是通过
HPA
自动扩缩容,这也是在生产环境中比较常见的一种方式。说明:
-cpu-percent=50
:当 Pod 平均 CPU 使用率超过 50% 时触发扩容
-min=2
:最少保持 2 个副本
-max=10
:最多扩容到 10 个副本
6️⃣ 滚动升级
滚动升级比较简单,只需要修改
image
镜像地址,默认就会自动滚动升级。示例如下:
7️⃣ 回滚版本
回滚也比较简单,这都是内置级的特性。
示例如下:
✅ 最佳实践
在生产使用时,可遵循以下最佳实践提供应用的稳定性和资源利用率:
- 配置 readinessProbe / livenessProbe
- 合理设置 资源请求与限制
- 使用滚动更新策略 (
maxUnavailable
/maxSurge
)
- 生产环境副本数 ≥ 2,提升高可用性
- 结合 HPA (Horizontal Pod Autoscaler) 自动扩缩容
📌 总结
Deployment 是 Kubernetes 最常用的无状态控制器,几乎所有应用的上线都依赖于它。
它通过 ReplicaSet 管理 Pod,具备自动修复、滚动更新、回滚和扩缩容能力,是学习和使用 Kubernetes 的核心步骤。
有关文章的任何疑问,欢迎您在底部评论区留言,一起交流~
- 作者:青萍叙事
- 链接:https://blog.lusyoe.com/article/kubernetes-deployment-resource-guide
- 声明:本文采用 CC BY-NC-SA 4.0 许可协议,转载请注明出处。