网格组件说明

本文档简要介绍服务网格的各个组件及其在平台中的作用。

目录

相关开源解决方案

  • Istio:一个开源的服务网格解决方案,提供流量管理、安全和可观测性功能。
  • OpenTelemetry:一个开源的可观测性解决方案,支持代码级别的自动化埋点,适用范围广泛。
  • Jaeger:一个开源的分布式追踪解决方案。
  • Flagger:一个开源的渐进式交付工具,支持多种部署策略,包括 Canary、A/B 测试和蓝绿部署。

组件说明

控制平面组件

组件名称说明
Istio
istiodIstio 的控制平面组件,其名称用于区分不同的 Istio 主要版本。
istio-cniIstio CNI 节点智能体,用于配置网格内 Pod 的流量重定向。默认情况下不部署该组件,除非使用 OpenShift 集群。
tier2-gatewayTier2 网关,与 Tier1 网关配合,为网格中的入口流量提供灰度发布和服务路由等高级流量管理功能。
istio-eastwestgatewayIstio 中用于多集群服务网格通信的东西向网关。其主要功能是确保不同集群中的服务能够相互通信。该组件仅在 multi-networkmulti-cluster 服务网格中部署。
asm-core为 Istio 提供全局限流的组件。默认部署,但仅在服务网格集成 Redis 时生效。
OpenTelemetry
asm-otel-collectorOpenTelemetry 方案中的组件,用于接收、处理和导出可观测性数据。支持 Jaeger、Prometheus 等开源数据格式。Trace 数据发送至 Jaeger,Metrics 数据发送至 Prometheus 或 VictoriaMetrics。
asm-otel-collector-lb为 asm-otel-collector 组件提供负载均衡。OTel Java Agent 收集的可观测性数据通过该组件转发至 asm-otel-collector。
Jaeger
jaeger-prod-collectorJaeger 的 collector 组件,负责收集来自 sidecar 和 asm-otel-collector 的分布式追踪数据,并与 Elasticsearch 交互存储追踪数据。
jaeger-prod-queryJaeger 的数据查询组件,用于从 Elasticsearch 查询追踪数据。
Flagger
flagger提供灰度发布功能,并与 Istio 集成,实现服务的渐进式交付策略。
其他
asm-controller管理和协调服务网格内的各类资源。

数据平面组件

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

CPU 和内存分配

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

各组件的 CPU 和内存分配均可配置。

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

重要说明:

  • 在生产环境中,建议不对 istiod 设置限制,即 CPU 和内存不受限制。
  • 对于大规模部署,强烈建议使用节点选择器,将各 Istio 组件的基础设施部署在集群中的专用节点上。

下表汇总了各服务网格组件的 CPU 和内存的推荐最低请求和限制。

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

组件CPU - 请求内存 - 请求CPU - 限制内存 - 限制
Istio
istiod500m512Mi2000m2048Mi
ingress gateway250m128Mi2000m1024Mi
egress gateway250m128Mi2000m1024Mi
sidecar100m128Mi500m512Mi
tier2-gateway250m128Mi2000m1024Mi
istio-eastwestgateway250m128Mi2000m1024Mi
asm-core250m128Mi1000m512Mi
OpenTelemetry
asm-otel-collector250m512Mi2000m1Gi
asm-otel-collector-lb250m512Mi1000m1Gi
Jaeger
jaeger-prod-collector250m512Mi3000m512Mi
jaeger-prod-query250m512Mi1000m512Mi
Flagger
flagger250m128Mi1000m512Mi
其他
asm-controller250m512Mi1000m512Mi