【Istio 控制面】控制面全景:从 CRD 到 xDS 的翻译与推送内核
定位 Istio 控制面内核相对 Envoy 消费侧、Service Mesh 税文与 Gateway API 资源模型的缺口;给出五条坐标系、16 篇地图与本系列明确不写的范围,钉住 istiod 1.30.3 为主线。
Linux 内核、存储与网络、可观测性、系统架构与大模型基础设施的工程笔记:机制拆解、踩坑复盘与可核对证据,少空谈。
共 23 篇文章 · 返回首页
定位 Istio 控制面内核相对 Envoy 消费侧、Service Mesh 税文与 Gateway API 资源模型的缺口;给出五条坐标系、16 篇地图与本系列明确不写的范围,钉住 istiod 1.30.3 为主线。
以官方文档为准,对照 Linkerd destination/identity 控制面与 Istio istiod/xDS 的机制差异:资源模型、订阅形状、身份签发路径;只讲机制边界,不判定优劣。
用机制排除树收束 Istio CRD 翻译、Gateway API/GAMMA 与 eBPF L4 的选型边界,回收系列阅读路径,并列出推送 SLO、Ambient 成熟度、GAMMA 双轨等开放问题;不做延迟排行榜。
补齐 Envoy 数据面 xDS 消费侧与 Mesh 选型叙事之间的控制面内核:istiod 推送图、CRD/HTTPRoute 翻译、Ambient 多客户端、NACK/warming 责任与排障对齐。
从控制面协议、数据面引擎与排障坐标对照 istiod/xDS、Istio Ambient 与 Cilium eBPF L4;外链 istio-xds 全书不重写,不做跨方案 CPU 排行榜。
用机制排除树收束何时不该跑 Envoy Gateway;回收 Cilium 16 与 Tetragon 16 的南北向悬空指针;列出 status 当 SLO、IR 对账、remote infra、与 Cilium 四元组联合 runbook 等开放问题;关闭本系列续作边界。
从翻译内核与排障坐标对照 Envoy Gateway v1.9.0 与 Cilium Gateway、Istio/GAMMA、Ingress 注解模型,以及 Contour / NGINX Gateway Fabric 实现叶;机制差表,不做延迟排行榜。
拆解 pilot-discovery 二进制内部的组件化启动顺序:CA 为何先于 Discovery 初始化、注入 Webhook 与配置校验为何是独立 HTTPS 服务、以及哪些组件真正位于 xDS 推送热路径上。
拆解 istiod 如何从节点 ID 与 mTLS/JWT 得到一个 model.Proxy 身份,以及 NodeType 如何决定该连接会订阅哪一套 xDS 资源类型:sidecar/Router 走标准 LDS/RDS/CDS/EDS,ztunnel 走自定义 Address/Authorization,waypoint 是 Envoy 但推送触发条件不同。
画出 istiod 从 K8s watch 事件到某个代理收到 DiscoveryResponse 的完整推送图:ConfigUpdate、debounce、PushQueue、pushXds 各自的边界与代码依据,钉住 VersionInfo/Nonce 的生成规则,并说明为什么控制面的推送成功不等于 Envoy 在服务。
拆解 istiod 如何把 K8s Service、EndpointSlice、WorkloadEntry 聚合进内部服务模型,再经 CdsGenerator/EdsGenerator 分别生成 Cluster 与 ClusterLoadAssignment;钉住命名契约与部分推送边界,subset 留给 DestinationRule 篇。
拆解 istiod 的 RdsGenerator 如何把 VirtualService 与 Gateway API HTTPRoute(含 GAMMA mesh 模式)都编译成同一份内部路由模型,说明为何双轨输入会在同一 host 上产生冲突,以及两套 API 的合并顺序为何一个确定、一个未定义。
拆解 DestinationRule 如何在 CDS 已生成的 Cluster 之上派生 subset、挂载 connectionPool/outlierDetection/loadBalancer/tls,以及 mesh 默认、DestinationRule 级、port 级、subset 级四层设置的真实合并规则——其中 port 级与 subset 级的继承语义并不对称。
拆解 PeerAuthentication 如何落到入站 filter chain 的 mTLS 要求、AuthorizationPolicy 如何编译成 Envoy RBAC filter 的 permission/principal,以及 istiod CA 签发证书后 istio-agent 作为本地 SDS server 如何把 SPIFFE 身份证书喂给 Envoy;策略语义不重复展开,见零信任系列。
拆解 Sidecar 的 egress 裁剪、Telemetry API 的三层继承、EnvoyFilter 的补丁排序规则;三者作用在生成流水线的不同阶段,各自有一套容易被误用的合并/覆盖语义;不讲 Wasm/EnvoyFilter SDK 编程。
拆解 istiod 生产侧的 Full/Incremental 推送决策与 debounce 合并逻辑,说明它与 Envoy 消费侧 SotW/Delta 协议变体是两个正交问题;用 pilot/pkg/xds 源码钉住端点抖动下的日志可见性盲区。
用 pilot/pkg/xds 的 PushOrder 与 ShouldRespond 源码钉住 istiod 推送顺序与 NACK 处理边界,说明为什么'istiod 已推送'与'Envoy 在服务'之间的责任划分不在同一层,给出排障用的责任表。
拆解 Istio 多集群服务发现的控制面机制:remote secret 如何让 istiod 跨集群 watch,Split-Horizon EDS 如何按网络重写端点为东西向网关地址;只讲机制边界,不做厂商评选或延迟排行。
从 istiod 的 NodeType 与推送过滤代码出发,说明 ztunnel(Rust L4、HBONE、per-node)与 waypoint(Envoy L7、per-namespace)是两类订阅完全不同的 xDS 客户端,并指出 ambient 推送优化仍是源码里明写的 TODO。
把翻译、推送、ACK、warming、身份五个责任层对齐到具体 istioctl 子命令与 Envoy admin 端点,给出核对顺序而非命令输出;命令语义均引用官方文档,不粘贴未执行的结果。
mTLS(双向 TLS)在微服务架构中实现服务间的身份认证和通信加密。本文从工程角度剖析 mTLS 的握手流程差异、证书分发的三种模式、SPIFFE/SPIRE 的标准化身份框架,以及 Istio 和 Linkerd 中 mTLS 的实现原理。覆盖性能开销测量、调试方法和大规模部署的证书轮换策略。
微分段是零信任在网络层的核心机制——从传统 VLAN 的广播域隔离,到 Kubernetes NetworkPolicy 的 IP 级别过滤,再到 Cilium 基于身份的 eBPF 执行和 Istio 的 L7 策略。本文拆解四层微分段技术的实现原理、性能差异和适用场景,以及从'全通'到'全白名单'的策略制定流程。
Kubernetes 实战笔记:高可用集群部署、Helm 包管理与 Istio 服务网格实践