创建和管理 Deployment

学习目标

  • 创建和管理 Deployment

使用场景

您希望将开发完成的应用程序部署到 Kubernetes 集群。为此,请定义 Deployment 清单并将其应用到集群。

任务流程

在本练习中,您将执行以下任务:

  1. 使用 Kyma dashboard 创建 Deployment。

  2. 更新并应用 Deployment 清单。

  3. 扩缩 Deployment。

  4. 回滚 Deployment。

先决条件

开始之前,请确保满足以下先决条件:

  • 您已在 SAP BTP 子账户中创建 SAP BTP, Kyma runtime 实例。请参见 在 SAP BTP 上使用 Kyma 部署 Kubernetes 集群 。

  • 您已配置 kubectl 以与 SAP BTP, Kyma runtime 实例交互,并且您可以访问 Kyma dashboard。请参见 为 Kyma 设置和配置 Kubectl 和 使用 Kyma Dashboard 访问您的 Kyma Runtime 实例 。

任务 1:使用 Kyma Dashboard 创建 Deployment

步骤

  1. 在 Kyma dashboard 中,转到 default 命名空间。

  2. Edit 区域中,如果在前面的练习中尚未启用,请启用 Isito sidecar 代理注入。

  3. 转到 Workloads → Deployments,然后选择 Create 按钮。 Kyma dashboard 中的 Deployments

  4. 指定 Deployment 的名称和容器的镜像。使用以下数据: | 字段 | 值 | | --- | --- | | Name | hello-kyma | | Docker image | ghcr.io/sap-samples/kyma-runtime-learning-journey/hello-kyma:1.0.0 | 创建 Deployment

  5. 切换开关,为 Deployment 启用 Istio sidecar 代理注入。

  6. 要查看 Deployment 清单,请选择 YAML 标签页。 查看 YAML

  7. 选择 Create 按钮。 您将自动重定向到 Deployment 详细信息视图。此视图包含有关所创建 Deployment 及关联 Pod 的详细信息。

  8. 查看所创建 Deployment 的详细信息。向下滚动到 Resource Graph 区域,观察所创建的 Deployment 以及受管的 ReplicaSet 和 Pod。 Kyma dashboard 显示名为 hello-kyma 的 Deployment 及其关联的 ReplicaSet 和 Pod。Resource Graph 区域可视化了 Deployment、ReplicaSet 和 Pod 之间的关系。

任务 2:使用 kubectl 更新并应用 Deployment 清单

步骤

  1. 要列出 default 命名空间中的所有 Deployment,请运行以下 kubectl 命令:

kubectl get deployments

输出中会显示您创建的 Deployment。 终端截图,显示命令 kubectl get Deployments 的输出。其中列出一个名为 hello-kyma 的 Deployment,1 个 Pod 已就绪、最新且可用,存在时间为 33 分钟。 2. 要获取 YAML 格式的 Deployment 清单,请运行以下命令:

kubectl get deployment hello-kyma -o yaml >> hello-kyma-deployment.yaml

注意

在本任务中,您使用 kubectl 下载 Deployment 清单并在本地编辑它。虽然您可以使用 Kyma dashboard 编辑 Deployment 清单,但强烈建议从持久化文件应用更改,并将所有清单纳入版本控制。Kyma dashboard 无法做到这一点。

  1. 转到您的工作目录,打开 *hello-kyma-deployoment.yaml* 文件。 名为 hello-kyma 的 Kubernetes Deployment(一个副本)的 YAML 配置。它指定了滚动更新策略、资源限制,并使用来自 ghcr.io/sap-samples/kyma-runtime-learning-journey 的镜像。

  2. 要更新 Deployment 以使用新版本的应用程序,请将当前容器镜像更改为新版本,并设置 change-cause 以记录该更改。

  3. template.spec.containers.image 字段中添加以下镜像:ghcr.io/sap-samples/kyma-runtime-learning-journey/hello-kyma:1.1.0

  4. spec.template.metadata 区域中添加以下注解:

annotations:
kubernetes.io/change-cause: Upgrade to new release v1.1.0

Deployment 升级 YAML 5. 保存文件。 6. 应用更新后的 Deployment 清单。

kubectl apply -f hello-kyma-deployment.yaml
  1. 要在 rollout history 中验证更新,请运行以下命令:

kubectl rollout history deployment hello-kyma

您还可以在 Kyma dashboard 的 Workloads → Deployments 区域中验证该 Deployment 已更新。

任务 3:扩缩 Deployment

步骤

  1. 要将 Deployment 扩缩到三个副本,请运行:

kubectl scale deployment hello-kyma --replicas=3

Kubernetes 会额外创建两个 Pod,因此现在有三个 Pod 正在运行。 2. 要验证 Deployment 已成功扩缩,请运行:

kubectl get deployment hello-kyma

如果成功,您将在响应中得到以下输出:

NAME         READY   UP-TO-DATE   AVAILABLE   AGE
hello-kyma   3/3     3            3           6m10s
  1. 要在 Kyma dashboard 中验证,请转到 Workloads → Deployments 并选择 hello-kyma Deployment。向下滚动到 Pod 列表。该列表包含三个 Pod。

任务 4:执行 Deployment 回滚

假设您部署了新的应用程序版本,但它未按预期工作。现在您可以将 Deployment 回滚到上一个版本。

步骤

  1. 要列出 rollout history,请运行:

kubectl rollout history deployment hello-kyma

您将得到 Deployment 的两个版本。 命令  的输出,显示 Deployment hello-kyma 的修订历史,其中包含两个修订版本及其 change cause。 2. 通过指定修订版本号来回滚 Deployment。

kubectl rollout undo deployment hello-kyma --to-revision=1

如果成功,您将看到以下输出:**deployment.apps/hello-kyma rolled back** 3. 再次列出 rollout history 以验证回滚。

kubectl rollout history deployment hello-kyma

您可以查看回滚是否成功。此外,修订版本的顺序已发生变化,并递增了 1。 命令  的输出,显示该 Deployment 的修订历史,其中包含修订版本 2 和 3 及其各自的 change cause。

结果

恭喜!您已完成本练习。现在,您可以创建、更新、扩缩和回滚 Deployment。