与 Google Cloud 临时断开连接的影响

Google Kubernetes Engine (GKE) Enterprise 版是 Google Cloud 应用现代化改造平台。它基于 Kubernetes,可以通过 Google Distributed Cloud(VMware 和 Bare Metal 服务器)部署在 Google Cloud、其他云平台和本地。即使 GKE Enterprise 管理的集群在本地运行,由于种种原因(包括监控和管理),它设计为与 Google Cloud 建立永久连接。但是,如果由于任何原因(例如由于技术问题)导致与 Google Cloud 的连接中断,您可能需要知道会发生什么。本文档概述了 Google Distributed Cloud 纯软件部署(在 Bare Metal 或 VMware 上)中集群连接中断的影响,以及在此情况下可以使用的解决方法。

对于需要准备好应对计划外或强制的 Google Cloud 连接中断并了解其后果的架构师,此信息非常有用。但是,您不应计划将与 Google Cloud 断开连接的纯软件 Google Distributed Cloud 部署用作标称工作模式。请记住,我们设计 GKE Enterprise 是为了充分利用 Google Cloud 服务的可扩缩性和可用性。本文档介绍各种 GKE Enterprise 组件在临时服务中断期间的设计和架构。我们无法保证本文档详尽无遗。

本文档假定您熟悉 GKE Enterprise。如果您不熟悉它,我们建议您首先阅读 GKE Enterprise 技术概览

GKE Enterprise 许可验证和计量

如果您启用了 GKE Enterprise,这意味着您的 Google Cloud 项目(即正在集群中运行的 GKE Enterprise 计量控制器)已启用 Anthos API (anthos.googleapis.com),该 API 定期生成并刷新 GKE Enterprise 权益。断开连接的容忍度为 12 小时。此外,计量和结算通过连接进行管理。

下表列出了与 Google Cloud 暂时断开连接时许可和计量相关功能的行为。

功能 连接期间的行为 暂时断开连接期间的行为 对断开连接的最大容忍度 连接丢失的解决方法
GKE Enterprise 许可验证 只要在 Google Cloud 项目中启用了 anthos.googleapis.com,GKE Enterprise 计量控制器就会定期生成并刷新 GKE Enterprise 授权自定义资源。 使用授权自定义资源的组件支持宽限期:只要授权自定义资源是在宽限期内刷新,这些组件就会继续正常运行。 目前无限制。宽限期到期后,组件将开始记录错误。您无法再升级集群。
计量和结算 GKE Enterprise 计量控制器会出于结算目的向 Google Cloud Service Control API 报告集群的 vCPU 容量。 集群内代理在断开连接时会保留集群中的结算记录,而系统会在集群重新连接到 Google Cloud 后检索这些记录。 无限制。但是,为了满足“付费软件”的服务专用条款中规定的合规要求,必须提供 GKE Enterprise 计量信息。

集群生命周期

本部分介绍了各种场景,例如创建、更新、删除集群和调整集群大小,以及监控这些活动的状态。

在大多数情况下,您可以使用 bmctlgkectlkubectl 等 CLI 工具在暂时断开连接期间执行操作。您还可以使用这些工具监控这些操作的状态。重新连接后,Google Cloud 控制台会更新,以显示断开连接期间执行的操作的结果。

操作 连接期间的行为 暂时断开连接期间的行为 对断开连接的最大容忍度 连接丢失的解决方法
创建集群 您可以使用 bmctlgkectl CLI 工具创建集群。此操作需要连接到 Google Cloud。 您无法创建集群。
升级集群 您可以使用 bmctlgkectl CLI 工具升级集群。此操作需要连接到 Google Cloud。 您无法升级集群。
删除集群 您可以使用 bmctlgkectl CLI 工具删除集群。此操作不需要连接到 Google Cloud。 您可以删除集群。 无限制 -
查看集群状态 您可以在 Google Cloud 控制台的 Google Kubernetes Engine 集群列表中查看有关集群的信息。 集群信息未显示在 Google Cloud 控制台中。 无限制 使用 kubectl 直接查询集群并获取所需信息。
从集群中移除节点 从集群中移除节点不需要连接到 Google Cloud。 您可以从集群中移除节点。 无限制 -
向集群添加节点 为了正常工作,新节点会从 Container Registry 中拉取容器映像。系统会运行预检检查,以验证是否已与 Google Cloud 建立连接。 添加新节点时运行的预检检查会验证与 Google Cloud 的连接。因此,在断开连接时,您无法向集群添加新节点。

应用生命周期

管理本地集群中运行的应用基本上不受与 Google Cloud 临时断开连接的影响。只有 Connect Gateway 会受到影响。如果您是使用 Container RegistryArtifact RegistryCloud BuildCloud Deploy 在 Google Cloud 中管理容器映像或 CI/CD 流水线,它们在断开连接时将不再可用。如何处理这些产品断开连接的方法不在本文档的讨论范围内。

操作 连接期间的行为 暂时断开连接期间的行为 对断开连接的最大容忍度 连接丢失的解决方法
应用部署 通过 kubectl、CI/CD 工具或 Connect Gateway 在本地完成。 Connect Gateway 不可用。所有其他部署方法仍然有效,只要它们直接连接到 Kubernetes API 即可。 无限制 如果您使用的是 Connect Gateway,请改为在本地使用 kubectl
移除应用 通过 kubectl、CI/CD 工具或 Connect Gateway 在本地完成。 Connect Gateway 不可用。所有其他部署方法仍然有效,只要它们直接连接到 Kubernetes API 即可。 无限制 如果您使用的是 Connect Gateway,请改为在本地使用 kubectl
对应用进行横向扩容 通过 kubectl、CI/CD 工具或 Connect Gateway 在本地完成。 Connect Gateway 不可用。所有其他部署方法仍然有效,只要它们直接连接到 Kubernetes API 即可。 无限制 如果您使用的是 Connect Gateway,请改为在本地使用 kubectl

日志记录和监控

可审核性可帮助您的组织满足其监管要求和合规性政策。GKE Enterprise 提供应用日志记录、Kubernetes 日志记录和审核日志记录,有助于确保可审核性。许多客户选择利用 Google 的 Cloud LoggingCloud Monitoring 来避免在本地管理日志记录和监控基础架构。其他客户喜欢将其日志集中到一个本地系统中进行聚合。为了支持这些客户,GKE Enterprise 提供与以下服务的直接集成:PrometheusElasticSplunk 或 Datadog。在此模式下,与 Google Cloud 暂时断开连接期间,不会影响日志记录或监控功能。

功能 连接期间的行为 暂时断开连接期间的行为 对断开连接的最大容忍度 连接丢失的解决方法
基于 Cloud Logging 的应用日志记录 系统将日志写入 Cloud Logging。 日志会缓冲到本地磁盘。 每个节点 4.5h 或 4GiB 本地缓冲区。缓冲区填满或断开连接持续 4.5 小时后,最早的条目会被丢弃。 使用本地日志记录解决方案。
基于 Cloud Logging 的系统/Kubernetes 日志记录 系统将日志写入 Cloud Logging。 日志会缓冲到本地磁盘。 每个节点 4.5h 或 4GiB 本地缓冲区。缓冲区填满或断开连接持续 4.5 小时后,最早的条目会被丢弃。 使用本地日志记录解决方案。
基于 Cloud Audit Logs 的审核日志记录 系统将日志写入 Cloud Logging。 日志会缓冲到本地磁盘。 每个控制平面节点 10GiB 本地缓冲区。缓冲区填满后,最早的条目会被丢弃。 将日志转发到本地日志记录系统。
基于其他提供商的应用日志记录 您可以使用不同的第三方提供商,例如 Elastic、Splunk、Datadog 或 Loki。 无影响 无限制 -
基于其他提供商的系统/Kubernetes 日志记录 您可以使用不同的第三方提供商,例如 Elastic、Splunk 或 Datadog。 无影响 无限制 -
将应用和 Kubernetes 指标写入 Cloud Monitoring 系统会将这些指标写入 Cloud Monitoring。 指标会缓冲到本地磁盘。 每个节点的 24h 或 6GiB 本地缓冲区(对于系统指标)和每个节点 1GiB 本地缓冲区(对于应用指标)。缓冲区填满或断开连接持续 24 小时后,最早的条目会被丢弃 使用本地监控解决方案。
访问和读取来自 Kubernetes 和应用工作负载的监控数据 所有指标均可通过 Google Cloud 控制台和 Cloud Monitoring API 获取。 断开连接期间,Cloud Monitoring 中的指标不会更新。 每个节点的 24h 或 6GiB 本地缓冲区(对于系统指标)和每个节点 1GiB 本地缓冲区(对于应用指标)。缓冲区填满或断开连接持续 24 小时后,最早的条目会被丢弃 使用本地监控解决方案。
指标的提醒规则和分页 Cloud Monitoring 支持提醒。您可以为任何指标创建提醒。提醒可以通过不同的渠道发送。 断开连接期间不会触发提醒。仅通过已发送到 Cloud Monitoring 的指标数据触发提醒 使用本地监控和提醒解决方案。

配置和政策管理

借助 Config SyncPolicy Controller,您可以跨您的所有集群大规模管理配置和政策。将配置和政策存储到 Git 代码库后,它们会自动同步到您的集群。

Config Sync

Config Sync 使用集群内代理直接连接到 Git 仓库。您可以使用 gcloudkubectl 工具管理对代码库网址或同步参数的更改。

在临时断开连接期间,如果集群内代理仍然可以访问 Git 代码库,则同步不会受影响。但是,如果您使用 Google Cloud CLI 或 Google Cloud 控制台来更改同步参数,则它们在断开连接期间不会应用于集群。您可以使用 kubectl 在本地覆盖它们。重新连接时,任何本地更改都会被覆盖。

Policy Controller

Policy Controller 让您可以为集群强制执行完全可编程的政策。这些政策可作为一种“保障措施”,可防止任何更改违反您定义的安全性、运营或合规性控制措施。

操作 连接期间的行为 暂时断开连接期间的行为 对断开连接的最大容忍度 连接丢失的解决方法
从 Git 代码库同步配置 集群内代理直接连接到 Git 代码库。您可以使用 Google Cloud API 更改仓库网址或同步参数。 同步配置不受影响。如果您使用 gcloud 或在 Google Cloud 控制台中更改同步参数,则它们在断开连接期间不会应用于集群。您可以使用 kubectl 在本地覆盖它们。重新连接时,任何本地更改都会被覆盖。 无限制 切勿将 Fleet API 用于 Config Sync,并且只应使用 Kubernetes API 对其进行配置。
强制执行面向对 Kubernetes API 的请求的政策 集群内代理因与 Kubernetes API 相集成,因此会强制执行限制条件。您可以使用本地 Kubernetes API 管理政策,并可使用 Google Cloud API 管理 Policy Controller 的系统配置。 政策执行不受影响。政策仍使用本地 Kubernetes API 进行管理。使用 Google Cloud API 对 Policy Controller 系统配置进行的更改不会传播到集群,但您可以暂时在本地覆盖这些更改。重新连接时,任何本地更改都会被覆盖。 无限制 切勿将 Fleet API 用于 Policy Controller,并且只应使用 Kubernetes API 对其进行配置。
使用 Google Cloud API 安装、配置或升级 Config Sync 您可以使用使用 Google Cloud API 来管理集群内代理的安装和升级。您还可以使用此 API(或者 gcloud 或 Google Cloud 控制台)来管理这些代理的配置。 集群内代理会继续正常运行。您无法使用 Google Cloud API 安装、升级或配置集群内代理。使用 API 完成的任何待处理的安装、升级或配置会在重新连接后继续。 切勿将 Fleet API 用于 Policy Controller,并且只应使用 Kubernetes API 对其进行配置。
在 Google Cloud 控制台中查看系统或同步状态 您可以使用 Google Cloud API 或 Google Cloud 控制台查看集群内代理的运行状况和同步状态。 Google Cloud API 或 Google Cloud 控制台中的状态信息会过时。 该 API 显示连接错误。使用本地 Kubernetes API 时,每个集群的所有信息都可用。 使用 nomos CLI 或本地 Kubernetes API。

安全

身份、身份验证和授权

GKE Enterprise 可以直接连接到 Cloud Identity,以供应用和用户角色使用 Connect 管理工作负载,或使用 OIDC 进行端点身份验证。如果与 Google Cloud 断开连接,与 Cloud Identity 的连接也会断开,并且这些功能将不再可用。对于需要通过临时断开连接增强弹性的工作负载,您可以使用 GKE Identity Service 与 LDAP 或 OIDC 提供方(包括 ADFS),以配置最终用户身份验证。

功能 连接期间的行为 暂时断开连接期间的行为 对断开连接的最大容忍度 连接丢失的解决方法
将 Cloud Identity 作为身份提供商,使用 Connect Gateway 为了访问 GKE Enterprise 资源,您可以使用 Cloud Identity 作为身份提供方并通过 Connect Gateway 建立连接。 Connect Gateway 需要与 Google Cloud 连接。在断开连接期间,您无法连接到集群。 使用 GKE Identity Service 与其他身份提供方联合。
通过第三方身份提供商进行身份识别和身份验证 支持 OIDC 和 LDAP。首先使用 gcloud CLI 登录。对于 OIDC 提供商,您可以使用 Google Cloud 控制台登录。然后,您可以对集群 API 进行正常身份验证(例如,使用 kubectl)。 只要身份提供商仍可供您和集群访问,那么您仍然可以针对集群 API 进行身份验证。您无法通过 Google Cloud 控制台登录。您只能在本地更新集群的 OIDC 或 LDAP 配置,而不能使用 Google Cloud 控制台进行更新。 无限制 -
授权 GKE Enterprise 支持基于角色的访问权限控制 (RBAC)。角色可以分配给用户、群组或服务账号。可以从身份提供商检索用户身份和群组。 RBAC 系统是 Kubernetes 集群的本地系统,不会因断开与 Google Cloud 的连接而受到影响。但是,如果该系统依赖于来自 Cloud Identity 的身份,则在断开连接期间不可用。 无限制 -

Secret 和密钥管理

Secret 和密钥管理是安全状况的重要组成部分。GKE Enterprise 在与 Google Cloud 断开连接时的行为取决于您用于这些功能的服务。

功能 连接期间的行为 暂时断开连接期间的行为 对断开连接的最大容忍度 连接丢失的解决方法
使用 Cloud Key Management Service 和 Secret Manager 进行 Secret 和密钥管理 您可以直接将 Cloud Key Management Service 用于加密密钥,并将 Secret Manager 用于 Secret。 Cloud Key Management Service 和 Secret Manager 均不可用。 改用本地系统。
使用 Hashicorp Vault 和 Google Cloud 服务管理 Secret 和密钥 您可以将 Hashicorp Vault 配置为使用 Cloud Storage 或 Spanner 存储 Secret,并使用 Cloud Key Management Service 管理密钥。 如果 Hashicorp Vault 在 Anthos 集群上运行,并且也会受到连接中断的影响,则在断开连接期间,无法进行 Secret 存储和密钥管理。 改用本地系统。
使用 Hashicorp Vault 和本地服务进行 Secret 和密钥管理 您可以将 Hashicorp Vault 配置为使用本地存储后端来处理 Secret,并使用本地密钥管理系统(例如硬件安全模块)。 不会因与 Google Cloud 断开连接而受到影响。 无限制 -

网络和网络服务

负载均衡

为了向用户公开在本地集群中托管的 Kubernetes 服务,您可以选择使用提供的捆绑式负载均衡器(在 Bare Metal 上使用 MetalLB,在 VMware 上使用 SeesawMetalLB)或 GKE Enterprise 外部的负载均衡器。这两种方案在与 Google Cloud 断开连接时仍能正常发挥作用。

功能 连接期间的行为 暂时断开连接期间的行为 对断开连接的最大容忍度 连接丢失的解决方法
L4 捆绑式负载均衡器 完全在本地提供 L4 负载均衡,不依赖于 Google Cloud API 或网络。 没有变化 无限制 -
手动或集成式负载均衡器 支持 F5 BIG-IP 及其他在本地托管的负载均衡器。 没有变化 无限制 -

Cloud Service Mesh

您可以使用 Cloud Service Mesh 来管理、观察和保护在本地集群中运行的服务之间的通信。并非所有 Cloud Service Mesh 功能都受 Google Distributed Cloud 支持:如需了解详情,请参阅支持的功能列表

功能 连接期间的行为 暂时断开连接期间的行为 对断开连接的最大容忍度 连接丢失的解决方法
部署或更新政策(路由、授权、安全、审核等) 您可以使用 Google Cloud 控制台、kubectlasmcliistioctl 来管理 Cloud Service Mesh 政策。 您只能使用 kubectlistioctl 来管理 Cloud Service Mesh 政策。 无限制 使用 kubectlistioctl
证书授权机构 (CA) 您可以使用集群内 CA 或 Cloud Service Mesh 证书授权机构来管理 Cloud Service Mesh 使用的证书。 使用集群内 CA 时没有影响。
如果您使用的是 Cloud Service Mesh 证书授权机构,则证书将在 24 小时后过期。新服务实例无法检索证书。
对于集群内 CA 无限制。
对于 Cloud Service Mesh 证书授权机构,24 小时内服务降级,24 小时后无服务。
使用集群内 CA。
适用于 Cloud Service Mesh 的 Cloud Monitoring 您可以使用 Cloud Monitoring 来存储、探索和利用来自 Cloud Service Mesh 的 HTTP 相关指标。 系统不会存储指标。 使用兼容的本地监控解决方案,例如 Prometheus。
Cloud Service Mesh 审核日志记录 Cloud Service Mesh 依靠本地 Kubernetes 日志记录工具。该行为取决于您为 GKE Enterprise 集群配置日志记录的方式。 取决于您为 GKE Enterprise 集群配置日志记录的方式。 - -
入站流量网关 您可以使用 Istio 入站流量网关定义外部 IP。 无影响 无限制 -
Istio 容器网络接口 (CNI) 您可以将 Cloud Service Mesh 配置为使用 Istio CNI(而不是 iptables)来管理流量。 无影响 无限制 -
适用于 Web 应用的 Cloud Service Mesh 最终用户身份验证 您可以使用 Cloud Service Mesh 入站流量网关(通过 OIDC)与自己的身份提供方集成,从而对属于网格一部分的 Web 应用中的最终用户进行身份验证和授权。 无影响 无限制 -

其他网络服务

功能 连接期间的行为 暂时断开连接期间的行为 对断开连接的最大容忍度 连接丢失的解决方法
DNS Kubernetes DNS 服务器在集群内运行。 Kubernetes DNS 服务与在集群内部运行时一样仍能正常工作。 无限制 -
出站代理 您可以将 GKE Enterprise 配置为使用代理进行出站连接。 如果您的代理在本地运行,GKE Enterprise 仍然能够在暂时断开连接期间使用该代理。但是,如果代理丢失与 Google Cloud 的连接,则本文档中的所有场景仍然适用。 无限制 -

Google Cloud Marketplace

功能 连接期间的行为 暂时断开连接期间的行为 对断开连接的最大容忍度 连接丢失的解决方法
从 Cloud Marketplace 中部署和管理应用及服务 Cloud Marketplace 位于 Google Cloud 控制台中,您可以使用它来发现、获取和部署解决方案。 您无法使用 Cloud Marketplace。Cloud Marketplace 中的某些解决方案可能有自己的连接要求,这里未记录这些要求。

支持

本部分介绍您就 GKE on GDC 集群相关问题与 Google Cloud 支持团队或运营合作伙伴互动时,可能会遇到的一些场景。

功能 连接期间的行为 暂时断开连接期间的行为 对断开连接的最大容忍度 连接丢失的解决方法
与支持团队共享集群快照 您可以使用 bmctl check clustergkectl diagnose snapshot 命令在本地创建集群快照,并可通过正常支持流程共享此快照。 您仍然可以生成快照,因为它属于一项本地操作。如果您无法访问 Google Cloud 及其支持 Web 界面,则可以致电支持团队,前提是您已订阅增强型或高级支持服务方案。 无限制 -
与支持团队共享相关日志数据 您可以在本地从集群中收集日志,并通过正常支持流程共享这些日志。 您仍然可以从集群中收集日志。如果您无法访问 Google Cloud 及其支持 Web 界面,则可以致电支持团队,前提是您已订阅增强型或高级支持服务方案。 无限制 -