开发者学堂课程【微服务实战-Service Mesh 与 Istio:Istio 流量管理】学习笔记,与课程紧密联系,让用户快速学习知识。
课程地址:https://developer.aliyun.com/learning/course/620/detail/9436
Istio 流量管理
目录:
一、代码
二、绑定工作
三、流量控制功能
四、Istio流量转移
五、故障注入
如何使用lstio来进行:
1. 配置请求路由
2. 流量转移
3. 故障注入
一、 代码
流量apiVersion: networking. istio . io/vlalpha3kind: DestinationRule
metadata:
name: revi ewa
Bpec:
host: reviewa
subsets :
name: vl
labels :
version: v1
name: v2
labels:
vergion: v2
name: v3
labels:
version: v3
apiversion: networking. istio. io/vlalpha3kind: Destinat ionRule
metadata :
name: ratinge
spec:
host: ratinga
eubsets :
name: v1
labels:
version: vl
name: v2
labels:
version: v2
name: v2-mysql
labels:
version: v2-mysql
name: v2-myBql -VT
labels:
version: v2-mysql-vn
apiVersion: networking. istio. io/vlalpha3kind: DestinationRule
metadata:
name: detaila
врес:
host: detaile
subsets :
name: v1
labels :
vergion: vl
name: v2
1ahela: .
version: v2
二、绑定工作
US- 169691-MP:istio andy.shi$ kubectl apply -f samples/ bookinfo/ networking/destinat ion-rule-ail-mtls. yaml
destinationrule
.
networking . istio. io/ productpage created
destinationrule. networking. istio.io/reviews created
destinationrule . networking.istio.io/ratings created
destina tionrule . networking. istio.io/details created
US-169691-MP:istio andy.shi$ I
创建了四条 destinationrule
三、 流量控制功能
流量控制功能是 lstio 一个主要功能。先看 Book Reviews 的应用程序,访问配置:
An extremely entertaining play by Shakespeare. The slapstick humour isrefreshing!
- Reviewer1
Absolutely fun and entertaining. The play lacks thematic depth when compared toother plays by Shakespeare.
一 Reviewer2
刷新,发现没有评级的信息了。评级颜色发生变化,发生这种变化的原因如下:
US-169691-MP:istio andy.shi$ku bectlget pods
NAME READY STATUS RESTARTS AGE
details-v1-6978996b-cbsdn 2/2 Running 0 3h25m
productpage-v1-7658b8dcc6-g642s 2/2 Running 0 3h25m
ratings-v1-84975bc778-grpcm 2/2 Running 0 3h25m
reviews-v1-5787f7b87-42jqz 2/2 Running 0 3h25m
reviews-v2-6d8b975647-t5fgp 2/2 Running 0 3h25m
reviews-v3-7d5549f9-n9wwh 2/2 Running 0 3h25m
US-169691-MP:istio andy.shi$
共三种版本,现在需要把三种版本变成一个版本,需要重新定义,重新定义后一直刷新,就只有一个版本了。这就是如何配置请求路由,配置完成后需要清理掉,这样不会影响后续。
四、 Istio 流量转移
就对流量进行切割,一个流量倒向一部分,一部分流量导向另一个切割地。reviews有三个子集,v1,v2,v3,此时把配置文件加载出来,再看效果。先刷新一下,评级颜色发生变化,再刷新,也会发生变化,占50%的比例,这就是对路由进行的分配。
spec:
hosts:
http:
route:
destination:
host: reviewssubset: v1
weight: 50- destination:
host: reviewssubset: v3
weight: 50
在结束后也不要忘记清理掉配置:
US-169691-MP:istio andy.shiS kubectl delete -samples/bookinfo/networking/virtual-service-5li-v1.yam1
.
五、故障注入
在分布式的应用环境下或为微服务的框架下,很难去模拟如果有一个服务不存在的时候,那么另一个服务会怎么样,有什么方法去表现,此时需要用故障注入的方法,一个服务不存在了另一个服务有什么变化一或者个服务响应慢了另一个服务会有什么表现,能够帮我们测试,也能使应用框架更加强健。
测试整个应用程序端到端的故障恢复能力。
在这次的练习中,用延迟进行故障注入,延迟是计时故障,模拟网络延迟上升或上游服务超载。通过延迟模拟当一个服务不存在,或者服务响应超时的情况下对另一个服务的表现。现在用的例子是lstio自己的例子,他们的文档很复杂难懂,完全是没有必要的。
故障注入其实很简单。用 http 发请求,http 有一个 end user 是 Jason 时,会产生一个延迟,延迟指的是七秒钟的时间,比例是100%
对服务就会有七秒的延迟,没有必要那么复杂。
用 http 发请求,http 有一个 end user 是 Jason 时,会产生一个延迟,延迟指的是七秒钟的时间,比例是100%
对服务就会有七秒的延迟,没有必要那么复杂修改文件,把七秒改成十五妙或者二十秒钟会容易很多,现在把
virtual service 写出来:networking.istio.io/ratings createdUS-169691-MP:istio
andy. shi$
,一切正常。制作Please sign in:
jason
。
中断是模拟上游服务的崩溃故障,这是一个很好的测试方式。不要忘记删除掉前面的课程,不然会影响其他的课程。