架构

集群架构

Google Distributed Cloud (GDC) 经过网闸隔离的设备运行一个集群,该集群包含其所有三个裸机节点,称为组织基础架构集群。专用管理 API 服务器,以 pod 工作负载的形式在集群上运行,托管管理平面 API。用户工作负载(包括虚拟机和 Kubernetes pod)可以在此集群上运行。此集群模型中没有用户集群。

网络架构

EL8000 包含一个背板,可在设备内部创建四个单独的第 2 层 (L2) 网络:

  1. 集成式 Lights-Out (iLO) 控制台 (1GbEth)
  2. 管理网络 (1GbEth)
  3. 数据网络 A (10GbEth)
  4. 数据网络 B (10GbEth)

下图展示了 L2 网络如何连接到 Mellanox 交换机 (https://www.hpe.com/psnow/doc/a00043975enw.html?jumpid=in_pdp-psnow-qs)。刀片中的每个网络都连接到单个网络交换机。每个服务器刀片中的所有 iLO 控制台网络都连接到网络交换机 1。管理网络连接到网络交换机 2,数据网络连接到交换机 3 和 4。

连接到交换机的第 2 层网络

客户网络端口(15 和 17)有权访问集群 (VLAN 100),并且仅允许流向 Ingress CIDR 的流量。入站 CIDR 可用于服务,并且通过边界网关协议 (BGP) 将该范围通告给客户网络。

管理网络端口(16 和 18)可访问系统管理 (VLAN 501),以便客户将设备连接到更广泛的网络,并仅使用本地连接来执行系统管理任务。

较低的网络拓扑

物理网络

GDC 由以单租户模式运行的混合集群组成。混合集群(我们称之为基础架构集群)由系统集群和管理员集群合并而成:

物理网络

物理设计以 Mellanox SN2010 为中心,该设备充当设备基础架构集群与外部客户网络之间的网关。

基础架构集群由 3 个裸金属节点 (BM) 组成。BM 上的连接可分为以下几类:

  • 数据网络连接(子网 198.18.2.0/24),通过 VLAN 100 实现。 BM 有一个具有 2 个端口(NIC0P1NIC0P2)的 NIC,这两个端口已绑定并连接到 TOR 交换机。BM1BM2 直接连接到交换机,而 BM3 通过非受管交换机连接到 TOR。
  • 管理网络连接(子网 198.18..0/24)通过 VLAN 501 实现。 ILO 和 MGMT 接口通过此 VLAN 使用 1G 接口连接。BM 节点上的 ILO 接口和 MGMT 接口使用非受管交换机连接到交换机。
  • 可能:在 VLAN 200-203 上添加 OTS 网络(?),子网 198.18.1.x

从 Mellanox 交换机到客户路由器的连接提供外部连接。此连接使用 10G 接口,并使用 BGP 协议向客户通告外部网络 IP。 客户使用外部 IP 地址来访问设备单元提供的必要服务。

逻辑网络

有两个虚拟局域网 (VLAN) 用于分隔各种流量:

  1. VLAN 100:集群(入口虚拟网际协议地址 [VIP]、集群/节点 IP),IPv4 子网由客户提供。
  2. VLAN 501:管理 (iLO、Mgmt),具有客户提供的 IPv4 子网。

逻辑网络

上层网络拓扑

集群配置为使用第 2 层 (L2) 负载均衡。集群的 Ingress VIP 地址与节点位于同一子网中。当 Ingress VIP 分配给某个节点时,该节点会使用地址解析协议 (ARP),以便从 TOR 访问该节点。

TOR 使用 BGP 与客户网络对等互联,并向客户网络通告集群的 Ingress 范围(客户提供的聚合前缀)。当机架移至新位置时,我们可以向新的客户网络宣传集群 Ingress 范围。当机架移至新位置时,您必须手动更新连接到客户网络的 TOR 接口上的 IP 地址,并更新 BGP 对等互连信息以添加新的 BGP 对等体。

集群使用的所有 IP 要么是从机架的 externalCidrBlock 中分配的,要么是硬编码的(对于集群内部 IP)。在下图中,externalCidrBlock 示例为 10.0.0.0/24

集群使用 L2 LB (ARP) 来通告 10.0.0.224。

集群 IP 范围

在裸金属集群中,需要配置多个 IP 地址范围。

  • Pod CIDR:用于为集群中的 Pod 分配 IP 的 IP 范围。此范围使用孤岛模式,因此物理网络 (ToR) 不需要知道 Pod CIDR。唯一的要求是,该范围不得与集群 pod 需要访问的任何服务重叠。创建集群后,无法更改 Pod CIDR。
  • 服务 CIDR:用于内部集群服务,与 Pod CIDR 的要求相同。
  • 节点 CIDR:Kubernetes 集群节点的 IP 地址。创建集群后,这些地址也无法更改。
  • 入站流量范围:用于集群中任何对外公开的服务的 IP 地址范围。外部客户端使用这些 IP 地址来访问集群内服务。此范围需要通告给客户网络,以便客户端可以访问 Ingress IP。
  • 控制平面 VIP:由集群通告,用于访问 Kubernetes api-server(类似于 Ingress VIP)。当集群处于 L2 负载均衡模式时,此 VIP 必须与节点位于同一子网中。

集群的 Pod CIDR 和 Service CIDR 是硬编码的。Pod CIDR 为 192.168.0.0/16,Service CIDR 为 10.96.0.0/12。由于这些 IP 不会暴露在集群外部,因此集群使用相同的两个 CIDR。

节点预配的 IP 地址来自 GDC cell.yaml 中设置的 externalCidrBlock。这些 IP 地址由客户在机架配置之前提供。

集群的 Ingress 范围和控制平面 VIP 也从 externalCidrBlock 中分配。TOR 必须向客户网络通告 externalCidrBlock,以便机架外部的客户端可以访问这些 VIP。