Anthos - 网络环境(第四部分)

145 阅读7分钟

Anthos多集群网络

本节介绍了连接多个集群上运行的服务的机制。

根据定义,每个混合和多云Anthos架构都有一个以上的集群。例如,你有运行在GCP中的Anthos GKE集群和运行在企业内部数据中心的Anthos GKE on-prem集群。在Anthos集群上运行的服务通常需要与在其他Anthos集群上运行的服务进行网络连接。

对于多集群服务的联网,我们来看看以下几种情况:

  1. GCP上的多集群联网--在这种架构中,所有服务都在GCP中的多个Anthos GKE集群上运行。
  2. 混合和多云环境下的多集群联网--在这种架构下,服务在混合和多云环境下的多个Anthos GKE集群上运行。

GCP上的多集群联网

云原生企业可以在GCP上运行Anthos平台。这可以是在一个地区的单一集群上。通常情况下,Anthos平台由多个集群组成,并在多个地区进行弹性处理。

在GCP中,我们建议使用具有多个服务项目的共享VPC模式。其中一个服务项目属于platform_admins组,包含构成Anthos平台的所有Anthos GKE集群。这些集群上的资源由多个租户共享。我们也推荐使用VPC本地集群。VPC本地集群使用VPC IP地址作为Pod IP,允许多个集群之间的Pod直接连接。

GCP上典型的Anthos平台架构看起来如下:


Anthos架构:单一环境


这种架构代表了一个单一的环境,例如本案例中的生产环境。

有一个名为project-0-nethost-prod的网络主机项目,负责管理共享VPC。有两个服务项目,一个是平台管理员项目,名为project-1-platform_admins-prod,由平台管理员部署和管理Anthos平台;另一个是产品项目,名为project-2-product1-prod,存放与产品1相关的资源。在这个例子中,Anthos平台被部署在两个GCP区域,以提供区域冗余。你可以用两个以上的区域,甚至一个区域来创建同样的架构。每个区域内都有一个带有二级范围的子网。每个区域有两个分区的Anthos GKE集群。每个区域的多个集群提供集群和区域级别的弹性。你可以对每个区域的两个以上的集群使用同样的设计。所有集群都是VPC本地集群,允许Pod在集群之间进行连接。ASM安装在所有集群上,形成一个多集群服务网。ASM控制平面发现在所有集群中运行的服务和端点,并配置在每个Pod内运行的Envoy sidecar代理,提供与网状结构内运行的所有服务有关的路由信息。

每个租户或产品都有一个Kubernetes命名空间(在网状结构内的所有集群中)和一套策略的登陆区。租户只能在自己的命名空间内部署他们的服务。你可以在多个Anthos GKE集群中运行同一个服务,以获得弹性。这些服务被称为分布式服务。从所有其他实体的角度来看,分布式服务是一个单一的逻辑服务。在上图中,product1-service是一个有四个端点的分布式服务,每个端点在不同的集群中运行。ASM负责服务发现,而VPC本地集群允许L3/L4 Pod之间的连接。


Anthos GKE多集群网络


混合和多云环境下的多集群网络

除了GCP上的Anthos GKE之外,其他Anthos GKE集群都是以孤岛模式运行。这意味着集群内的Pod和服务所使用的IP地址在集群外是无法路由的。在这种情况下,你仍然可以连接在多个集群上运行的服务,要么在同一环境中,例如在企业内部数据中心运行的多个Anthos GKE集群,要么跨越多个基础设施环境,例如在GCP和企业内部数据中心环境中运行的Anthos GKE服务。

在混合或多云环境中连接多个Anthos GKE集群时,有三个方面需要考虑:

  1. 在多个集群上运行的Pod之间的网络连接。
  2. 跨越多个集群的服务发现。
  3. 在混合和多云架构的情况下,基础设施环境之间的连接。

网络连接

每个Anthos GKE集群都有一个负载平衡器。负载平衡器可以在安装时捆绑在一起,也可以手动配置。这些负载平衡器允许服务通过NodePort暴露给集群外的资源。每个服务得到一个虚拟的IP地址(服务VIP),它在网络中是可路由和可到达的。负载平衡器将流量路由到服务NodePort上的节点IP,并转发到所需端口的Pod IP。

在一个集群中运行的服务(和Pod)可以访问在另一个集群中运行的服务的服务VIP,它通过负载平衡器被路由到所需的Pod。


Anthos GKE混合多集群网络


Anthos集群也可以配置入站控制器。入站控制器是L7/HTTP负载均衡器,通常位于集群内部。输入控制器本身通过L3/L4负载均衡器暴露出来。这样,你可以使用一个VIP(Ingress VIP)来处理在同一集群上运行的多个服务。入站控制器根据入站规则行事,这些规则规定了流量在集群内的路由。


Anthos GKE混合多集群网络。入站


多集群服务发现

Anthos Service Mesh(ASM)用于多集群服务发现。ASM控制板被安装在每个集群中。ASM控制板从所有集群中发现服务和端点。这也被称为服务网。ASM控制板必须有对服务网内所有Anthos集群的Kubernetes API服务器的网络访问。ASM创建自己的服务注册表,这是一个服务及其相关端点(或Pod)的列表。

在GCP上的Anthos GKE中,如果使用VPC本地集群,Endpoints就是实际的Pod IP地址。流量通过VPC路由从Pod流向Pod。在非GCP的Anthos集群中,集群之间的流量会通过L7 Envoy代理。这个代理在每个Anthos集群中作为一个服务运行,称为istio-ingressgateway。istio-ingressgateway被配置为检查主机头并将流量路由到集群内的适当服务。


Anthos GKE混合多集群网络。Anthos服务网(ASM)


对于分布式服务,我们推荐使用ASM,它可以提供跨多个集群的服务发现和流量路由功能。

混合和多云连接

只要你能联系到Kubernetes API服务器和目标Anthos集群的外部公共负载均衡器,你就可以跨越多个基础设施环境连接运行在多个Anthos集群中的服务。

有三种主要的方式来连接基础设施环境:

  1. 云端互连- 云端互连通过高可用、低延迟的连接将企业内部网络延伸到谷歌的网络。你可以使用专用互连来直接连接到谷歌,或者使用合作伙伴互连来通过支持的服务提供商连接到谷歌。专用互连在你的企业内部网络和谷歌的网络之间提供直接的物理连接。
  2. 云VPN- 云VPN通过IPsec VPN连接将你的对等网络与你的虚拟私有云(VPC)网络安全连接。两个网络之间的流量由一个VPN网关进行加密,然后由另一个VPN网关进行解密。
  3. 公共互联网--多个环境下的Anthos平台可以通过公共互联网连接,而不需要使用云互联或VPN。在平台上运行的服务使用TLS/mTLS在公共互联网上连接。这种连接是在每个服务层面上使用Anthos Service Mesh(ASM)完成的,而不是在网络层面上。

请继续关注第五部分!