【04】Istio的pilot流量分发机制

4.1 Pilot配置分发机制

  • Pilot负责网格数据平面相关配置信息的获取,生成,和分发,它通过Service Registry获取网格配置信息并将其转换为XDS接口的标准数据格式,而后经gRPC分发至相关的Envoy;
  • Service Registry:服务注册表中存储有相关平台上注册的各Service的相关信息,例如kubernetes services等;

  • Config Storage: 配置存储,例如Kub ernetes的API Server,配置信息通常由用户提供,对于kubernetes来说,他们以CRD格式提供并存储于API Server中;

  • 事实上,基于适配器机制,Pilot还可以从Mesos,cloud foundry和consul等平台获取服务信息。

4.2 Pilot流量管理相关组件

  • Pilot工作架构的相关组件包括:pilot-discovery、k8s api-server、istio-proxy、pilot-agent以及命令

    istioctl和kubectl;

  • 事实上,pilot项目自身的组件也是由工作于控制平面的pilot-discovery和工作于数据平面的pilot-agent共同组成;

  • 控制平面相关组件

    • pilot-discovery:也就是上图中的Discovery services,它主要完成以下功能:
      1. 从Service Registry中获取服务信息;
      2. 从API Service中获取配置信息;
      3. 将服务信息和配置信息转化为Envoy的配置格式,并通过XDS API完成分发;
    • Kubernetes API Server
      1. 配置存储系统,负责存储用户以及CRD格式(VS和DR)提供的配置信息;
  • 数据平面相关组件: proxyv2镜像启动的容器会运行pilot-agent和envoy两个进程;

    • pilot-agent
      1. 基于K8S apiserver为envoy初始化可用的bootstrap配置文件并启动envoy;
      2. 监控并管理envoy的运行状态,包括envoy出错时重启envoy,以及envoy配置变更后将其重载;
    • envoy
      1. envoy由pilot-agent进程基于生成的bootstrap配置进行启动,而后根据配置中指定的pilot地址,通过XDS API获取动态配置;
      2. Sidecar形式的Envoy通过流量拦截机制为应用程序实现入站和出战代理功能;

4.3 流量治理

  • Istio 的流量路由规则使运维人员 可以轻松控制服务之间流量及API调用
    • Istio简化了诸如断路器,超时,重试之类的服务级别属性的配置;
    • 还提供了开箱即用的故障恢复功能,有助于使应用程序更强大,以防止相关服务和网络故障;
  • 使用istio进行流量管理从本质上是将流量与底层基础架构的伸缩机制解耦。
    • Pilot和Envoy proxy负责实现流量规则中定义的流量传输机制;
    • 例如,可以通过pilot指定您希望特定服务的5%流量到canary版本,而与canary部署的大小无关,或者根据请求的内容将流量发送特定版本;
  • Istio的所有路由规则和控制策略都是基于kubernetes CRD实现,这包括网络功能相关的VirtualService、DestinationRule、Gateway、ServiceEntry和EnvoyFilter等;
相关推荐
分布式存储与RustFS5 天前
MinIO 官方 Docker 镜像被移除:依赖它的项目该怎么办
docker·云原生·devops·对象存储·minio·分布式存储
codeejun5 天前
每日一Go·MySQL-5、锁机制全解析
云原生·golang
张洛闻Eren5 天前
k8s云原生【第十课】:水平 Pod 自动扩缩容
运维·数据库·云原生·kubernetes·github
不吃香菜kkk、5 天前
CI/CD(GitOps)学习与部署手册
运维·云原生·容器·kubernetes·云计算·jenkins·argocd
ChaITSimpleLove5 天前
云原生性能对决:JDK21虚拟线程+GraalVM vs .NET10/11 技术栈深度对比
微服务·云原生·serverless·graalvm native·native aot·runtime async·.net11/java21
春天花会开1316 天前
Supabase 自部署 Edge Functions 超时从 60s 延长到 360s 完整复盘
运维·云原生
ysu_03146 天前
【2026】K8s GPU调度空占怎么解?Kueue与Volcano Gang配置
云原生·kubernetes·gpu算力·volcano·ai基础设施·kueue·gang scheduling
天天喝旺仔7 天前
分布式服务容错实战:用 Sentinel 实现限流、熔断与降级
分布式·微服务·云原生·sentinel
逐流人7 天前
Containerd容器管理实战:从架构原理到nerdctlcrictl工具链
linux·运维·云原生·容器·云计算·containerd
运维开发王义杰8 天前
跨项目直连数据库:是架构反模式,还是现实的工程妥协?
云原生