官网: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://img-blog.csdnimg.cn/direct/f0e1fa745e2b43dcaf6f190b965c552a.png)
![](https://img-blog.csdnimg.cn/direct/31b07e3898184c1884eb7d5c582e1ef1.png)
部署示例应用
![](https://img-blog.csdnimg.cn/direct/ad9a0751b97542a1ac1267c8bc90a6ec.png)
架构图
![](https://img-blog.csdnimg.cn/direct/e24854ad775842ba9f156c2823d16f2a.png)
创建 Istio入站网关
调用链追踪(仪表板)
修改服务访问方式为LoadBalancer
访问kiali
流量管理
将所有流量路由到每个微服务的 v1 版本
![](https://img-blog.csdnimg.cn/direct/d0b47181f51748819d069d1b9a094a95.png)
![](https://img-blog.csdnimg.cn/direct/d6f2c4920a7648478c304b7013ccc73b.png)
![](https://img-blog.csdnimg.cn/direct/299283b6d7a848e4840836b1adc47fa0.png)
来自名为 Jason 的用户的所有流量将被路由到服务 reviews:v2
测试
创建故障注入规则以延迟来自测试用户jason的流量
![](https://img-blog.csdnimg.cn/direct/36b70da4155148f0976b575b60333496.png)
设置流量转移,从v2转到v3
![](https://img-blog.csdnimg.cn/direct/a25af8a41c93469f8119d927cb038300.png)
![](https://img-blog.csdnimg.cn/direct/69f5584974a54bebbdd1e948b7efe946.png)
修改延迟规则为两秒
![](https://img-blog.csdnimg.cn/direct/6d999ec837494535b2d7687bea9e9068.png)
![](https://img-blog.csdnimg.cn/direct/4450777f91ac4a259d0b01229782340f.png)
![](https://img-blog.csdnimg.cn/direct/af93a21105654c66ab6dce859a19a8ab.png)
把 50% 的流量从 reviews:v1 转移到 reviews:v3
测试完后,当reviews:v3 微服务稳定时,可以通过应用Virtual Service规则将100%的流量路由reviews:v3
![](https://img-blog.csdnimg.cn/direct/bfd3ecf98f2e44c5a820d515c6603c1b.png)
![](https://img-blog.csdnimg.cn/direct/9f20d2dda38a47979ece62ca85d0d0b2.png)
回收清理
![](https://img-blog.csdnimg.cn/direct/6f8acfa507874684802e13bbc8d980c0.png)
熔断
部署 httpbin 服务
![](https://img-blog.csdnimg.cn/direct/8a06447a4af5479b8dd5383b54f2f577.png)
![](https://img-blog.csdnimg.cn/direct/1cfd7bb912dd49c0b39bc6d77f12baf9.png)
配置一个熔断器
![](https://img-blog.csdnimg.cn/direct/f1a9ba74db524e518d4da102480ad5ee.png)
![](https://img-blog.csdnimg.cn/direct/3225af5b4e2b4e58880ae321b853a2d6.png)
测试一下连接
![](https://img-blog.csdnimg.cn/direct/a4523e98db97424fbb547794fa9ee75d.png)
触发熔断器
![](https://img-blog.csdnimg.cn/direct/478ba3613a2e49c296d9ba8f823c8322.png)
![](https://img-blog.csdnimg.cn/direct/b2574583697644879457ec66b39f1d39.png)
istio-proxy 允许存在一些误差。
将并发连接提高到三个
![](https://img-blog.csdnimg.cn/direct/30c242e176b544e5bb327ddb25147909.png)
![](https://img-blog.csdnimg.cn/direct/481e7c681cf64843b557b284a1d364c2.png)
将并发连接提高到6个
![](https://img-blog.csdnimg.cn/direct/e657d17aa7c743e9a475c80a1a6ffe4d.png)
![](https://img-blog.csdnimg.cn/direct/01fc805f99624fd18bd6e6269bdb32a5.png)
当并发数和请求次数达到一定数量时,数据将均被熔断器拦截。
清理
![](https://img-blog.csdnimg.cn/direct/5e922e8a258647c0b0eea06bd36b2726.png)
卸载istio
![](https://img-blog.csdnimg.cn/direct/b8109d8fc6a34583b999e68cb780f776.png)