服务网格组件描述

本文档提供了服务网格的各种组件及其在平台中的角色的简要概述。

涉及的开源解决方案

  • Istio: 一种开源服务网格解决方案,提供流量管理、安全性和可观察性功能。
  • OpenTelemetry: 一种开源可观察性解决方案,支持广泛适用的代码级监控。
  • Jaeger: 一种开源分布式追踪解决方案。
  • Flagger: 一种开源渐进式交付工具,支持包括金丝雀发布、A/B 测试和蓝绿部署在内的各种部署策略。

组件描述

控制平面组件

组件名称描述
Istio
istiodIstio 的控制平面组件,其名称区分不同主要版本的 Istio。
istio-cniIstio CNI 节点代理,用于配置网格内 Pods 的流量重定向。此组件在默认情况下不被部署,除非使用 OpenShift 集群。
tier2-gatewayTier2 网关与 Tier1 网关配合,提供高级流量管理功能,如灰度发布和网格中入口流量的服务路由。
有关 Tier1 和 Tier2 的更多信息,请参见 [网格中入口流量的流量路由]({{< relref "mesh-u-servicemesh/managing-traffic/1ingress-gateway/1understand-ingress-gateway.md#tier2" >}})。
istio-eastwestgatewayIstio 中用于多集群服务网格通信的东西网关。其主要功能是确保不同集群中的服务可以相互通信。此组件仅在 multi-networkmulti-cluster 服务网格中部署。
asm-core提供 Istio 的全局速率限制的组件。此组件默认部署,但仅在服务网格与 Redis 集成时才会起作用。
OpenTelemetry
asm-otel-collectorOpenTelemetry 解决方案的组件,用于接收、处理和导出可观察性数据。支持开源数据格式,如 Jaeger 和 Prometheus。追踪数据发送至 Jaeger,而指标数据发送至 Prometheus 或 VictoriaMetrics。
asm-otel-collector-lb为 asm-otel-collector 组件提供负载均衡。通过此组件收集到的 OTel Java Agent 的可观察性数据会转发至 asm-otel-collector。
Jaeger
jaeger-prod-collectorJaeger 的收集组件,从侧车和 asm-otel-collector 收集分布式追踪数据,并与 Elasticsearch 接口以存储追踪数据。
jaeger-prod-queryJaeger 的数据查询组件,从 Elasticsearch 查询追踪数据。
Flagger
flagger提供灰度发布功能,并与 Istio 集成以实施服务的渐进式交付策略。
其他
asm-controller管理并协调服务网格内的各种资源。

数据平面组件

组件名称描述
入口网关运行在网格边缘的独立 Envoy 代理。它允许配置公共端口和协议,以指定允许进入网格的流量。
出口网关运行在网格边缘的独立 Envoy 代理。它允许监控、日志记录和对离开网格的流量进行安全策略的执行。
侧车通常与应用程序容器部署在同一 Pod 中。它处理来自应用程序的网络请求,包括流量管理、安全策略执行、负载均衡和服务发现。
OpenTelemetry Java Agent一种用于在 Java 应用程序中收集分布式追踪和指标数据的自动化工具。通过注入 OpenTelemetry Java Agent,可以在不修改应用程序代码的情况下进行请求路径的分布式追踪和性能指标的收集。

CPU 和内存分配

本节概述了集群中服务网格组件的最低推荐计算资源。

每个组件的 CPU 和内存分配是 [可配置的]({{< relref "mesh-u-servicemesh/create-servicemesh/create-servicemesh.md#config_com" >}})。

在创建服务网格之前,请确保集群节点具有足够的 CPU 和内存来运行所有的服务网格组件。

重要说明:

  • 在生产环境中,建议不为 istiod 设置限制,这意味着 CPU 和内存不受限制。
  • 对于大型部署,强烈建议使用节点选择器将基础设施放置在集群中的专用节点上,以便为每个 Istio 组件提供支持。

下表总结了每个服务网格组件的最低资源请求和限制的推荐值。

在 Kubernetes 中,资源请求指示工作负载不会在某节点上部署,除非该节点至少具有规定数量的可用内存和 CPU。如果工作负载超过 CPU 或内存限制,可能会被终止或从节点中驱逐。有关管理容器资源限制的更多信息,请参见 Kubernetes 文档

组件CPU - 请求内存 - 请求CPU - 限制内存 - 限制
Istio
istiod500m512Mi2000m2048Mi
入口网关250m128Mi2000m1024Mi
出口网关250m128Mi2000m1024Mi
侧车100m128Mi500m512Mi
tier2-网关250m128Mi2000m1024Mi
istio-eastwestgateway250m128Mi2000m1024Mi
asm-core250m128Mi1000m512Mi
OpenTelemetry
asm-otel-collector250m512Mi2000m1Gi
asm-otel-collector-lb250m512Mi1000m1Gi
Jaeger
jaeger-prod-collector250m512Mi3000m512Mi
jaeger-prod-query250m512Mi1000m512Mi
Flagger
flagger250m128Mi1000m512Mi
其他
asm-controller250m512Mi1000m512Mi