GDC 中的容器工作负载

此概览页面介绍了 Google Distributed Cloud (GDC) 空气隔离 Kubernetes 集群中容器工作负载的运行模式。GDC 提供了一种托管式 Kubernetes 服务,支持在 Google Kubernetes Engine (GKE) 上广泛使用和支持的 Kubernetes 原生容器应用。

本页面适用于应用运维人员群组中的开发者,他们负责管理组织的应用工作负载。如需了解详情,请参阅 GDC 气隙环境文档的受众群体

适用于断开连接的环境的 Kubernetes 应用

GKE on GDC 是一项托管式 Kubernetes 服务,默认情况下会将许多 GKE 功能纳入您的 GDC 环境。借助此服务,您无需自行安装、升级、集成和运行开源 Kubernetes。您可以像操作和维护任何其他声明性且幂等的 Kubernetes 产品一样,使用标准 KRM API 来操作和维护所提供的 Kubernetes 发行版。同样,GKE on GDC 可通过 GDC 控制台、gdcloud CLI 和 Terraform 进行部署。如需详细了解 GDC Kubernetes 集群,请参阅 Kubernetes 集群概览。如需详细了解关键 Kubernetes 概念,请参阅 GKE 文档中的开始了解 Kubernetes

容器工作负载状态

GDC 中的容器会以以下形式部署到 Kubernetes 集群:

您可以根据容器工作负载的要求,在集群预配后扩缩 GDC Kubernetes 集群节点,以适应不断变化的计算需求。

Kubernetes 提供了多种内置工作负载资源,可用于实现您所需的容器应用状态。如需了解详情,请参阅 Kubernetes 工作负载文档。

无状态工作负载

无状态工作负载是指不将数据或应用状态存储到 Kubernetes 集群或永久性存储空间的应用。相反,该应用将数据和应用状态保留在客户端,从而使无状态应用更具可伸缩性。例如,前端应用可以是无状态的:您可以部署多个副本来提高其可用性,也可以在需求较低时缩减副本,并且副本无需具有唯一标识。

Kubernetes 使用 Deployment 资源将无状态应用部署为统一且非唯一的 Pod。Deployment 会管理应用的“所需状态”,例如:

  • 用于运行应用的 Pod 数量。
  • 要运行的容器映像的版本。
  • Pod 的标签。

您可以通过更新 Deployment 资源的 Pod 规范来动态更改所需状态。

无状态应用与有状态工作负载相反,有状态工作负载使用永久性存储空间来保存数据和应用状态。

有状态工作负载

有状态工作负载是指将数据保存到永久性磁盘存储空间的应用,以供服务器、客户端和其他应用使用。供其他应用在其中保存并检索数据的数据库或键值对存储区就是一种有状态应用的示例。您必须为有状态应用预配持久性存储空间,以便应用使用。

Kubernetes 使用 StatefulSet 资源来部署有状态应用。StatefulSet 资源中的 Pod 不可互换:每个 Pod 都有一个唯一的标识符,无论将 Pod 安排在何处,这个标识符都保持不变。

有状态应用与无状态工作负载不同,在切换会话时,无状态工作负载不会将客户端数据保存到服务器。

容器的永久性存储

GDC 通过 PersistentVolumeClaim (PVC) 对象提供永久性块存储和文件存储。PVC 是由 Pod 对象引用的存储请求。Pod 是由一个或多个容器组成的群组,其中包含共享存储和网络资源。PVC 的生命周期独立于 Pod,因此可以持久存在,不受单个 Pod 的影响。

您可以为有状态工作负载动态预配永久性存储空间,以便按需创建底层卷。在 GDC 中,您可以通过创建以下预安装的 StorageClass 对象之一来配置动态预配:

  • standard-rwoReadWriteOnce (RWO) 块存储类别。该卷一次只能由一个节点访问。此存储类别的每秒输入/输出操作次数 (IOPS) 保证值和限制值为每 GiB 3 IOPS。

  • system-performance-rwoReadWriteOnce 性能块存储类别。 此存储类是性能更高的 RWO 存储版本,可保证 IOPS 并将 IOPS 限制为每 GiB 30 IOPS。

您还可以创建 VolumeSnapshot 对象,以便在特定时间点复制容器应用的存储卷,而无需创建全新的卷。例如,数据库管理员可以创建卷快照来备份数据库,然后再执行修改或删除操作。

后续步骤