聊聊istio服务网格

聊聊istio服务网格

微服务的缺点:

注意:不能说拆分太细,导致分布式问题,因为服务网格也仍然有这个问题;

正是微服务架构的缺点,而演进的服务网格新架构,是一种新型的微服务架构;

服务网格本质上是服务于微服务的,主要是作为一个基础设施层,将流控负载等数据面操作从微服务中解耦出来;

抽离的基础设施是sideCar(边车),看做是微服务的一个代理。

service Mesh,也就是服务网格:如istio来说,解决了服务与服务之间通讯的问题。通讯包括服务发现、负载均衡、监控、AB测试、速率限制、访问控制;

服务网格负责与云原生进行可靠性的传递;

相比推特的linked服务网格产品,istio多了控制平台组件,用于管理side car(每个服务的通信功能拆成一个side car,这样开发只需服务中的业务即可,但维护成本变高了)

还可将其他治理功能从业务代理中剥离开来,放到sideCar中治理,如下图腾讯云的服务网格:

istio介绍

特点:非侵入性;

解决了服务与服务之间通讯的问题。通讯包括服务发现、负载均衡、监控、AB测试、速率限制、访问控制;

引入istio,可以做到用户代码几乎不需要改动,而且可以做到用户代码与服务治理无感;

微服务改进前后

左边是传统微服务,右边是引入istio后的架构。数据平面就是业务代码,而控制平面是控制数据平面的组件;

特征:连接、安全、策略(控制接收流量的策略)、观察;

连接是指网格内服务之间的通信,面临以下问题:

而istio正是来解决这些问题;

istio与服务治理

平时的springcloud,微服务与服务治理组件在同一个进程。弊端是,使用sentinel还是侵入性比较强,而且需要与微服务用同一种语言开发。

所以引入istio的治理方式:

istio与k8s的关系

k8s为云原生提供基础设施平台;

k8s部署的容器服务,已提供了网络互通,但是k8s没有对服务进行服务治理,而istio就帮助k8s实现服务治理。

而k8s帮istio的工作,画图如下:

(数据平面,是一个pod中部署了service容器和对应的side car容器)

如上图就是介绍在k8s实现数据平面、统一服务发现、基于CRD规则扩展自定义资源(CRD 的核心思想是通过声明式的 API 来扩展 Kubernetes 的功能。你可以定义自己的资源结构,然后像操作 Kubernetes 内建资源一样操作这些自定义资源);

istio的整体架构


istio分为控制平面和数据平面;

引入istio后的访问流程:

请求经过gateway后,转发到pod里服务,由同一个pod的另一个代理容器envoy拦截,会调用控制平面的pilot接口获取服务的提供者列表以及负载均衡配置(所以说pilot实现了服务发现机制),才能选出一个具体的服务提供者。而且为了访问安全性,在调用服务提供者之前,还需在控制平面的citadel组件获取服务提供者的证书与秘钥。而通信双方的envoy还要上报访问的数据给控制平面的Mixer组件,便于控制平面的监控。

①:对于side car(代理容器)是自动注入的,在创建pod时,是k8s的控制平面的api server接收kube命令,它会修改yaml文件,在资源配置后添加创建代理的配置,接着按正常创建pod;

②流量拦截,envoy接收数据包后,是由iptables来对数据包进行校验以及转发;

③服务发现,由envoy流量拦截后,就会请求控制平面的pilot组件去发现服务提供者里的列表;

④负载均衡,从发现的服务提供者列表中负载到一个具体的提供者;

⑤每个pod的envoy从pilot获取流量调用规则;
⑥关注的是调用双方的安全;

⑦调用双方的envoy都会各自上报数据给控制平面的Mixer,这样控制平面就能采集双方调用日志;

⑧策略的执行,控制服务与服务之间的访问,是拒绝调用服务,还是允许,控制权限也来自Mixer;

调用另一个pod的服务时,先访问控制平面的Mixer,看是否具有访问权限;

⑨外部访问,就是外部请求到gateway,然后转发请求给前端的pod服务;

如有需要收藏的看官,顺便也用发财的小手点点赞哈,如有错漏,也欢迎各位在评论区评论!

相关推荐
阿里云云原生3 小时前
HiRoute 新版本发布:结合自己的真实工作选择最佳模型
云原生
对象存储与RustFS6 小时前
Velero 接 RustFS 实操:K8s 集群备份落到自建对象存储
后端·docker·云原生
.冰块.9 小时前
流量大了自动加 Pod!K8s HPA 扩缩容与 ResourceQuota/LimitRange 资源管控实战
linux·云原生·容器·kubernetes·hpa·quota·limitrange
Z21-X11 小时前
云原生运维实战笔记:企业网站综合上云部署与云运维服务全景解析
运维·笔记·学习·云原生
qq_4523962312 小时前
第三篇:《从 ZooKeeper 到 KRaft 的迁移实战:前置条件、三阶段流程与回滚策略》
分布式·zookeeper·云原生
分布式存储与RustFS12 小时前
Longhorn 的卷备份别堆本地盘:用 RustFS 给它当 S3 备份目标
运维·云原生·开源·对象存储·分布式存储·s3·性能基准
DolitD1 天前
UE像素流与云渲染技术方案对比分析
3d·云原生·ue5·云计算·图形渲染
这个DBA有点耶1 天前
云数据库半夜卡顿,CPU才30%?深挖云盘IOPS突发限制与内核挂起机制
数据库·mysql·云原生
分布式存储与RustFS1 天前
JuiceFS 接 RustFS 当数据后端:把对象存储挂成本地文件系统
运维·云原生·开源·对象存储·分布式存储·s3·性能基准
孔令飞1 天前
很多人想学AI Infra,今天推荐一个 AI Agent / AI Infra 学习路线
云原生·go·ai编程