前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Istio各模块组件的通信方式梳理

Istio各模块组件的通信方式梳理

作者头像
Allen.Wu
发布2019-12-12 16:30:41
1.4K0
发布2019-12-12 16:30:41
举报

Istio各模块组件的通信⽅方式梳理理总览

从istio的架构中,可以看到,整体组件包括Pilot、Mixer、Citadel、Proxy;其中Proxy 默认采⽤用Envoy,是可以替代为其他组件的。

但是istio的表现形态和架构模块组件的对应关系并⾮非⼀一个组件⼀一个Service服务,因此我 们⾸首先要弄弄清楚,每个模块组件对外提供服务的形态,然后再要弄弄清楚各个模块组件、各 个服务之间的通信⽅方式是如何,这样才能完整的把istio的整个流程给串串起来。

模块组件对应的服务形态

模块组件可以从istio官⽅方的架构图中获知;⽽而对应提供服务的形态则可以通过命令⾏行行kubectl get svc -n istio-system 来获取istio提供的所有服务。

Proxy(Envoy)

功能: 流量量代理理,不不可缺少

组件提供的服务形态: 通过Sidecar注⼊入到业务pod中

Pilot

功能: 服务发现、流量量管理理、智能路路由等

组件提供的服务形态: istio-pilot

Mixer

功能: 遥测、策略略相关

组件提供的服务形态: istio-telemetry【遥测】 istio-policy【策略略】

Citadel

功能: 安全相关,服务之间访问鉴权等

组件提供的服务形态: istio-citadel

Galley

功能: istio API配置的校验、各种配置之间统筹,为 Istio 提供配置管理理服务, 通过⽤用Kubernetes的Webhook机制对Pilot 和 Mixer 的配置进⾏行行验证

组件提供的服务形态: istio-galley

模块组件间的通信⽅方式

MixerMixer组件的两个进程mixs和mixc

Mixer组件的进程,包括mixs server 和 mixc; mixs提供gRPC API Server端,是⼀一个独⽴立的进程

提供Check 和 Report⽅方法,供所有实现了了Mixer API的client调⽤用 mixc 这个命令⾏行行⼯工具可以调⽤用 Istio Proxy 这个 集成了了Mixer Client的proxy代理理也可以调⽤用

对外提供gRPC服务,并且绑定端⼝口是9091 Report和Check的端⼝口都是9091

mixc 是⼀一个命令⾏行行⼯工具,可以测试、调试

可以调⽤用Mixer Server的Check API 和 Report API来进⾏行行Report和 Check;

Mixer需要⼀一组属性作为输⼊入,它使⽤用这些属性和配置来确定调⽤用哪个适配器器和使⽤用 哪个参数来输出遥测;这块的实现通过mixc去封装

Check 和 Report 对外提供的服务分别是istio-policy和 istio-telemetry

通过install/kubernetes/helm/istio/templates/configmap.yaml⽂文件可以看 到指定的mixerCheckServer地址和mixerReportServer地址

Mixer组件和Istio Proxy(Envoy)Istio Proxy提供两⼤大块:

Envoy Envoy 流量量相关

mixer Client 测量量和遥测相关,正因为集成了了mixer client,所以才能在Envoy流量量请 求的时候可以进⾏行行前置检查和后置上报 原有mixer client仓库是独⽴立的,现在已经整合到了了istio-proxy的代码仓 库中 这个 Mixer Client是提供了了mixer API 的C++的库

Mixer组件和Istio Proxy(Envoy) Envoy 和 istio-proxy的关系

Istio Proxy 这个项⽬目⼯工程既包含引⽤用了了Envoy的源码,还在此基础上⾃自 ⼰己做了了扩展,这个扩展是通过Envoy filter(过滤器器)的形式来提供,这 样的话就可以使得proxy代理理将策略略执⾏行行决策委托给Mixer,这样就解释 了了为什什么Mixer可以被设计为提供策略略和遥测的组件,Mixer<->istio proxy<->Envoy这种形式来控制。

Mixer组件和Istio Proxy(Envoy)

Mixer组件则提供Mixer Server进程服务,提供gRPC API 服务,通 gRPC Client端调⽤用

istio中的mixs(mixer server),就是Envoy要Check和Report的 地⽅方(ip+port = Service) istio中的mixc,只是⼀一个命令⾏行行⼯工具,可以调试⽤用,相当于是⼀一个 客户端⼯工具

Istio Proxy集成了了Mixer Client的库,因此可以通过这个库和Mixer Server之间进⾏行行通信,⽬目前都是采⽤用gRPC API的⽅方式来交互

Istio Proxy通过这个Client直接到Mixer Server中进⾏行行Check和 Report

Envoy Report和Check的过程 Envoy -> istio proxy -> Mixer

Envoy接受策略略改变的过程 Mixer -> istio proxy -> Envoy

Pilot Pilot的两个进程agent 和 discovery

pilot组件的进程有两个,包括pilot-agent和 pilot-discovery;

pilot-agent和Sidecar或者gateway的容器器运⾏行行在⼀一起,⽤用来管理理envoy代理理(Istio Proxy)

pilot-agent会启动envoy并且会根据Kubernetes API Server 中的配置信息⽣生成 Envoy 的静态配置⽂文件⽤用来更更新CDS, SDS, RDS 和 LDS相关的配置

pilot-discovery 和 Istio Proxy(Envoy)

pilot-discovery会创建Kubernetes的Controllers,然后监控Kubernetes的 Service/Endpoints/Node/Pod资源,最后⽣生成对外发布的服务注册数据,接⼝口形 式包括v1版本的http接⼝口和v2版本的gRPC接⼝口

⽬目前通过gRPC的⽅方式和Envoy之间进⾏行行服务发现的交互

Galley

暂⽆无

整体⼩小结和通信图

问题

Check API Mixer's API

参考

官⽅方⽂文档mixs-server

官⽅方⽂文档mixc

istio/istio官⽅方源码

istio/proxy官⽅方源码

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2019-09-07,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 后端系统和架构 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
容器服务
腾讯云容器服务(Tencent Kubernetes Engine, TKE)基于原生 kubernetes 提供以容器为核心的、高度可扩展的高性能容器管理服务,覆盖 Serverless、边缘计算、分布式云等多种业务部署场景,业内首创单个集群兼容多种计算节点的容器资源管理模式。同时产品作为云原生 Finops 领先布道者,主导开源项目Crane,全面助力客户实现资源优化、成本控制。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档