第三十三章 九析带你轻松完爆 Istio - fault injection 故障注入

网友投稿 413 2022-10-28

第三十三章 九析带你轻松完爆 Istio - fault injection 故障注入

系列文章:总目录索引:九析带你轻松完爆 istio 服务网格系列教程

目录

1 前言

2 邀约

3 故障注入简介

4 Istio 故障注入

5 Istio 故障注入实例

5.1 客户端资源文件

5.2 k8s 服务文件

5.3 部署工作负载(deployment)

5.4 虚拟服务文件

6 验证故障注入

1 前言

如果你对博客有任何疑问,请告诉我。

2 邀约

你可以从 b 站搜索 “九析”,获取免费的、更生动的视频资料:

3 故障注入简介

很多年前,我看过这样一部电影:

没错,周星驰演得,逃学威龙2。电影的开头讲述了周星驰的飞虎队执行反恐演习,在最后却误射了可爱的小骚妹。

但是这跟故障注入有神马关系呢?

周星驰的反恐演习其实并不是真的反恐,而只是演习;故障注入本身也并没有故障,而是人为引入故障。这种机制都是为了测试和提高体系健壮性的手段。

在程序开发过程中,我们经常会有这样的场景,比如要测试调用第三方服务失败后系统的反应,或者上游服务雪崩时下游服务逻辑处理等。如果没有故障注入,那么我们就只能采用断网、压测等手段模拟故障,但是这样的操作实在费事费力,一点都不随风。

4 Istio 故障注入

Istio 故障注入与其他在网络层引入错误(例如延迟数据包或者直接杀死 Pod)的机制不同,Istio 允许在应用程序层注入故障。这使得可以注入更多相关的故障,比如 HTTP 错误代码等。

Istio 可以注入两种类型的故障,而这两种故障都是使用虚拟服务来配置的:

延迟:模拟增加网络延迟或上游服务过载。中止:模拟服务故障而导致调用服务不可用。中止通常以 HTTP 错误代码或 TCP 连接失败表示

5 Istio 故障注入实例

本实例包括 4 个资源文件,3 个 k8s 相关,1 个 istio 相关:

jiuxi-client.yaml jiuxi-nginx-svc.yaml jiuxi-nginx-deploy.yamljiuxi-nginx-vs.yaml

5.1 客户端资源文件

jiuxi-client.yaml 内容如下:

执行如下语句进行 Istio 注入,注入后,此 client 将处于网格之内:

istioctl kube-inject -f jiuxi-client.yaml | kubectl apply -f -

Istio 注入成功成功如下图所示:

5.2 k8s 服务文件

jiuxi-nginx-svc.yaml 内容如下:

执行如下语句部署 service:

kubectl apply -f jiuxi-nginx-svc.yaml

5.3 部署工作负载(deployment)

jiuxi-nginx-deploy.yaml 内容如下:

部署语句如下:

kubectl apply -f jiuxi-nginx-deploy.yaml

5.4 虚拟服务文件

故障注入就在虚拟服务资源中,内容如下:

部署语句如下:

kubectl apply -f jiuxi-nginx-vs.yaml

自此,整个实例部署完毕。

6 验证故障注入

执行如下语句登录客户端:

kubectl exec -it client-5b77d5949f-clrb7 -- sh

使用 wget 访问 nginx-svc:

wget -q -O - 5s。除去我中间操作花去了大约 3s,发现最终的延迟确实是 5s。如下图所示:

自此,九析带你轻松完爆了 Istio 故障注入。

版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:MAX5881直接RF合成DAC与FPGA的接口
下一篇:为什么现在旗舰机有TYPE-C接口
相关文章

 发表评论

暂时没有评论,来抢沙发吧~