官网:https://istio.io/latest/zh/about/service-mesh/
Istio与k8s的区别
SpringCloud传统微服务结合k8s与Istio与k8s结合:
Istio数据面:通过envoy以sidecar方式拦截svc的流量来进行治理。
Istio控制面:pilot list/watch APIserver 获取相关数据。istio配置也是通过istioctl/kubectl写入apiserver。
Istio基础概念:
Gateway:提供外部服务访问接口,可发布任意内部端口的服务,供外部访问。配合VirtualService使用,使用标准的Istio规则处理。
VirtualService:最核心的配置接口,定义指定服务的所有路由规则。
DestionationRule:决定路由处理之后的流量访问策略,负载均衡、断路器、TLS设置等。 ServiceEntry:将外部服务接入到服务注册中,让Istio中自动发现的服务能够访问和路由到这些手 动加入的服务。与VirtualService或DestinationRule配合使用。
Istio安装
demo专为测试准备的功能集合
给命名空间添加标签,指示 Istio 在部署应用的时候,自动注入 Envoy 边车代理
![](https://i-blog.csdnimg.cn/blog_migrate/81a56da59501e3542e6515cb61410399.png)
![](https://i-blog.csdnimg.cn/blog_migrate/4bd85ef6581cfd06cbfa0c736f25e801.png)
部署示例应用
![](https://i-blog.csdnimg.cn/blog_migrate/ddf5c9518930707013b49a83a6e725f7.png)
架构图
![](https://i-blog.csdnimg.cn/blog_migrate/ed8b98b5b4b428a9b6ec42d035ad16b2.png)
创建 Istio入站网关
调用链追踪(仪表板)
修改服务访问方式为LoadBalancer
访问kiali
流量管理
将所有流量路由到每个微服务的 v1 版本
![](https://i-blog.csdnimg.cn/blog_migrate/b922bdcdf87db7728fef7c654e74febc.png)
![](https://i-blog.csdnimg.cn/blog_migrate/9c86dbb0f0adb6f90344caac8784c464.png)
![](https://i-blog.csdnimg.cn/blog_migrate/7fa96ddf2b6bbcf42a2d4a09045d05c2.png)
来自名为 Jason 的用户的所有流量将被路由到服务 reviews:v2
测试
创建故障注入规则以延迟来自测试用户jason的流量
![](https://i-blog.csdnimg.cn/blog_migrate/7555dd4ecfc478fafad0ccbe03d640d2.png)
设置流量转移,从v2转到v3
![](https://i-blog.csdnimg.cn/blog_migrate/11a9e45773c57c98951a4ae9319de18e.png)
![](https://i-blog.csdnimg.cn/blog_migrate/6ce3eab4e15d8e4f36726cbc24e1c925.png)
修改延迟规则为两秒
![](https://i-blog.csdnimg.cn/blog_migrate/5aa6bf56e0bd3fdfaa9b983b100cc540.png)
![](https://i-blog.csdnimg.cn/blog_migrate/3733b637c1c0644f789093101b023788.png)
![](https://i-blog.csdnimg.cn/blog_migrate/84d52b4e5a23cc85ed8e1c89d7f51bf0.png)
把 50% 的流量从 reviews:v1 转移到 reviews:v3
测试完后,当reviews:v3 微服务稳定时,可以通过应用Virtual Service规则将100%的流量路由reviews:v3
![](https://i-blog.csdnimg.cn/blog_migrate/8c409aeae8837b3c2ddc2373f37721fa.png)
![](https://i-blog.csdnimg.cn/blog_migrate/4a983b6a8a33857f6da3d2e04643652e.png)
回收清理
![](https://i-blog.csdnimg.cn/blog_migrate/452fc47393b55afe4bde3724151d6ffe.png)
熔断
部署 httpbin 服务
![](https://i-blog.csdnimg.cn/blog_migrate/944fe022aa85bdf2967ebeab8ec8c4c7.png)
![](https://i-blog.csdnimg.cn/blog_migrate/7aeb2691bcc7c88cf9fa1724e0497f51.png)
配置一个熔断器
![](https://i-blog.csdnimg.cn/blog_migrate/b17532a690e9f44279e8af44c811a21b.png)
![](https://i-blog.csdnimg.cn/blog_migrate/afef6a5194323615712c130e17e189d8.png)
测试一下连接
![](https://i-blog.csdnimg.cn/blog_migrate/9a0a8cd5911d5bec8aec2c870a0f2b65.png)
触发熔断器
![](https://i-blog.csdnimg.cn/blog_migrate/fdfc2191519648ec9b02272c87088a2c.png)
![](https://i-blog.csdnimg.cn/blog_migrate/8b671ca673aec3ccdb643449fb32d3c5.png)
istio-proxy 允许存在一些误差。
将并发连接提高到三个
![](https://i-blog.csdnimg.cn/blog_migrate/ba23cfb25bab8ab037465d6aeebd4e13.png)
![](https://i-blog.csdnimg.cn/blog_migrate/cd300791b20ea8d2c3707561d3b09ed7.png)
将并发连接提高到6个
![](https://i-blog.csdnimg.cn/blog_migrate/0b4be310dcc804f8dacfa0651c7b5835.png)
![](https://i-blog.csdnimg.cn/blog_migrate/6c33e1b241ace3123f765e6b5b0793cf.png)
当并发数和请求次数达到一定数量时,数据将均被熔断器拦截。
清理
![](https://i-blog.csdnimg.cn/blog_migrate/c11bb406610e0da0df7acb96d0961198.png)
卸载istio
![](https://i-blog.csdnimg.cn/blog_migrate/08ffdfd1a7149d1cd6322e83ec0f9f17.png)