Cloud Service Mesh on GKE 的扩缩限制

本文档介绍了 GKE 上托管式 Cloud Service Mesh 架构的控制平面扩缩限制,以便您就部署做出明智的决策。

概览

Cloud Service Mesh 在 GKE 上的可伸缩性取决于其两个主要组件(数据平面和控制平面)的有效运作。本文档重点介绍控制平面的扩缩限制。如需了解数据平面可扩缩性最佳实践,请参阅可扩缩性最佳实践

文档中记录的一些扩缩限制是通过配额限制强制执行的。超出这些限制时,您需要提交配额增加申请。其他限制不会被严格强制执行,但如果超出限制,可能会导致行为和性能未定义。

如需了解 Istio 资源如何转换为 Google Cloud 资源,请先参阅了解 API 资源指南。

服务扩缩限制

服务扩缩在两个维度上受到限制

请注意,为特定成员资格(例如 GKE 集群)启用 Cloud Service Mesh 后,集群中的所有 Kubernetes 服务都会转换为 Cloud Service Mesh 服务,包括以不使用 Cloud Service Mesh 边车的工作负载为目标的服务。Cloud Service Mesh 会为 GKE 集群中的所有服务创建可用区级网络端点组。如果集群是区域级集群,系统会为该区域中的所有节点池可用区创建网络端点组。

Cloud Service Mesh 服务与 Kubernetes 服务

Cloud Service Mesh 服务与 Kubernetes 服务不同,因为 Cloud Service Mesh 服务是按端口分配的,每个端口对应一个服务。

例如,此 Kubernetes 服务会在内部转换为两个 Cloud Service Mesh 服务,每个端口一个。

apiVersion: v1
kind: Service
metadata:
  name: my-service
spec:
  selector:
    app: my-app
  ports:
    -   port: 80
      targetPort: 80
      protocol: TCP
      name: http
    -   port: 443
      targetPort: 443
      protocol: TCP
      name: https

目标规则子集

使用子集配置 Istio Destination Rule API 时,每个子集都可能会导致生成多个新的 Cloud Service Mesh 服务。

例如,请考虑以下定位到之前定义的 Kubernetes 服务的 DestinationRule

apiVersion: networking.istio.io/v1alpha3
kind: DestinationRule
metadata:
  name: my-service-destinationrule
spec:
  host: my-service
  subsets:
  -   name: testversion
    labels:
      version: v3
  -   name: prodversion
    labels:
      version: v2

系统会为定义的每个子集创建新的合成服务。如果原始 Kubernetes 服务创建了两个 Cloud Service Mesh 服务,DestinationRule 将额外创建 4 个 Cloud Service Mesh 服务(每个子集 2 个),总共 6 个 Cloud Service Mesh 服务。

多项目部署

将单个网格部署到不同项目中的多个工作负载时,所有 Cloud Service Mesh 服务资源都会在舰队宿主项目中创建。 Google Cloud这意味着,它们都受舰队宿主项目中的 Cloud Service Mesh 可伸缩性限制。

Kubernetes 无头服务

与常规服务相比,Kubernetes 无头服务的限制更低。Cloud Service Mesh 仅支持每个集群 50 个无头 Cloud Service Mesh 服务。如需查看相关示例,请参阅 Kubernetes 网络文档

端点扩缩限制

端点扩缩限制通常如下:

  • Cloud Service Mesh 服务

  • GKE 集群

常规 Kubernetes 服务

每个 NEG 的端点配额会影响单个 Kubernetes 服务可以拥有的端点数量上限。

Kubernetes 无头服务

对于 Kubernetes 无头服务,Cloud Service Mesh 支持每个无头服务的端点数不超过 36 个。如需查看示例,请参阅 Kubernetes 网络文档

GKE 集群限制

Cloud Service Mesh 每个集群最多支持 5,000 个端点(Pod IP)。

网关扩缩限制

使用 Istio 网关(尤其是使用 Kubernetes Secret 中的 TLS 凭据终止 HTTPS 连接)时,Cloud Service Mesh 最多支持以下数量的 pod:

  • 使用区域级 GKE 集群时,网关 pod 数量为 1500 个

  • 使用区域级 GKE 集群或 Autopilot GKE 集群时,500 个网关 pod