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

Google Distributed Cloud 纯软件版基于 Kubernetes,您可以将其部署在本地的 VMware 或裸金属服务器上。虽然 Distributed Cloud 在本地运行,但由于种种原因(包括监控和管理),我们将其设计为与 Google Cloud 建立永久连接。但是,如果由于任何原因导致与 Google Cloud 的连接中断(例如由于技术问题),您可能需要知道会发生什么。本文档概述了 Distributed Cloud 纯软件部署(在裸机或 VMware 上)中集群连接中断的影响,以及在此情况下可以使用的解决方法。

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

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

许可验证和计量

如果您已在 Google Cloud 项目中启用 Anthos API (anthos.googleapis.com),则在集群中运行的计量控制器会定期生成并刷新许可授权。断开连接的容忍度为 12 小时。此外,系统还需要通过连接来管理计量和结算。

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

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

集群生命周期

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

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

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

应用生命周期

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

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

日志记录和监控

可审核性可帮助您的组织满足其监管要求和合规性政策。Distributed Cloud 提供应用日志记录、Kubernetes 日志记录和审核日志记录,有助于确保可审核性。许多客户选择使用 Google 的 Cloud Logging Cloud Monitoring 来避免在本地管理日志记录和监控基础架构。其他客户喜欢将其日志集中到一个本地系统中进行聚合。为了支持这些客户,Distributed Cloud 支持与 Prometheus 等服务直接集成。在此模式下,与 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 和应用工作负载的监控数据 所有指标均可通过控制台和 Cloud Monitoring API 获取。 断开连接期间,系统不会更新 Cloud Monitoring 中的指标。 每个节点的 24h 或 6GiB 本地缓冲区(对于系统指标)和每个节点 1GiB 本地缓冲区(对于应用指标)。缓冲区填满或断开连接持续 24 小时后,系统会丢弃最早的条目 使用本地监控解决方案。
指标的提醒规则和分页 Cloud Monitoring 支持提醒。您可以为任何指标创建提醒。系统可以通过不同的渠道发送提醒。 断开连接期间,系统不会触发提醒。系统仅通过已发送到 Cloud Monitoring 的指标数据触发提醒。 使用本地监控和提醒解决方案。

配置和政策管理

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

Config Sync

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

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

Policy Controller

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

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

安全

本部分概述了安全功能(包括身份、身份验证、授权和密钥管理)在暂时断开与 Google Cloud的连接时会受到哪些影响。

身份、身份验证和授权

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

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

Secret 和密钥管理

Secret 和密钥管理是安全状况的重要组成部分。Distributed Cloud 在与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 在本地集群上运行,并且也会受到连接中断的影响,则在断开连接期间,无法进行 Secret 存储和密钥管理。 改用本地系统。
使用 Hashicorp Vault 和本地服务进行 Secret 和密钥管理 您可以将 Hashicorp Vault 配置为使用本地存储后端来处理 Secret,并使用本地密钥管理系统(例如硬件安全模块)。 与 Google Cloud 断开连接不会产生任何影响。 无限制 -

网络和网络服务

本部分介绍了本地集群的网络和网络服务,包括它们在暂时断开与Google Cloud的连接时会受到哪些影响。其中提供了有关负载均衡、Cloud Service Mesh 和其他网络服务的信息。

负载均衡

为了向用户公开在本地集群中托管的 Kubernetes 服务,您可以选择以下选项:

即使与Google Cloud断开连接,这些负载均衡选项仍能正常发挥作用。

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

Cloud Service Mesh

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

功能 连接期间的行为 暂时断开连接行为 对断开连接的最大容忍度 连接丢失的解决方法
部署或更新政策(路由、授权、安全、审核等) 您可以使用控制台、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 日志记录工具。该行为取决于您为本地集群配置日志记录的方式。 取决于您是如何为本地集群配置日志记录的。 - -
入站流量网关 您可以使用 Istio 入站流量网关定义外部 IP。 无影响 无限制 -
Istio 容器网络接口 (CNI) 您可以将 Cloud Service Mesh 配置为使用 Istio CNI(而不是 iptables)来管理流量。 无影响 无限制 -
适用于 Web 应用的 Cloud Service Mesh 最终用户身份验证 您可以使用 Cloud Service Mesh 入站流量网关(通过 OIDC)与自己的身份提供方集成,从而对属于网格一部分的 Web 应用中的最终用户进行身份验证和授权。 无影响 无限制 -

其他网络服务

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

Google Cloud Marketplace

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

支持

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

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