分布式云的工作原理

本页介绍了 Google Distributed Cloud 的运作方式,包括有关其基础设施、硬件、存储和网络功能的信息。

Google Distributed Cloud 由以下组件组成:

  • 分布式云基础架构。Google 会提供、部署和维护 Distributed Cloud 硬件,包括由专门的 Google 团队进行远程管理。
  • 分布式云服务。借助此服务,您可以使用 Google Cloud CLI 和 Distributed Cloud Edge Container API 管理 Distributed Cloud 集群和节点池。Distributed Cloud 集群已在您的舰队中注册,您可以使用 Kubernetes kubectl CLI 工具与之互动。

分布式云基础架构

Google 会提供、部署、运营和维护运行 Distributed Cloud 区域的专用硬件机架。此硬件由机架式服务器和两个架顶 (ToR) 交换机组成,可将服务器与本地网络互连。执行工作负载的 Distributed Cloud 节点专门在此硬件上运行。

硬件运行着许多分组到节点池中的节点,您可以将这些节点分配给 Distributed Cloud 区域中的集群。您可以配置网络,使在 Distributed Cloud 集群上运行的工作负载仅对本地用户可用,或可从互联网访问。您还可以配置网络,以仅允许分布式云节点使用本地资源或与工作负载(例如 Compute Engine 虚拟机 [VM] 实例和在虚拟私有云 [VPC] 网络中运行的 Kubernetes Pod)进行通信,方法是通过安全的 Cloud VPN 网络连接将 VPC 网络连接到 VPC 网络。

分布式云管理

分布式云节点不是独立资源,必须保持与 Google Cloud 的连接,以便进行控制平面管理和监控。Distributed Cloud 控制平面节点托管在指定的 Google Cloud 区域中。本地 Distributed Cloud 节点需要与 Google Cloud保持持续的网络连接。

Google 会远程管理构成 Distributed Cloud 安装的物理机和 ToR 交换机。这包括安装软件更新和安全补丁,以及解决配置问题。您的网络管理员还可以监控 Distributed Cloud 集群和节点的健康状况和性能,并与 Google 合作解决任何问题。

Google 成功在指定位置部署 Distributed Cloud 硬件后,集群管理员便可以开始配置 Distributed Cloud 集群,这与配置常规 Kubernetes 集群类似。他们可以将机器分配给节点池,将节点池分配给集群,并根据应用所有者的角色授予相应访问权限。不过,集群管理员必须注意 Distributed Cloud 机架中机器的处理和存储限制,并相应地规划集群和工作负载配置。

Distributed Cloud 提供用于配置集群和节点池的 API。

访问 Distributed Cloud 区域

您可以配置网络,以允许从本地网络和互联网对 Distributed Cloud 区域进行所需级别的访问。

您还可以通过将分布式云区域连接到 VPC 网络,授予该区域对Google Cloud 服务的访问权限。分布式云使用 Cloud VPN 连接到 Google 服务端点。您的网络管理员必须配置您的网络以允许此操作。

分布式云角色

以下角色会参与 Distributed Cloud 区域的部署和运营:

  • Google 现场技术人员。在您指定的位置交付、安装和激活 Distributed Cloud 硬件。您的网络管理员会与 Google 技术人员协作,将硬件连接到电源和网络。

  • Google 站点可靠性工程师 (SRE)。监控和管理分布式云硬件。这包括解决配置问题、安装补丁和更新,以及维护安全性。

  • 网络管理员。配置并维护分布式云硬件与本地网络之间的网络连接和访问权限控制。这包括配置路由和防火墙规则,以确保所有必需类型的网络流量可以在 Distributed Cloud 硬件 ( Google Cloud)、使用 Distributed Cloud 工作负载的客户端、内部和外部数据仓库等之间自由流动。网络管理员必须有权访问 Google Cloud 控制台,才能监控 Distributed Cloud 机器的状态。网络管理员还会配置分布式云网络功能

  • 集群管理员。 在组织内部署和维护 Distributed Cloud 集群。这包括为每个集群配置权限、日志记录和预配工作负载。集群管理员将节点分配给节点池,并将节点池分配给 Distributed Cloud 集群。集群管理员必须了解分布式云集群与传统 Kubernetes 集群之间的运维差异,例如分布式云硬件的处理和存储功能,以便正确配置和部署工作负载。

  • 应用所有者。负责开发和/或部署并监控在分布式云集群上运行的应用的软件工程师。在分布式云集群上拥有应用的应用所有者必须了解集群的大小和位置限制,以及在边缘部署应用的影响(例如性能和延迟时间)。

分布式云硬件

图 1 描绘了典型的分布式云配置。

图 1. 分布式云组件。
图 1. 分布式云组件。

分布式云安装的组件如下所示:

  • Google Cloud. Distributed Cloud 安装与 Google Cloud 之间的流量包括硬件管理流量、控制平面流量,以及流向 Google Cloud服务的 Cloud VPN 流量和您在其中运行的任何工作负载。如果适用,还可以包括 VPC 流量。

  • 互联网。分布式云安装与 Google Cloud之间的加密管理和控制平面流量通过互联网传输。Distributed Cloud 不支持代理互联网连接。

  • 本地网络。分布式云机架外部的本地网络,用于将对等互连边缘路由器连接到互联网。

  • 对等互连边缘路由器。与分布式云 ToR 交换机连接的本地网络路由器。根据您为分布式云安装选择的物理位置,对等互连边缘路由器可由您的组织或托管设施所有和维护。您必须将这些路由器配置为使用边界网关协议 (BGP) 与 ToR 交换机对等互连,并向分布式云硬件通告默认路由。您还必须配置这些路由器以及任何相应的防火墙,以允许 Google 的设备管理流量、Distributed Cloud 控制平面流量和 Cloud VPN 流量(如果适用)。

    您可以根据业务需求,按如下方式配置这些路由器:

    • 让 Distributed Cloud 节点通过使用公共网络地址转换 (NAT) 或直接公开到公共 IP 地址来访问互联网。
    • 允许 VPN 连接到您的 VPC 网络和任何所需的Google Cloud 服务。
  • 架顶 (ToR) 交换机。连接机架内机器并与本地网络连接的第 3 层交换机。这些交换机是 BGP 扬声器,可处理分布式云机架与本地网络设备之间的网络流量。它们使用链路聚合控制协议 (LACP) 捆绑包连接到对等边缘路由器。

  • 机器。运行 Distributed Cloud 软件并执行工作负载的物理机器。 每台物理机都是分布式云集群中的一个节点。

分布式云服务

Distributed Cloud 服务在 Google Cloud 上运行,并充当在 Distributed Cloud 硬件上运行的节点和集群的控制平面。Distributed Cloud 必须能够随时连接到Google Cloud ,否则无法正常运行。

此控制平面可实例化并配置您的 Distributed Cloud 可用区。您的 Distributed Cloud 硬件连接以进行管理的特定 Google 数据中心是根据其与 Distributed Cloud 安装位置的距离来选择的。

Distributed Cloud 可用区包含的机器数量与安装在 Distributed Cloud 机架中的物理机器数量相同。您可以将这些实例化为 Kubernetes 节点的机器分配给节点池,并将节点池分配给分布式云集群。

图 2 展示了分布式云实体的逻辑组织。

图 2.分布式云实体。
图 2. Distributed Cloud 实体。

实体如下:

  • Google Cloud region. 分布式云区域的Google Cloud 区域由最靠近分布式云安装的 Google 数据中心的位置决定。

  • Kubernetes 云控制平面。每个 Distributed Cloud 集群的 Kubernetes 控制平面默认在 Google 数据中心内远程运行,该数据中心位于 Distributed Cloud 集群所分配到的 Google Cloud 区域。这样一来,Distributed Cloud 就可以受益于安全且高度可用的控制平面,而不会占用 Distributed Cloud 物理机上的处理能力。

  • Kubernetes 本地控制平面。从 Google Distributed Cloud 1.5.0 版开始,您可以选择将 Distributed Cloud 集群配置为使用本地控制平面,而不是默认的云控制平面。当与Google Cloud 的连接暂时中断时,本地控制平面集群可以进入生存模式,从而使工作负载能够继续运行,直到连接恢复。如需了解详情,请参阅可维护性模式

  • 分布式云区域。一种逻辑抽象,表示安装在 Distributed Cloud 机架中的 Distributed Cloud 硬件。 一个 Distributed Cloud 可用区包含一个机架的 Distributed Cloud 硬件。相应地区中的物理机会在 Google Cloud 控制台中实例化为 Distributed Cloud 机器。Distributed Cloud 可用区中的机器共享单个网络结构或单个故障域。Google 会在交付 Distributed Cloud 硬件之前创建机器。您无法创建、删除或修改 Distributed Cloud 机器。

  • 节点。节点是一种 Kubernetes 资源,可在您创建节点池时将 Distributed Cloud 实体机器实例化到 Kubernetes 领域中,从而通过将节点池分配给 Distributed Cloud 集群来运行工作负载。每个节点的 Kubernetes 控制平面都在 Google Cloud上运行。

  • 节点池。单个 Distributed Cloud 可用区内 Distributed Cloud 节点的逻辑分组,可让您将 Distributed Cloud 节点分配给 Distributed Cloud 集群。

  • 集群。由控制平面和一个或多个节点池组成的 Distributed Cloud 集群。

  • VPN 连接。指向在Google Cloud 项目中运行的 VPC 网络的 VPN 隧道。通过此隧道,您的分布式云工作负载可以访问连接到相应 VPC 网络的 Compute Engine 资源。您必须先在可用区中创建至少一个节点池,然后才能创建 VPN 连接。

存储

Distributed Cloud 在 Distributed Cloud 机架中为每台物理机提供 3.3 TiB 的存储空间。此存储空间配置为 Linux 逻辑卷。创建集群时,Distributed Cloud 会创建一个或多个 PersistentVolume,并将其公开为块卷,您可以使用 PersistentVolumeClaims 将其分配给工作负载。请注意,这些 PersistentVolume 不提供数据持久性,仅适用于临时数据。如需了解如何使用块卷,请参阅请求原始块卷的 PersistentVolumeClaim

存储安全

Distributed Cloud 使用 LUKS 加密本地机器存储空间,并支持客户管理的加密密钥 (CMEK)。如需了解详情,请参阅安全性方面的最佳实践

Symcloud Storage 集成

您可以将 Distributed Cloud 配置为使用 Rakuten Symcloud Storage,该存储空间充当每个 Distributed Cloud 节点上的本地存储抽象层,并使其本地存储空间可供在其他 Distributed Cloud 节点上运行的工作负载使用。

如需了解详情,请参阅为 Symcloud Storage 配置 Distributed Cloud

网络

本部分介绍了 Distributed Cloud 的网络连接要求和功能。

在将 Distributed Cloud 硬件寄送给您之前,Google 会为您的安装预配置部分 Distributed Cloud 虚拟网络组件。硬件交付后,您将无法修改预配置的设置。

图 3 描绘了分布式云虚拟网络的拓扑。

图 3. Distributed Cloud 网络组件。
图 3. Distributed Cloud 网络组件。

分布式云虚拟网络的组成部分如下:

  • 网络。在分布式云区域中具有专用地址空间的虚拟网络。网络在第 3 层与地区内的其他虚拟网络隔离,并且可以包含一个或多个子网。 虚拟网络覆盖分布式云机架中的所有物理机。单个分布式云可用区最多支持 20 个网络。

  • 子网。分布式云网络中的第 2 层和第 3 层 VLAN 子网。子网有自己的广播网域和一个或多个您选择的 IPv4 地址范围。同一网络中的子网在第 2 层上是隔离的,但可以通过第 3 层相互通信。同一网络中不同子网上的节点可以使用其 IP 地址相互通信。不过,不同网络中子网上的节点无法相互通信。

  • 路由器。一种虚拟路由器实例,用于管理分布式云网络内的流量。您的网络管理员使用路由器在分布式云网络与本地网络之间的互联附件上配置 BGP 对等互连会话,以便分布式云 Pod 可以在本地网络上通告其网络前缀。默认情况下,路由器会重新通告从分布式云子网收到的路由。Distributed Cloud 支持每个网络一个路由器。

  • 互连。分布式云网络与本地网络之间的捆绑逻辑链路。互连由一个或多个物理链路组成。在初始启动期间,Google 会创建您在订购 Distributed Cloud 时请求的互联。分布式云机架启动并运行后,无法再创建、修改或移除互连。默认情况下,Google 会创建四个互连,以确保安装的高可用性。

  • 互连连接。互连与路由器之间的虚拟链路,用于将相应的 Distributed Cloud 网络与本地网络隔离开。流经互连连接的流量可以是不带标记的,也可以使用您选择的 VLAN ID 进行标记。您可以根据业务需求创建互联附件。

分布式云网络组件与其 Google Cloud 等效组件类似,但存在以下差异:

  • Distributed Cloud 网络组件位于实例化它们的 Distributed Cloud 可用区中。

  • 分布式云网络无法直接连接到 VPC 网络。

  • 默认情况下,分布式云网络在不同的分布式云区域之间没有连接。您可以选择显式配置跨可用区网络。

您的网络管理员会配置 Distributed Cloud 网络组件(互连除外),Google 会在将 Distributed Cloud 硬件运送给您之前配置互连。

网络管理员必须在目标 Google Cloud 项目上拥有 Edge Network Admin 角色 (roles/edgenetwork.admin),而要在 Distributed Cloud 上部署工作负载的应用开发者必须在目标 Google Cloud 项目上拥有 Edge Network Viewer 角色 (roles/edgenetwork.viewer)。

与本地网络的连接

对于流向本地网络上资源的出站流量,分布式云集群中的 Pod 会使用对等边缘路由器通告的默认路由。Distributed Cloud 使用其内置 NAT 将 Pod 连接到这些资源。

对于来自本地网络上资源的入站流量,网络管理员必须配置符合业务要求的路由政策,以控制对每个 Distributed Cloud 集群中 Pod 的访问权限。这意味着,您至少需要完成防火墙配置中的步骤,并根据工作负载的需要配置其他政策。例如,您可以为分布式云中内置负载均衡器公开的各个节点子网络或虚拟 IP 地址设置允许/拒绝政策。Distributed Cloud Pod 和 Distributed Cloud Service CIDR 地址块无法直接访问。

互联网连接

对于流向互联网上资源的出站流量,分布式云集群中的 Pod 会使用路由器通告给分布式云 ToR 交换机的默认路由。这意味着,您至少需要完成防火墙配置中的步骤,并根据工作负载的需要配置其他政策。Distributed Cloud 使用其内置的 NAT 将 Pod 连接到这些资源。您可以选择在 Distributed Cloud 的内置 NAT 层之上配置自己的 NAT 层。

对于入站流量,您必须根据业务需求配置 WAN 路由器。这些要求决定了您需要从公共互联网向分布式云集群中的 Pod 提供何种级别的访问权限。分布式云会针对 Pod CIDR 地址块和服务管理 CIDR 地址块使用其内置 NAT,因此这些 CIDR 地址块无法从互联网访问。

与 VPC 网络的连接

Distributed Cloud 包含内置的 VPN 解决方案,可让您将 Distributed Cloud 集群直接连接到 VPC 实例(如果该实例与 Distributed Cloud 集群位于同一Google Cloud 项目中)。

如果您使用 Cloud Interconnect 将本地网络连接到 VPC 实例,则分布式云集群可以使用标准的北向 eBGP 对等互联来访问该实例。对等互连边缘路由器必须能够访问相应的 VPC 前缀,并且 Cloud Interconnect 路由器必须正确通告 Distributed Cloud 前缀,例如 Distributed Cloud 负载均衡器、管理和系统子网。

在分布式云集群与 VPC 网络之间建立 VPN 连接后,默认情况下会应用以下连接规则:

  • 您的 VPC 网络可以访问分布式云集群中的所有 Pod。
  • 分布式云集群中的所有 Pod 都可以访问 VPC 原生集群中的所有 Pod。对于基于路由的集群,您必须手动配置自定义通告路由
  • 分布式云集群中的所有 Pod 都可以访问 VPC 网络中的虚拟机子网。

与 Google Cloud API 和服务的连接

配置与 VPC 网络的 VPN 连接后,在 Distributed Cloud 安装上运行的工作负载可以访问 Google Cloud API 和服务。

如果您的业务需求需要,您还可以配置以下功能:

网络安全

您的业务需求和组织的网络安全政策决定了保护 Distributed Cloud 安装进出网络流量所需的步骤。如需了解详情,请参阅安全性方面的最佳实践

其他网络功能

Distributed Cloud 支持以下网络功能:

高性能网络支持

Distributed Cloud 支持执行需要尽可能最佳网络性能的工作负载。为此,Distributed Cloud 随附一个专门的网络功能运算符和一组 Kubernetes 自定义资源定义 (CRD),用于实现高性能工作负载执行所需的功能。

Distributed Cloud 还支持使用 SR-IOV 虚拟化网络接口。

虚拟机工作负载支持

除了容器之外,Distributed Cloud 还可以在虚拟机中运行工作负载。如需了解详情,请参阅管理虚拟机

如需了解虚拟机如何成为 Google Distributed Cloud 平台的重要组成部分,请参阅扩展 GKE Enterprise 以管理本地边缘虚拟机

GPU 工作负载支持

分布式云可以在 NVIDIA Tesla T4 GPU 上运行基于 GPU 的工作负载。订购 Distributed Cloud 硬件时,您必须指定此要求。如需了解详情,请参阅管理 GPU 工作负载

后续步骤