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 资源的工作原理与最佳实践。

🧠 本章知识卡片

notion image

🚀 本章小节

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 生命周期

生命周期流程大致如下:
notion image

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 的核心步骤。
💡
有关文章的任何疑问,欢迎您在底部评论区留言,一起交流~
 
 
上一篇
第四部分:Service 资源对象介绍
下一篇
青萍图床需求说明文档

评论
Loading...