无状态应用的 Deployment
使用 Deployment 管理无状态应用,实现滚动更新和回滚。
无状态应用的 Deployment 是 CoddyKit 上的免费 Docker & DevOps Fundamentals 课时。 这是第 1 节课,共 4 节。 你可以在下方免费阅读本课时的完整内容 — 然后在浏览器中使用内置代码编辑器和全天候 AI 导师进行实践。 这是 Docker & DevOps Fundamentals 学习路径的一部分,你的进度在网页和 CoddyKit 应用中同步。 Docker & DevOps Fundamentals 课程共包含 4 节课。
认识 Kubernetes 部署
欢迎了解 Kubernetes 中的一个基本概念:部署!部署是管理无状态应用程序的首选资源。
您可以把部署想象成应用程序的蓝图。它会告知 Kubernetes 您希望运行多少个应用程序副本,以及如何在不中断服务的情况下更新它们。

超越容器组和 ReplicaSets
您已经了解了容器组(最小单元)和 ReplicaSets(确保容器组数量达到指定值)。
部署建立在 ReplicaSet 之上,为以下操作提供更高级别的抽象:
- 创建和更新 ReplicaSets。
- 逐步推出应用程序的新版本。
- 在出现问题时回滚到之前的版本。
这样可以更轻松、更安全地管理应用程序。
部署 YAML 的内部结构
与其他 Kubernetes 资源一样,部署使用 YAML 定义。下面来看看其基本结构:
apiVersion:指定 Kubernetes API 版本(例如apps/v1)。kind:对于部署资源,始终为Deployment。metadata:包含部署的name和可选的labels等信息。
这些字段帮助 Kubernetes 识别和组织部署。
指定副本数与模板
部署的核心是其 spec 部分。在这里,您可以定义:
replicas:应用程序所需的相同容器组数量。selector:部署如何查找其管理的容器组(使用标签)。template:本质上是一个容器组定义,用于描述每个容器组的容器、卷等内容。
部署会使用 template 创建新的容器组。
我们的 Nginx 部署
下面是一个用于 Nginx Web 服务器的简单部署清单。它会告知 Kubernetes 始终运行 3 个 Nginx 容器组。
请尝试理解每个部分的作用!
apiVersion: apps/v1
kind: Deployment
metadata:
name: nginx-deployment
labels:
app: nginx
spec:
replicas: 3
selector:
matchLabels:
app: nginx
template:
metadata:
labels:
app: nginx
spec:
containers:
- name: nginx
image: nginx:1.14.2
ports:
- containerPort: 80创建您的部署
准备好部署 YAML 文件(例如 nginx-deployment.yaml)后,您可以使用 kubectl apply 命令在 Kubernetes 集群中创建部署。
Kubernetes 随后会确保创建并维护所需数量的容器组。
kubectl apply -f nginx-deployment.yaml您可以使用以下命令检查其状态:
kubectl get deployments扩展与缩减
需要增加或减少应用程序实例吗?部署让扩展变得非常简单!您可以在 YAML 中调整 replicas 字段并重新应用,也可以直接使用以下命令:
kubectl scale deployment nginx-deployment --replicas=5此命令会立即告知部署创建另外 2 个 Nginx 容器组,使总数达到 5 个。
零停机更新
部署最大的优势之一是能够执行滚动更新。当您更新容器组模板(例如更改映像版本)时,Kubernetes 不会一次性关闭所有旧容器组。
相反,它会逐步用新容器组替换旧容器组,确保应用程序在整个更新过程中保持可用。
kubectl set image deployment/nginx-deployment nginx=nginx:1.16.1轻松回滚
更新时出错了?不用担心!Deployment 会保留修订历史,让您可以轻松恢复到之前的稳定版本。
这称为回滚,是 Deployment 至关重要的安全保障。
kubectl rollout undo deployment/nginx-deployment您还可以使用 kubectl rollout history deployment/nginx-deployment 查看历史记录。
Deployment 小测验
一名开发者将 Nginx Deployment 的镜像从 nginx:1.14.2 更新为 nginx:1.16.1。使用 Kubernetes Deployment 进行此更新的主要好处是什么?
Deployment:重点回顾
做得很好!您已经了解了 Kubernetes Deployment,这是一种用于管理无状态应用的强大资源。
- Deployment 管理 ReplicaSets,而 ReplicaSets 管理 Pods。
- Deployment 定义期望状态,其中包括
replicas的数量。 - 主要功能包括轻松扩缩容、实现零停机的滚动更新,以及简单地回滚到之前的版本。
接下来,我们将探索用于公开应用的 Services!
常见问题解答
「无状态应用的 Deployment」课时是免费的吗?
是的 — 「无状态应用的 Deployment」的完整文本可在网页上免费阅读。要进行交互式练习(内置代码编辑器和全天候 AI 导师)并解锁 Docker & DevOps Fundamentals 课程的其余内容,请升级到 CoddyKit PRO。 Docker & DevOps Fundamentals 课程共包含 4 节课。
「无状态应用的 Deployment」这节课中我会学到什么?
使用 Deployment 管理无状态应用,实现滚动更新和回滚。 你通过在浏览器中直接运行的动手代码来练习 Docker & DevOps Fundamentals,全天候 AI 导师会在你学习这节课的过程中回答你的问题。
学习 Docker & DevOps Fundamentals 需要有经验吗?
无需任何先前经验。CoddyKit 上的 Docker & DevOps Fundamentals 课程适合初学者到高级学习者,你可以从这里开始或从头开始,按照自己的节奏学习。 这是第 1 节课,共 4 节。
「无状态应用的 Deployment」课时需要多长时间?
大多数 CoddyKit 课程大约需要 5–10 分钟。每节课都很精短且互动,所以你能稳步进步,并在网页和应用中从离开的地方继续。
我能在这节 Docker & DevOps Fundamentals 课中编写并运行代码吗?
能。每节 Docker & DevOps Fundamentals 课都包含内置代码编辑器,你可以在浏览器中直接编写并运行真实代码,并获得即时 AI 反馈 — 无需本地设置。
此课程中的所有课时
- 无状态应用的 Deployment
- 用于网络访问的 Service
- ConfigMaps 与密钥
- Ingress 与外部路由