云社区 博客 博客详情
云社区 博客 博客详情

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

Winniebear 发表于 2020-05-20 19:51:13 05-20 19:51
Winniebear 发表于 2020-05-20 19:51:13 2020/05/20
0
0

【摘要】 系列文章:总目录索引:九析带你轻松完爆istio 服务网格系列教程目录1前言2邀约3故障注入简介4Istio故障注入5Istio故障注入实例    5.1客户端资源文件    5.2k8s服务文件    5.3部署工作负载(deployment)    5.4虚拟服务文件6验证故障注入1前言        如果你对博客有任何疑问,请告诉我。2邀约        你可以从b站搜索...

系列文章:


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

目录

1 前言

2 邀约

3 故障注入简介

4 Istio 故障注入

5 Istio 故障注入实例

    5.1 客户端资源文件

    5.2 k8s 服务文件

    5.3 部署工作负载(deployment)

    5.4 虚拟服务文件

6 验证故障注入


1 前言

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

1.png


2 邀约

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

clipboard2.png


3 故障注入简介

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

spacer.gifclipboard3.png

        没错,周星驰演得,逃学威龙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.yaml

jiuxi-nginx-vs.yaml

5.1 客户端资源文件

        jiuxi-client.yaml 内容如下:

spacer.gifclipboard4.png

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

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

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

spacer.gifclipboard5.png

5.2 k8s 服务文件

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

spacer.gifclipboard6.png

        执行如下语句部署 service:

kubectl apply -f jiuxi-nginx-svc.yaml

5.3 部署工作负载(deployment)

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

spacer.gifclipboard7.png

        部署语句如下:

kubectl apply -f jiuxi-nginx-deploy.yaml

5.4 虚拟服务文件

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

spacer.gifclipboard8.png

        部署语句如下:

kubectl apply -f jiuxi-nginx-vs.yaml

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


6 验证故障注入

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

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

        使用 wget 访问 nginx-svc:

wget -q -O - http://nginx-svc

        发现延迟生效,因为设置的延迟时间是 5s。除去我中间操作花去了大约 3s,发现最终的延迟确实是 5s。如下图所示:

spacer.gifclipboard9.png

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

文章来源: blog.51cto.com,作者:九析,版权归原作者所有,如需转载,请联系作者。

原文链接:https://blog.51cto.com/14625168/2496878

登录后可下载附件,请登录或者注册

【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件至:huaweicloud.bbs@huawei.com进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容。
评论文章 //点赞 收藏 0
点赞
分享文章到微博
分享文章到朋友圈

评论 (0)


0/1000
评论

登录后可评论,请 登录注册

评论

您还没有写博客的权限!

温馨提示

您确认删除评论吗?

确定
取消
温馨提示

您确认删除评论吗?

删除操作无法恢复,请谨慎操作。

确定
取消
温馨提示

您确认删除博客吗?

确定
取消

确认删除

您确认删除博客吗?

确认删除

您确认删除评论吗?

温馨提示

登录超时或用户已下线,请重新登录!!!

确定
取消