使用 Envoy 的 Cloud Service Mesh 限制
本文档介绍了适用于 Cloud Service Mesh 与 Google Cloud API 的限制,包括高级流量管理限制。不适用于使用 Istio API 的 Cloud Service Mesh。
如需了解限制,请参阅配额和限制。
一般限制
Cloud Service Mesh 的限制包括:
- 包含服务路由 API 的 Cloud Service Mesh 仅支持 Google Cloud API。
- 您可以使用 Cloud Service Mesh 配置以下请求协议:HTTP(HTTP/1.1 或 HTTP/2)、HTTPS、TCP 和 gRPC。
- 使用 Envoy 作为数据平面代理时,
stream_idle_timeout
值默认为 5 分钟。无法通过 Cloud Service Mesh 进行此配置。 - 使用
TCPRoute
资源配置 TCP 请求协议时,您无法使用高级流量管理功能。只有在您配置数据平面来处理 HTTP 或 gRPC 请求后,才能使用高级流量管理。 - Cloud Service Mesh 支持与服务路由 API 配合使用 VPC 网络对等互连。
- Cloud Service Mesh 不支持服务器优先协议。
- Cloud Service Mesh 无法与在 Knative 或 Google Cloud 无服务器计算中运行的服务搭配使用。
- 本文档介绍了 Envoy 代理,但您可以将任何符合开放式标准 API (xDS) 的代理与 Cloud Service Mesh 搭配使用。不过,Google 仅使用 Envoy 代理对 Cloud Service Mesh 进行了测试。
- 为了确保所有已知的安全漏洞都得到缓解,我们建议您使用最新的 Envoy 版本。如需了解 Envoy 安全建议,请参阅 Envoy 安全建议。
- Google Cloud 控制台不支持混合连接网络端点组 (NEG)。如需创建或删除混合连接 NEG,请使用 Google Cloud CLI。
- 由于数据平面会处理健康检查,因此您无法使用 Google Cloud 控制台、API 或 gcloud CLI 来检索健康检查状态。
检查
iptables
并确保其设置正确。如需详细了解如何配置iptables
,请参阅关于配置 HTTP 过滤的 Envoy 说明。- 如果您使用 Google Cloud 控制台来创建虚拟机实例,则在重启之前,某些与
ipv6
相关的模块不会进行安装和提供使用。因此,iptables.sh
会因缺少依赖项而失败。在这种情况下,请重启虚拟机并重新运行run.sh
脚本。 - 如果您使用 gcloud CLI 来创建 Compute Engine 虚拟机,则不会出现此问题。
- 如果您使用 Google Cloud 控制台来创建虚拟机实例,则在重启之前,某些与
高级流量管理限制
高级流量管理的限制包括:
- 如果
BackendService.sessionAffinity
的值不是 NONE,且BackendService.localityLbPolicy
设置为MAGLEV
或RING_HASH
以外的其他负载平衡政策,则会话亲和性设置不会生效。 gcloud import
命令不会删除后端服务和网址映射等资源的顶级字段。例如,如果后端服务在创建时指定了circuitBreakers
设置,您可以使用后续的gcloud import
命令来更新这些设置。但是,您无法从后端服务中删除这些设置。您可以删除资源本身,然后重新创建不具有circuitBreakers
设置的资源。
Service Directory 的限制
- Service Directory 和 Cloud Service Mesh 不保证客户端的网络可达性。
后端服务只能引用以下其中一项:
- 代管式实例组或非代管式实例组
- 网络端点组
- 服务绑定
Service Directory 服务只能与满足
load-balancing-scheme=INTERNAL_SELF_MANAGED
的全局后端服务一起使用。可以删除服务绑定引用的 Service Directory 服务。如果后端服务附加的底层 Service Directory 服务被删除,则使用 Cloud Service Mesh 的应用无法将流量发送到此服务,因此请求会失败。如需了解最佳做法,请参阅可观测性和调试。
将 Service Directory 服务绑定到后端服务时,您无法在该后端服务上配置健康检查。
后续步骤
- 如需了解适用于无代理 gRPC 应用的 Cloud Service Mesh 的限制,请参阅无代理 gRPC 限制。