在 GKE 上扩缩 Cloud Service Mesh 的限制

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

概览

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

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

如需了解 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 服务。

多项目部署

当单个网格部署到不同 Google Cloud项目中的各个工作负载时,所有 Cloud Service Mesh 服务资源都会在舰队主机项目中创建。这意味着,它们都受制于舰队宿主项目中的 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

  • 使用可用区级或 Autopilot GKE 集群时,网关 Pod 数量上限为 500