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 限制。