工作负载部署概览

如需在 Google Kubernetes Engine (GKE) 集群上部署和管理容器化应用和其他工作负载,您可以使用 Kubernetes 系统创建 Kubernetes 控制器对象。这些控制器对象代表集群上运行的应用、守护程序和批量作业。

您可以使用 Kubernetes API 或使用 kubectl(通过 gcloud 安装的 Kubernetes 命令行界面)创建这些控制器对象。一般将所需 Kubernetes 控制器对象的表示法构建为 YAML 配置文件,然后将该文件用于 Kubernetes API 或 kubectl 命令行界面。

工作负载的类型

Kubernetes 提供了不同类型的控制器对象,它们对应您可以运行的不同类型的工作负载。某些控制器对象更适合表示特定类型的工作负载。以下部分说明了一些常见类型的工作负载以及您可以创建用于在集群上运行这些工作负载的 Kubernetes 控制器对象,包括以下各项:

  • 无状态应用
  • 有状态应用
  • 批处理作业
  • 守护进程

无状态应用

无状态应用不会保留其状态并且不会将数据保存到永久性存储空间,所有用户和会话数据都保留在客户端。

无状态应用的部分示例包括 Web 前端(例如 Nginx)、Web 服务器(例如 Apache Tomcat)及其他 Web 应用。

您可以创建 Kubernetes Deployment,以在集群上部署无状态应用。Deployment 创建的 pod 并不是唯一的,也不会保留它们的状态,因此可以简化无状态应用的扩缩和更新过程。

有状态应用

有状态应用要求保存或永久保存其状态。有状态应用使用永久性存储空间(例如永久性卷)保存数据,以供服务器或其他用户使用。

有状态应用的示例包括数据库(例如 MongoDB)和消息队列(例如 Apache ZooKeeper)。

您可以创建 Kubernetes StatefulSet,以部署有状态应用。StatefulSet 创建的 Pod 具有唯一标识符,可以安全有序地进行更新。

批处理作业

批处理作业代表有限、独立且通常并行的任务,这些任务将一直运行到终结。批处理作业的部分示例包括自动或计划的任务,例如发送电子邮件、渲染视频以及执行昂贵的计算。

您可以创建 Kubernetes Job,以在集群上执行和管理批处理任务。您可以指定在 Job 完成之前应完成任务的 Pod 数,以及应并行运行的最大 Pod 数。

守护进程

守护程序在分配的节点中持续执行后台任务,而无需用户干预。守护进程示例包括像 Fluentd 之类的日志收集器和监控服务。

您可以创建 Kubernetes DaemonSet,以在集群上部署守护进程。DaemonSet 在每个节点创建一个 Pod,您可以选择 DaemonSet 应部署的一个特定节点。

管理工作负载对象

您可以使用命令式和声明式方法创建、管理和删除对象。以下各部分介绍了这些方法以及可用于运用这些方法的如下工具:

命令式命令

利用命令式命令,您可以使用 kubectl 快速创建、查看、更新和删除对象。这些命令可用于执行一次性任务或更改集群中的活跃对象。命令式命令通常用于处理集群上已部署的活动对象。

kubectl 具有几个动词驱动型命令,可用于创建和修改 Kubernetes 对象。例如:

  • run:在集群中生成一个新对象。除非另外指定,否则 run 仅创建 Deployment 对象。run 还支持其他几个生成器
  • expose:创建一个新的 Service 对象,用于在一组添加了标签的 Pod 之间实现流量负载平衡。
  • autoscale:创建一个新的 Autoscaler 对象,用于自动横向扩缩控制器对象(例如 Deployment)。

命令式命令不需要您深入理解对象架构,也不需要配置文件。

命令式对象配置

命令式对象配置使用包含完全定义的对象定义的配置文件来创建、更新和删除对象。您可以将对象配置文件存储在源控制系统中,比起使用命令式命令,审核更改会更轻松。

您可以使用配置文件或包含配置文件的目录运行 kubectl applydeletereplace 操作。

声明式对象配置

声明式对象配置会处理本地存储的配置文件,但不要求明确定义要执行的操作,而是通过 kubectl 自动检测每个对象的操作。如果使用的是具有多个不同操作的配置文件目录,则它将非常有用。声明式对象管理需要您深入了解对象架构和配置文件。

您可以运行 kubectl apply,以声明方式创建和更新对象。apply 可读取整个活动对象、计算差异,然后通过向 API 服务器发送修补请求来合并这些差异,以更新对象。

控制台

使用 kubectl 或 API 部署工作负载后,您可以使用 Cloud Console 中的 GKE 工作负载菜单检查、管理和修改集群上运行的工作负载。

该菜单具有以下功能:

  • 您可以使用基于 YAML 的文本编辑器从网页浏览器修改活动对象
  • 您可以查看有关对象的详细信息,包括修订历史记录、最近的事件和活动,以及它代管的 Pod
  • 您可以轻松扩缩 Deployment、Job 和 StatefulSet
  • 您可以对 Deployment 执行自动扩缩和触发滚动更新,以及从操作菜单中手动扩缩 Deployment。
  • 您可以使用 Cloud Shell 检查、修改及删除任何对象。

API

您可以使用 GKE REST APIKubernetes API 以及 Google Cloud 客户端库以编程方式创建和管理工作负载。

配置文件

使用前面描述的任何方法部署工作负载时,GKE 都会向您的集群添加一个表示该对象的配置文件。

对象的活动配置可能与其本地文件有所差异YAML 最常用于创建和表示 Kubernetes 对象。此外,您也可以使用 JSON

如需详细了解 Kubernetes 对象规范、状态和 Kubernetes API,请参阅了解 Kubernetes 对象Kubernetes API 参考

检查活动配置

控制台

如需检查已部署对象的活动配置,请执行以下步骤:

  1. 访问 Cloud Console 中的 Google Kubernetes Engine“工作负载”菜单。

    访问“工作负载”菜单

  2. 选择所需的工作负载。

  3. 点击 YAML

gcloud

如需检查已部署对象的活动配置,请运行以下命令:

kubectl get [OBJECT_TYPE] [OBJECT_NAME] -o yaml

[OBJECT_TYPE] 可能是 deploymentstatefulsetjob 或其他对象类型。例如:

kubectl get deployment my-stateless-app -o yaml

后续步骤