服务网格架构与 Sidecar 模型

共 18 题
📑 题目列表 18 题
#
★★★

1. Service Mesh 的 Sidecar 代理模型如何实现"零侵入",相比 SDK 方式的本质差异?

服务网格(Service Mesh)中的 Sidecar 代理模型是如何做到对应用"零侵入"的,它与传统的 SDK 嵌入方式相比,本质差异是什么?

  • Sidecar 注入与流量劫持的机制
  • 应用代码无需修改即可获得治理能力
  • SDK 方式与代理方式的依赖与应用耦合差异

Sidecar 模型通过"注入 + 流量劫持"实现零侵入:控制面通过 Webhook 自动向 Pod 注入一个 Envoy 代理容器,并通过 istio-init 注入的 iptables 规则把进出应用的流量透明地劫持到 sidecar 上。应用进程完全无感知,代码零改动,即可获得路由、熔断、mTLS、可观测性等治理能力。SDK 方式则需要把治理逻辑(如 RPC 框架中的超时、重试、限流)以库的形式编译进应用,与应用语言、框架深度耦合,升级治理能力需要重新发布应用。本质差异是:Sidecar 把治理能力从"应用进程内"外移到"进程外旁路代理",通过数据面统一承载,应用与治理能力解耦,升级与回滚相互独立。

零侵入的核心是"透明代理 + 声明式控制面"。流量劫持让请求先经过代理再到应用,从而在不动业务代码的前提下注入治理逻辑。相比 SDK,Sidecar 的代价是每请求多一跳代理和额外资源开销,但换来的是多语言统一、治理升级与应用解耦、以及可插拔的运维能力。这也是为什么网格普遍面向多语言、微服务数量多、需要统一治理的规模化场景。

# 注入 sidecar 后 Pod 内包含 istio-init(iptables 劫持)与 istio-proxy 两个额外容器
apiVersion: v1
kind: Pod
metadata:
  annotations:
    sidecar.istio.io/status: '{"initContainers":["istio-init"],"containers":["istio-proxy"]}'
spec:
  initContainers:
  - name: istio-init
    image: istio/proxyv2
    args: ["istio-iptables", "-p", "15001", "-u", "1337"]
  containers:
  - name: istio-proxy
    image: istio/proxyv2
    ports:
    - containerPort: 15090
#
★★★

2. Sidecar 模式实现零侵入的完整链路中注入、流量劫持(iptables)与配置热更新如何工作?

请完整说明 Sidecar 模式实现零侵入的三个关键环节:注入(injection)、流量劫持(iptables)与配置热更新,它们各自如何工作?

  • Webhook 自动注入的流程
  • istio-init 的 iptables 规则与 PORT 转移
  • Envoy 通过 xDS 热更新配置不断连接

注入环节:命名空间打上 istio-injection=enabled 标签后,创建 Pod 时 Kubernetes 的 MutatingAdmissionWebhook(istio-sidecar-injector)会改写 Pod 规范,注入 istio-init 初始化容器和 istio-proxy 主容器。流量劫持环节:istio-init 以 NET_ADMIN 权限运行 istio-iptables,将应用流量按规则重定向到 sidecar 的 15001 端口(出站)与 15006(入站),实现透明代理。配置热更新环节:istio-proxy 启动后通过 xDS 协议与 Istiod 建立长连接,Istiod 将虚拟服务、目标规则、证书等配置以增量/全量方式推送给 Envoy,Envoy 动态更新路由与监听器,整个过程无需重启应用或重启代理。

三个环节构成了"注入容器、劫持流量、下发配置"的完整闭环。iptables 保证了透明性,xDS 保证了配置的动态性,Webhook 保证了注入的自动化。关键运维点是 webhook 未就绪会导致注入失败、iptables 规则错误会导致流量不经过代理、以及 xDS 连接中断会导致配置陈旧。

# 在 Pod 内查看透明代理的 iptables 规则(NAT 重定向到 15001)
iptables -t nat -L -n -v
# 查看 sidecar 当前通过 xDS 获取的配置状态
istioctl proxy-status <pod>
#
★★★

3. 数据面(Envoy)与控制面(Istiod)的分工,xDS 协议如何下发配置?

请说明服务网格中数据面(Envoy)与控制面(Istiod)的分工,以及 xDS 协议是如何把配置下发到数据面的?

  • 控制面与数据面的职责边界
  • xDS 各子协议(LDS/RDS/CDS/EDS/SDS)的职责
  • 配置下发的推送与 ACK/NACK 机制

数据面(Envoy)负责实际的流量转发与治理执行,包括路由、负载均衡、熔断、重试、mTLS、指标采集等;控制面(Istiod)负责把用户声明的高层意图(VirtualService、DestinationRule、PeerAuthentication 等)转换为 Envoy 可执行的低级配置,并负责证书签发与下发。xDS 是 Envoy 与 Istiod 之间的配置分发协议,包含若干子协议:LDS(Listener,监听器)、RDS(Route,路由)、CDS(Cluster,集群)、EDS(Endpoint,端点)、SDS(Secret,证书),Envoy 通过 gRPC 长连接订阅这些资源,控制面在配置变化时推送。Envoy 收到配置后返回 ACK 确认,校验失败则返回 NACK 并保留旧配置,避免坏配置生效。

控制面是"大脑"(翻译意图、分发配置),数据面是"执行器"(转发流量、执行策略)。xDS 的订阅-推送-ACK 机制保证了配置的有序下发与失败保护。理解 xDS 子协议正是理解 Envoy 配置结构的钥匙,也是定位"配置不一致"类问题的入口。

# 查看某 sidecar 的 xDS 订阅状态与版本
istioctl proxy-status <pod>
# 查看某 sidecar 的监听器配置
istioctl proxy-config listener <pod>
#
★★

4. Sidecar 生命周期与主容器生命周期对齐(preStop/健康检查)的坑点?

在 Kubernetes 中,Sidecar 容器的生命周期如何与主容器对齐,特别是在 preStop 钩子与健康检查方面有哪些常见的坑点?

  • 容器终止顺序与 SIGTERM 处理
  • preStop 钩子与优雅排空
  • Sidecar 与主容器的健康检查联动

常见的坑点包括:一是优雅终止顺序,Pod 被删除时两个容器会同时收到 SIGTERM,若应用需要先排空流量再退出,而 sidecar 提前退出,会导致正在处理的请求被切断;反之若应用先退出,sidecar 端到端 xDS 连接可能残留。二是 preStop 钩子,若 preStop 中 sleep 时间过长会导致容器长时间不退出,而 sidecar 的 preStop 需要与应用的流量排空配合。三是健康检查,sidecar 自身健康(如 Envoy 的 admin 端口)与应用就绪是两回事,K8s 1.28+ 的 sidecar 容器(restartPolicy: Always)支持先启动 sidecar 再启动主容器,保证代理先就绪。四是 terminationGracePeriodSeconds 与 sidecar 排空时间的匹配,设置过短会导致连接被强制杀死。

Sidecar 与主容器生命周期对齐的核心是"让流量先排空再退出"。规范做法是:应用通过 preStop 或基础设施优雅退出,sidecar 利用 Envoy 的 --drain-time--parent-shutdown-time-s 排空连接,并让 terminationGracePeriodSeconds 大于排空时间。使用原生 sidecar 容器特性可保证 sidecar 先于主容器启动。 排障时观察 Pod 从 Terminating 到删除的耗时,配合 kubectl describe pod 的终止事件,可判断是 preStop 阻塞还是连接未排空。

#
★★

5. Sidecar 的资源开销与延迟代价如何度量,什么规模才值得引入网格?

引入服务网格后,如何度量 Sidecar 带来的资源开销与延迟代价,什么规模的组织才值得引入网格?

  • Sidecar 的 CPU/内存/延迟开销量级
  • 网格治理收益与成本权衡
  • 引入网格的规模阈值判断

Sidecar 的资源开销通常为每个实例 30-50MB 内存、少量 CPU(约 0.5-1 核),每请求增加 1-5ms 的额外延迟(一次本地代理转发),在多跳(如 A→B→C)场景下会叠加。延迟代价可以用"请求额外一跳"的基准测试量化,资源代价可通过 sidecar 的 requests/limits 与集群总并发数估算。规模阈值没有绝对标准,但一般而言:当服务数量达到几十个以上、团队需要跨语言统一的治理能力(mTLS、路由、熔断、可观测性)、以及手工治理与 SDK 维护成本显著上升时,引入网格才划算。服务数量少、团队小、对延迟极度敏感的场景,网格的治理收益可能抵消不了其资源与运维成本。

网格的收益是"边际治理"——每新增一个服务,其治理能力(安全、可观测、流量控制)自动获得,无需重复开发。因此服务越多、治理需求越统一,网格的边际收益越高。评估时应同时考虑资源成本、延迟预算、团队运维能力与功能需求,而非只盯单点延迟。

#
★★

6. 无 Sidecar 模式(Ambient/Proxyless)的演进与适用场景?

请介绍无 Sidecar 模式(如 Istio Ambient Mesh、gRPC Proxyless)的演进动机与适用场景?

  • Ambient 的 ztunnel 与按命名空间分层
  • Proxyless 的 gRPC xDS 直接接入
  • 无 Sidecar 模式的代价与适用场景

Ambient Mesh 是 Istio 的无 Sidecar 数据面模式:它不向每个 Pod 注入 sidecar,而是通过每节点一个轻量级 ztunnel(zero-trust tunnel)代理提供 L4 安全(mTLS),并按需为工作负载启用 L7 治理(waypoint proxy)。这样应用无需感知代理,资源开销更低,但 L7 能力需要额外配置 waypoint。Proxyless 模式则让应用(如 gRPC 客户端)直接通过 xDS 与控制面通信,由应用的 RPC 库自身实现路由与负载均衡,去掉中间代理,延迟最低、资源最少,但仅适用于支持 xDS 的语言和框架。

三种模式构成一个"资源开销与功能深度"的谱系:Sidecar 功能最全但开销最大;Ambient 兼顾安全与低成本、L7 按需启用;Proxyless 延迟最低但受框架能力限制。选型时根据对延迟、资源和 L7 治理深度的需求权衡。Ambient 降低了大规模网格的运维与资源成本,是网格演进的重要方向。

#
★★

7. 服务网格控制面与数据面的生命周期中配置下发、版本升级与故障隔离如何协同

服务网格中控制面与数据面的生命周期如何协同管理,包括配置下发、版本升级与故障隔离?

  • 控制面与数据面独立升级
  • 配置下发与版本兼容
  • 控制面故障时的数据面降级

网格的控制面与数据面生命周期相对独立:数据面(sidecar)通过 xDS 从控制面拉取配置,控制面升级通常不影响已在运行的数据面(Envoy 会保留旧配置继续转发),数据面可独立滚动升级。版本升级上需保证控制面与数据面版本兼容(Istio 支持 N-1 数据面兼容控制面),先升级控制面、再滚动升级数据面,避免跨多个大版本。故障隔离上,控制面故障时数据面仍能基于最后收到的好配置继续转发流量(配置缓存),不会因控制面宕机而中断数据面,但新的配置变更无法生效;因此控制面应高可用部署,并监控 xDS 连接状态。

控制面与数据面解耦是网格高可用的关键:数据面"自持"已下发的配置,控制面故障不至于影响现有流量。升级策略上"先控制面后数据面、版本兼容"降低风险,故障隔离上"数据面兜底转发"保证可用性。这也是把控制面与数据面分开监控和评估的原因。

#
★★

8. 网格规模增长后的配置下发性能中 xDS 推送风暴与 sidecar 内存如何治理?

当网格规模增长后,xDS 配置下发可能产生"推送风暴"并导致 sidecar 内存膨胀,如何治理这些问题?

  • xDS 推送风暴成因与缓解
  • 增量推送与缓存
  • Sidecar 内存优化的手段

xDS 推送风暴通常表现为:任一服务端点变化都触发对所有 sidecar 的全量推送,导致控制面 CPU 与网络压力骤增、sidecar 反复重建配置。治理手段包括:一是启用增量 xDS(delta xDS),只推送变化部分;二是根据服务依赖关系仅向相关 sidecar 推送(Istio 的 auto-sds 与按 namespace 隔离);三是控制 Endpoint 变化频率,避免抖动导致频繁推送;四是调整推送间隔与去抖(debounce)。Sidecar 内存方面,可通过 Sidecar 资源限制某 sidecar 只订阅其依赖的集群(exportTo 与 namespace 隔离),减少 CDS/EDS 数量,从而降低内存占用;同时限制 Envoy 的 worker 线程与连接池。

推送风暴与内存膨胀的根源都是"配置粒度过大"——每个 sidecar 都订阅了全部集群。按服务的实际依赖裁剪配置范围(Sidecar 资源、exportTo、namespace 隔离),配合增量推送,是规模化治理的核心手段。这需要在控制面(推送)与数据面(内存)两侧同时治理。

#

9. 多集群网格(多主/单主/混合)的拓扑选择与故障域设计?

请说明多集群服务网格中多主(multi-primary)、单主(primary-remote)与混合拓扑的选择依据,以及故障域如何设计?

  • 多主/单主/混合拓扑的各自特点
  • 控制面部署与故障域
  • 跨集群服务发现与流量

多主拓扑:每个集群都部署独立控制面,互相通过信任绑定共享根 CA,实现跨集群的 mTLS 与流量;优点是无单点控制面、故障隔离好,适合多个独立运维的集群。单主(primary-remote):一个主集群部署控制面,其余 remote 集群只部署数据面,由主集群统一管理;优点是控制面集中、运维简单,但主集群故障影响所有集群。混合拓扑:对关键集群用多主、对边缘集群用 primary-remote,兼顾可靠性与成本。故障域设计上,应把控制面与关键数据面放在不同可用区/集群,避免共享故障点,并设计跨集群的流量路由与灾备切换。

多集群拓扑选择的本质是"控制面集中度与故障隔离"的权衡:多主隔离好但运维复杂,单主简单但存在单点。故障域设计要让控制面具备跨集群冗余、跨集群流量可切换,从而在集群故障时仍能提供服务。选型取决于集群数量、运维能力与可用性要求。

#

10. 服务网格与传统负载均衡的边界中东西向流量治理能力与资源成本的权衡

服务网格与传统负载均衡(如 L4/L7 LB)的边界是什么,如何权衡东西向流量治理能力与资源成本?

  • 南北向与东西向流量的治理差异
  • 网格提供的东西向治理能力
  • 资源成本与能力权衡

传统负载均衡(LB)主要面向南北向流量(外部入口),提供 L4 转发与部分 L7 能力,但无法在服务间(东西向)为每个调用提供细粒度治理。服务网格把治理能力下沉到服务间的东西向流量,提供服务级路由、mTLS、熔断、重试、可观测性等。边界在于:入口流量由 LB/网关承担,服务间流量由网格承担。权衡在于:网格带来的东西向治理能力(安全、可观测、流量控制)以每实例 sidecar 的资源开销和运维复杂度为代价,因此需要根据治理需求与规模判断是否值得。

传统 LB 是"入口集中治理",网格是"服务间分布式治理"。网格的收益是让服务间调用具备统一的安全与可观测性,成本是代理资源与运维。对于大量 intra-service 调用且需要统一治理的规模化微服务,网格价值凸显;反之传统 LB 已足够。

#

11. 网格 mTLS 的实现中 SPIFFE 身份、证书签发与轮换机制如何工作

服务网格的 mTLS 是如何实现的,SPIFFE 身份、证书签发与轮换机制如何工作?

  • SPIFFE 身份与信任域
  • 证书签发(Istiod/Citadel)与工作负载证书
  • SDS 证书下发与轮换

网格 mTLS 基于 SPIFFE 标准为每个工作负载分配唯一身份(格式如 spiffe://<trust-domain>/ns/<namespace>/sa/<service-account>),该身份绑定到 SAN 中。Istiod(含 Citadel/CA 角色)作为根 CA 为工作负载签发短期证书(通常 24h),证书通过 SDS(Secret Discovery Service)下发给 sidecar。轮换机制:证书临近过期时,sidecar 通过 SDS 向控制面请求新证书,Istiod 重新签发,Envoy 热更新证书,客户端与服务端在 TLS 握手时基于 SPIFFE 身份校验对方身份,实现双向认证。信任域(trust-domain)用于跨集群/跨网格的安全隔离与信任绑定。

SPIFFE 提供了"身份标准化",mTLS 让身份通过证书验证。短期证书 + SDS 自动轮换既保证了安全性(证书泄露窗口短)又无需人工干预。配置 PeerAuthentication 为 STRICT 模式可强制所有流量走 mTLS,实现零信任基础。

#

12. 网格可观测性中 sidecar 指标、分布式追踪与访问日志如何统一采集与关联

服务网格的可观测性如何实现,sidecar 指标、分布式追踪与访问日志如何统一采集与关联?

  • sidecar 指标(Istio telemetry)产生与采集
  • 分布式追踪(trace 传播)
  • 访问日志与 ops 关联

网格可观测性三要素:指标(metrics)、追踪(traces)、日志(logs)。sidecar(Envoy)会生成标准指标(如 istio_requests_total、istio_request_duration 等),通过 Istio Telemetry 或默认 Prometheus 抓取暴露,实现服务间调用量、延迟、错误率的聚合。分布式追踪方面,Envoy 会生成/传播 trace 头(如 x-b3-traceid、traceparent),与 Jaeger/Zipkin/OTel 集成,把一次跨服务调用串成一条链路。访问日志方面,Envoy 记录每个请求的访问日志(来源、目标、状态码、耗时),可通过 Telemetry 配置输出格式并接入日志系统。三者通过公共字段(如来源/目标服务、namespace、trace id)关联,实现"指标发现异常、链路定位根因、日志看细节"的排障闭环。

三件套的关联关键是"统一的请求上下文":trace id 把链路串起来,服务名/状态码把指标与日志关联。配置 Telemetry 可按需定制指标维度与日志采样,同时开启三者可让排障从宏观指标下钻到单条请求。

#

13. 网格安全体系中自动 mTLS、授权策略与证书生命周期如何协同

服务网格的安全体系如何协同,自动 mTLS、授权策略(AuthorizationPolicy)与证书生命周期如何联动?

  • 自动 mTLS 与 PeerAuthentication
  • AuthorizationPolicy 授权
  • 证书生命周期协同

网格安全体系由身份认证、授权与证书管理三层协同。身份认证:自动 mTLS 通过 PeerAuthentication 配置(PERMISSIVE/STRICT),PERMISSIVE 允许明文与 mTLS 并存(便于迁移),STRICT 强制双向 mTLS;工作负载凭 SPIFFE 身份互认。授权:AuthorizationPolicy 在 mTLS 建立身份后,基于身份与服务定义"谁允许访问谁",默认拒绝(deny-by-default),实现零信任。证书生命周期:Istiod 签发短期证书经 SDS 轮换,保证身份凭证可信且及时更新。三者协同构成"先认证身份、再授权访问、证书持续轮换"的安全闭环,确保只有受信且授权的流量才能访问目标服务。

零信任的核心是"身份可信 + 每次访问都授权"。mTLS 建立身份,AuthorizationPolicy 基于身份做访问控制,证书轮换保证身份长期可信。理解这层协同,才能设计出"默认拒绝、最小权限"的安全网格。

#

14. 网格性能开销中额外网络跳数、sidecar CPU/内存与延迟预算如何量化

请量化服务网格的性能开销,包括额外网络跳数、sidecar 的 CPU/内存占用与延迟预算?

  • 每请求额外一跳的延迟
  • sidecar 资源占用量级
  • 延迟预算的分配

网格的额外开销包括:每跳 sidecar 中转带来的额外延迟(通常 1-5ms 量级,取决于经 base 头与 TLS 终止),以及 sidecar 的 CPU/内存占用(每实例约 30-50MB 内存、CPU 按连接与 QPS 使用)。多跳调用(A→B→C)会叠加每跳开销。延迟预算需在调用链上预留:假设 SLO 要求端到端 100ms,则应在每跳预留代理开销(如每跳 2ms)并扣除,避免过度依赖 sidecar 而超时。量化方法:用基准测试对比"有/无 sidecar"的 P99 延迟与吞吐,测出单跳代理代价,再结合调用链跳数估算总增量。

量化开销的目的不是"放弃网格",而是"合理预算"。把代理开销纳入延迟预算与容量规划,避免 Sidecar 导致超时风暴或资源不足。测量时应关注 P99 而非平均值,因为代理延迟抖动影响尾延迟。

#

15. 网格排障入口中 sidecar 启动日志、xDS 推送状态与代理统计如何组合定位

服务网格排障时,如何组合使用 sidecar 启动日志、xDS 推送状态与代理统计来定位问题?

  • sidecar 启动日志与注入核查
  • xDS 推送状态(proxy-status)
  • 代理统计(stats)与 admin 接口

排障入口分三层:一是启动层,查看 sidecar 启动日志(kubectl logs <pod> -c istio-proxy)与注入状态(kubectl get pod -o yaml 确认容器存在),判断是否注入失败、iptables 是否生效、初始配置是否加载成功。二是 xDS 层,用 istioctl proxy-status 查看 sidecar 与控制面的 xDS 连接状态、各资源(LDS/RDS/CDS/EDS/SDS)的版本与同步情况,判断是否配置不一致或推送失败。三是代理层,通过 istioctl proxy-config 查看实际下发的 listener/cluster/route,用 admin 接口的 stats 看连接数、重试、熔断等运行时指标。三层组合:先确认注入与启动正常,再确认配置同步,最后用运行时统计定位具体流量异常。

三层排障是"从配置到运行"的递进:启动日志确认代理可用,xDS 状态确认配置是否正确下发,代理统计确认运行时行为是否异常。这能快速区分"代理没起来、配置没同步、还是运行时策略触发"三类问题。

#

16. 网格排障中流量 503/超时如何通过 sidecar 日志与策略配置定位

当网格内出现流量 503 或超时错误时,如何通过 sidecar 日志与策略配置定位根因?

  • 503 的常见成因(无端点、超时、熔断)
  • 访问日志与 cluster 状态
  • 策略配置(重试/超时/熔断)核查

503 或超时的常见成因:目标集群无可用端点(EDS 为空、Pod 未就绪)、连接池耗尽、upstream 超时、熔断(circuit breaker)触发、以及重试策略未生效。定位步骤:先查 sidecar 访问日志(kubectl logs <pod> -c istio-proxy),看响应状态 503 与对应 cluster 名、响应原因(如 NR=no route、UH=upstream 无健康节点、UT=upstream 超时、UO=上游溢出(熔断)、UC=连接中断);再用 istioctl proxy-config cluster <pod> -o json 查看该 cluster 的端点健康状态与熔断阈值;最后核查 DestinationRule 中的连接池/熔断/重试配置与 VirtualService 超时设置,判断是否因配置过严触发保护。

503 的响应 flags 是定位的关键线索(UH 表示 upstream 无健康端点,UT 表示上游超时,UO 表示上游溢出/熔断,UC 表示连接中断)。配合 cluster 端点健康状态与策略配置,能区分"没有可用后端、后端响应慢、还是策略触发保护"三类根因,进而针对性调整。

#

17. 网格流量管理中 VirtualService 路由与 DestinationRule 负载均衡/连接池的配置层级

请说明网格流量管理中 VirtualService(路由)与 DestinationRule(负载均衡/连接池)的配置层级与职责分工?

  • VirtualService 的路由职责
  • DestinationRule 的负载均衡、连接池、熔断职责
  • 两者的配置层级关系

VirtualService 负责"流量路由":定义请求按 host 匹配后如何分发到下游(按权重、Header、URI 等),可指向 Destination 或子集(subset)。DestinationRule 负责"目标行为":定义负载均衡算法(RoundRobin、LeastRequest、ConsistentHash 等)、连接池(TCP/HTTP 连接数、超时)、熔断(circuit breaker 阈值)与 TLS 配置(mTLS 模式)。配置层级上,VirtualService 的 destination 指向 host 与 subset,subset 由 DestinationRule 定义;两者配合:VirtualService 决定"流量去哪",DestinationRule 决定"怎么均衡与保护"。层级关系是 VirtualService → DestinationRoute → 实际端点。

理解层级是配置网格的关键:VirtualService 管"路由决策",DestinationRule 管"后端行为"。例如金丝雀发布用 VirtualService 的权重路由指向同名服务的不同版本(subset),subset 的记录与负载均衡/连接池由 DestinationRule 定义。两者错误配置(如 subset 未定义)会导致路由不生效。

#

18. 网格遥测集成中 Prometheus 指标、OTel 追踪与访问日志的导出配置

网格遥测如何集成导出,包括 Prometheus 指标、OTel 追踪与访问日志的配置?

  • Istio Telemetry 资源与指标定制
  • OpenTelemetry 追踪导出
  • 访问日志导出

在 Istio 中,遥测集成主要通过 Telemetry 资源(取代旧版 Mixer)配置。指标:Envoy 暴露标准 metric(如 istio_requests_total),默认由 Prometheus 抓取(sidecar 的 15090 端口),也可用 ServiceMonitor 采集;Telemetry 可自定义指标维度(如按版本、请求头维度)。追踪:通过 Telemetry 配置 OpenTelemetry 或 Zipkin/Jaeger provider,Envoy 生成并传播 trace,导出到 OTel Collector/SkyWalking 等后端。访问日志:Telemetry 配置 access logging 的 providers(如 stdout、file、或自定义格式),把访问日志输出到标准输出或日志采集器。三者配置可独立或组合,按工作负载定制。

Telemetry 是 Istio 1.12+ 的统一遥测配置入口,替代了旧的 Mixer 模型,让指标、追踪、日志三类遥测可以按工作负载声明式配置。导出配置的关键是"provider 定义 + Telemetry 引用",并能按需调整采样率与维度以控制资源开销。