0Pricing
Docker & DevOps Fundamentals · 课时

无状态应用的 Deployment

使用 Deployment 管理无状态应用,实现滚动更新和回滚。

无状态应用的 Deployment 是 CoddyKit 上的免费 Docker & DevOps Fundamentals 课时。 这是第 1 节课,共 4 节。 你可以在下方免费阅读本课时的完整内容 — 然后在浏览器中使用内置代码编辑器和全天候 AI 导师进行实践。 这是 Docker & DevOps Fundamentals 学习路径的一部分,你的进度在网页和 CoddyKit 应用中同步。 Docker & DevOps Fundamentals 课程共包含 4 节课。

认识 Kubernetes 部署

欢迎了解 Kubernetes 中的一个基本概念:部署!部署是管理无状态应用程序的首选资源。

您可以把部署想象成应用程序的蓝图。它会告知 Kubernetes 您希望运行多少个应用程序副本,以及如何在不中断服务的情况下更新它们。

无状态应用的 Deployment — 插图 1

超越容器组和 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 反馈 — 无需本地设置。

此课程中的所有课时

  1. 无状态应用的 Deployment
  2. 用于网络访问的 Service
  3. ConfigMaps 与密钥
  4. Ingress 与外部路由
← 返回 Docker & DevOps Fundamentals