通过 Google Kubernetes Engine 使用 Google Cloud 服务

本文档介绍如何通过 Google Kubernetes Engine (GKE) 使用 Google Cloud 服务。通过在 GKE 中运行的应用使用 Cloud Storage 或 Cloud SQL 等 Google Cloud 服务时,您必须为您使用的服务配置环境。本文档介绍了常见架构模式及其相关任务,并提供了示例配置说明文档的链接。

目标

  • 配置服务帐号和密钥以使用 Google Cloud 服务。
  • 配置 Cloud SQL 代理 Docker 映像以使用 Cloud SQL 数据库。
  • 配置内部负载平衡以使用在 Compute Engine 虚拟机上运行的自定义服务。
  • 配置 NAT 网关以使用需要固定 IP 地址的外部服务。
  • 使用 Cloud Logging 记录应用日志。

了解常见任务

下图显示了通过 GKE 使用其他服务的常见架构模式。

通过 GKE 使用 GCP 服务的常见架构模式图

您可以通过完成以下任务来配置它们:

  • 为服务帐号分配适当的角色,并使用 Kubernetes secret 对象为应用提供相关密钥,以通过 Cloud API 使用 Cloud Storage 等 Google Cloud 服务。
  • 为服务帐号分配适当的角色,并使用辅助信息文件 pod 模式将 Cloud SQL 代理添加到您的 pod,以使用 Cloud SQL。
  • 配置内部负载平衡,以通过可扩缩的方式使用在 Compute Engine 虚拟机上运行的自定义服务。
  • 配置 NAT 网关,以使用需要固定 IP 地址的外部服务。
  • 让应用将日志消息写入标准输出 (stdout) 和标准错误 (stderr),以在 Logging 中记录应用日志。

以下部分包含配置步骤链接。

通过 Cloud API 使用 Google Cloud 服务

您可以使用服务帐号和密钥通过 Cloud API 来使用 Google Cloud 服务。Kubernetes 提供了 secret 资源类型,用于在集群内存储凭据并将这些凭据附加到应用 pod,如下图所示:

示意图,其中显示 Kubernetes “secret”对象中由多个 pod 访问的密钥

如需查看示例,了解如何从 GKE 中运行的应用使用 Pub/Sub,请参阅使用服务帐号向 Cloud Platform 进行身份验证。 您可以对其他 Google Cloud 服务(如 Cloud Storage、BigQuery、Datastore 和 Spanner)应用相同的步骤。但您必须为服务帐号和服务选择适当的角色,并且可能需要执行特定于每个服务的步骤。

此方法的一种例外情况是 Cloud SQL。对于该服务,您需要使用不同方法,因为 Cloud SQL 需要 Cloud SQL 代理客户端才能安全访问数据库,这在下一部分中进行介绍。

将 Cloud SQL 与 Cloud SQL 代理配合使用

要通过 GKE 中运行的应用访问 Cloud SQL 实例,请使用 Cloud SQL 代理 Docker 映像。将映像附加到应用 pod,以便您的应用可以在同一 pod 中使用 Cloud SQL 代理客户端。Cloud SQL 代理客户端可在您的应用和 Cloud SQL 实例之间安全传输数据,如下图所示:

示意图,其中显示应用与容器中的 Cloud SQL 代理通信,该容器接着使用安全连接与 Cloud SQL 进行通信

如需了解如何将 Cloud SQL 代理映像附加到应用 pod,请参阅 Cloud SQL:从 GKE 连接

通过内部负载平衡使用外部服务

如需通过 GKE 中运行的应用访问外部服务,请使用内部或外部名称服务,以便应用可以发现服务端点。如需了解三种用于配置名称服务的方法的说明,请参阅从集群内部连接到外部服务

如果外部服务在 Compute Engine 实例上运行,则建议通过内部负载平衡使外部服务冗余且可伸缩。下图演示了此方法。

示意图,其中显示容器中的应用与 Cloud Load Balancing 通信,该 Cloud Load Balancing 接着又与运行不同服务的多个 Compute Engine 实例通信

如需了解如何为运行 Compute Engine 实例的后端服务设置内部负载平衡,请参阅设置内部负载平衡

通过 NAT 网关使用外部服务

托管应用 pod 的虚拟机节点会从 GKE 中运行的应用发送出站数据包。虚拟机节点具有临时 IP 地址,可用作出站数据包的源 IP 地址。正因如此,应用的源 IP 地址可能会根据发送数据包的虚拟机节点而改变。因此,即使数据包是从同一应用发送的,外部服务也会收到来自多个来源 IP 地址的数据包。在正常情况下,这不是问题。但某些外部服务配置为仅接受来自单个来源的数据包,因此建议从一个固定的 IP 地址发送数据包。

在此情况下,您可以使用 Compute Engine 实例充当 NAT 网关。通过为 NAT 网关创建自定义路由规则,您可以通过一个固定的 IP 地址将数据包发送到外部服务,如下图所示:

示意图,其中显示 GKE 使用自定义路由与外部服务前面的 NAT 网关通信

如需了解详情,请参阅将 NAT 网关与 GKECloud NAT 结合使用。

您可以在使用专用集群时应用相同架构,其中虚拟机节点仅具有专用 IP 地址。在这种情况下,NAT 网关会接收来自专用子网的数据包,并使用单个公共 IP 地址将它们传输到外部服务。

使用 Cloud Operations for GKE 监控集群

Cloud Operations for GKE 旨在监控 Google Kubernetes Engine 集群。它同时管理 Cloud Monitoring 和 Cloud Logging。它还具有一个控制台,提供为 GKE 集群定制的信息中心。

如需详细了解 Cloud Operations for GKE,请参阅 Cloud Operations for GKE 概览

后续步骤