Istio
service mesh
实现
国外
linkerd, Istio
国内
蚂蚁自研,已开源
腾讯基于springcloud
华为自研
Istio
K8S和Istio相辅相成,Istio帮助K8S实现了服务治理的功能,而K8S为Istio实现了数据层面,服务发现等功能
虽然sidecar模式也存在缺点,但是和springcloud等的微服务模式相比可以实现业务代码和服务治理的解耦,显然更符合高内聚低耦合的原则
架构图
自动注入
在K8S创建Pod的时候,会修改原始的yml配置部署文件,添加一个container容器名为sidecar,镜像地址为sidecar的地址,该操作是无感知的
流量拦截
通信期间对网卡的出站和入站数据进行拦截控制
服务发现和负载均衡
Envoy向Pilot请求需要通信的服务地址和设置的负载均衡策略,从而根据相应的负载均衡策略选择正确的服务进行通信
流量控制
向Pilot请求流量规则,之后通过获取到的证书和密钥进行通信
访问安全
向Citadel发送请求获取证书和密钥再进行通信
服务监控
Mixer收集各Pod上报的数据并提供接口给其他监控工具调用来展示监控信息
策略执行
发送请求前先询问Mixer该请求是否可以发送,接收请求的时候也是向Mixer询问是否可接收
Pilot
在Istio架构中是必须的
-
类似注册中心,但是不存储具体的注册信息,而是对接第三方注册中心,由第三方注册中心完成注册信息的存储和管理
-
向数据平面下发路由规则,将配置的路由规则转换成Envoy能识别的格式并下发,Envoy根据路由规则进行负责均衡
Mixer
在Istio架构中不是必须的
负责数据收集并提供接口给第三方监控平台,如Promethues
负责策略执行,即告诉Envoy该请求是丢弃还是继续下发
Citadel
在Istio架构中不是必须的
Istio的认证授权机制主要由它完成,需要与其他组件一起配合完成
支付类产品为了保证安全性用得比较多
Galley
类似配置中心
Sidecar-injector
在pod启动时自动注入一个sidecar容器,对用户是透明的,与业务代码容器分离,降低了业务代码复杂度
Proxy(Envoy)
sidecar,负责数据平面与控制平面的交互
IngressGateway
向外暴露统一访问端口
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY