天天看点

Istio pilot介绍

Pilot配置分发机制

Istio pilot介绍
  • Pilot负责网格中数据平面相关的配置信息的获取、生成及分发,它通过用户配置及服务注册表获取网格配置信息并将其转换为xDS接口的标准数据格式,而后经gPRC分发至相关的Envoy;
  • Service Registry:服务注册表中存储有相关平台上注册的各Service的相关信息,例如kubernetes的services等;
  • Config Storage:配置存储,例如Kubernetes的API Server,配置信息通常是由用户提供,对于Kubernetes来说,它们以kubernetes CRD格式提供并存储于API Server中;
  • 事实上,基于适配器机制,Pilot还可以从Mesos,、Cloud Foundry和Consul等平台中获取服务信息,而必要时用户也可以开发适配器将其他提供服务发现的组件集成到Pilot中;

Pilot流量管理的相关组件

  • Pilot工作架构的相关组件包括:pilot-discovery、k8s apiserver、Envoy(istio-proxy)、pilot-agent,以及命令工具istioctl和kubectl;
  • 事实上,Pilot项目自身的组件也是由工作于控制平面的polit-discovery和工作于数据平面的pilot-agent共同组成;
  • 控制平面相关组件
  • pilot-discovery:即图中的Discovery Services,它主要完成以下功能
  • 从Service Registry中获取服务信息;
  • 从API Server中获取配置信息;
  • 将服务信息和配置信息转化为Envoy的配置格式,并通过xDS API完成分发;
  • Kubernetes API Server
  • 配置存储系统,负责存储用户以kubernetes crd格式(例如VirtualService和DestinationRule等)提供的配置信息;
  • 数据平面相关组件:Istio proxyv2镜像启动的容器中会运行pilot-agent和envoy两个进程;
  • pilot-agent
  • 基于k8s api server为envoy初始化出可用的boostrap配置文件并启动envoy;
  • 监控并管理envoy的运行状态,包括envoy出错时重启envoy,以及envoy配置变更后将其重载等;
  • envoy
  • envoy由pilot-agent进程基于生成bootstrap配置进行启动,而后根据配置中指定的pilot地址,通过xDS API获取动态配置信息;
  • Sidecar形式的Envoy通过流量拦截机制为应用程序实现入站和出站代理功能;