0Pricing
Kubernetes Basics · 课时

了解 Deployment

了解 Deployment 如何自动化管理无状态应用的 Pod 和 ReplicaSets。

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

什么是部署?

欢迎!在 Kubernetes 中,管理应用意味着管理它们的 Pod。但直接管理单个 Pod,甚至 ReplicaSets,可能会变得复杂。

部署是一种更高层级的对象,用于简化无状态应用的管理。您可以把它看作应用的管理者。

  • 它定义应用的期望状态。
  • 即使 Pod 发生故障,它也能确保该状态得到维持。
  • 它会自动执行更新和回滚。

为什么使用部署?

部署让应用能够在 Kubernetes 中可靠运行,并带来显著优势:

  • 自动化管理:负责处理 Pod 的创建、扩缩容和删除。
  • 自我修复:如果 Pod 崩溃,部署会自动替换它,以维持期望的副本数量。
  • 声明式更新:您描述新的期望状态,部署会确定如何达到该状态(例如推出新版本)。

部署是管理无状态应用的推荐方式。

部署的核心作用

部署的核心是管理 ReplicaSets。ReplicaSet 的职责是确保指定数量的 Pod 副本始终在运行。

因此,部署使用 ReplicaSets 来实现其目标:根据您的定义,确保应用拥有正确数量且运行状况良好的 Pod。

这种抽象大大简化了应用生命周期的定义和维护。

部署 YAML 的结构

与大多数 Kubernetes 对象一样,部署使用 YAML 定义。以下是您通常会看到的关键部分:

  • apiVersion 和 kind:标识对象类型(Deployment)。
  • metadata:部署对象自身的名称、标签等信息。
  • spec:核心定义,包括:
    • replicas:期望的 Pod 数量。
    • selector:部署查找其所管理 Pod 的方式。
    • template:要创建的 Pod 模板。

Pod 模板

部署 spec 中的 template 字段非常重要。它本质上是一个完整的 Pod 定义。

此部署创建的任何 Pod 都会使用这个模板。这意味着您可以定义:

  • 要使用的容器镜像。
  • 要公开的端口。
  • 环境变量。
  • 资源请求和限制。
  • 以及更多内容!

对该模板的更改会触发应用更新。

创建简单部署

下面为一个简单的 Nginx Web 服务器定义部署。我们希望运行 3 个副本。

请注意,selector.matchLabels 必须与 template.metadata.labels 匹配。这会告诉部署哪些 Pod 属于它。

apiVersion: apps/v1
kind: Deployment
metadata:
  name: my-nginx-deployment
  labels:
    app: nginx
spec:
  replicas: 3
  selector:
    matchLabels:
      app: nginx
  template:
    metadata:
      labels:
        app: nginx
    spec:
      containers:
      - name: nginx
        image: nginx:latest
        ports:
        - containerPort: 80

应用部署

要在 Kubernetes 集群(例如 Minikube)中创建此部署,请使用 kubectl apply 命令。将上面的 YAML 保存为 nginx-deployment.yaml。

kubectl 会创建部署对象。随后,部署控制器会发现此对象并采取行动,创建一个 ReplicaSet,再由该 ReplicaSet 创建 3 个 Nginx Pod。

kubectl apply -f nginx-deployment.yaml

检查您的部署

应用部署后,您可以检查部署及其管理的 Pod 的状态:

  • kubectl get deployments:显示您的部署。
  • kubectl get replicasets:显示部署创建的 ReplicaSet。
  • kubectl get pods -l app=nginx:显示部署管理的 Pod(通过其标签选择器)。
  • kubectl describe deployment my-nginx-deployment:提供部署的详细信息,包括事件。
kubectl get deployments
kubectl get pods -l app=nginx
kubectl describe deployment my-nginx-deployment

维持期望状态

部署最强大的功能之一是维持期望状态的能力。如果您定义了 replicas: 3,部署就会确保始终有 3 个 Pod 在运行。

尝试手动删除一个 Nginx Pod(kubectl delete pod <pod-name>)。您会看到部署很快创建一个新的 Pod 来替换它!这就是自我修复的实际运作方式。

快速检查

部署主要用于管理哪种类型的应用?

回顾:理解部署

做得很好!您已经迈出了学习 Kubernetes 部署的第一步。

  • 部署是用于管理无状态应用的高层级对象。
  • 它们通过管理 ReplicaSets,自动完成 Pod 的创建、扩缩容和自我修复。
  • 您可以使用 YAML 清单定义部署,指定期望的 replicas 数量和 Pod 的 template。
  • kubectl apply 会创建部署,而 kubectl get/describe 可以帮助您监控部署。

接下来,我们将深入学习 ReplicaSets,以及它们如何保证期望的 Pod 数量!

常见问题解答

「了解 Deployment」课时是免费的吗?

是的 — 「了解 Deployment」的完整文本可在网页上免费阅读。要进行交互式练习(内置代码编辑器和全天候 AI 导师)并解锁 Kubernetes Basics 课程的其余内容,请升级到 CoddyKit PRO。 Kubernetes Basics 课程共包含 4 节课。

「了解 Deployment」这节课中我会学到什么?

了解 Deployment 如何自动化管理无状态应用的 Pod 和 ReplicaSets。 你通过在浏览器中直接运行的动手代码来练习 Kubernetes Basics,全天候 AI 导师会在你学习这节课的过程中回答你的问题。

学习 Kubernetes Basics 需要有经验吗?

无需任何先前经验。CoddyKit 上的 Kubernetes Basics 课程适合初学者到高级学习者,你可以从这里开始或从头开始,按照自己的节奏学习。 这是第 1 节课,共 4 节。

「了解 Deployment」课时需要多长时间?

大多数 CoddyKit 课程大约需要 5–10 分钟。每节课都很精短且互动,所以你能稳步进步,并在网页和应用中从离开的地方继续。

我能在这节 Kubernetes Basics 课中编写并运行代码吗?

能。每节 Kubernetes Basics 课都包含内置代码编辑器,你可以在浏览器中直接编写并运行真实代码,并获得即时 AI 反馈 — 无需本地设置。

此课程中的所有课时

  1. 了解 Deployment
  2. 使用 ReplicaSets 扩展应用
  3. 滚动更新与回滚
  4. 部署策略:蓝绿与金丝雀
← 返回 Kubernetes Basics