在K8S上部署的微服务,经常会依赖不受你控制的其他微服务。当两者之间的HTTP交互出现延迟或错误后,你的微服务能否按预期正常工作?应该做一个故障注入实验来检验一下。如果在K8S上使用了Istio,那么恭喜你,你已经拥有了简单易用的混沌工程开源工具。
一句话介绍
虽然Istio主要作为K8S服务网格,用于连接、保护、控制和观察服务,但在其流量管理功能中也支持故障注入。
关键特性
Istio 可以将HTTP延迟或 HTTP 错误注入任何虚拟服务之间的网络流量中。 实验以 Kubernetes manifest形式定义。可以使用现有的 Istio 功能(例如虚拟服务和路由规则)来选择故障注入目标。 还可以使用运行状况检查和 Envoy 统计数据来监控故障注入对系统的影响。
故障注入实验利用了 Istio 在网络中的地位来执行实验,而无需添加任何额外的混沌工程工具或功能。
适用平台
K8S
适用场景
如果已经使用了 Istio,那么这可以直接用它在集群上运行混沌实验,而无需部署或学习其他工具。 否则,仅仅为了这两种故障注入功能就部署 Istio ,就不值了。
优势
故障注入功能原生内置于 Istio 中。 无需额外设置。
实验以简单的 Kubernetes manifest形式表现。
劣势
只有HTTP延迟或 HTTP 错误这两种实验类型。
如果没有使用 Istio,仅仅为了这个故障注入功能而使用它就不值得了。
实验无法在主机上安排和执行,无法深入定制,也无法在 Istio 之外使用。
案例
我的好朋友,知乎用户陈计节贡献了以下案例。
“我们曾经在一个页面上发现,如果用户点击太快,当某一两个 API 还没有加载完成的时候,用户就已经提交了表单。此时就有可能造成提交的数据不完整。复现这个问题时,我们把浏览器网速改为 3g 模式,就可以显著提升复现率。之后确认了问题,开发同学修复后,为了让测试同学能够复现并验证修复的有效性,我们就提供了 一个 istio delay 规则,在服务端给特定 API 增加延时。”
开源许可证
Apache-2.0 license
Github点赞数
33.5k
最近发布日期与版本
2023.07: Istio 1.18.2
所属项目
CNCF云原生计算基金会项目
* * *
本文参考了Gremlin公司的文章Comparing Chaos Engineering tools
在K8S下检验微服务稳定性,还有什么好用的开源工具?你还希望我聊有关混沌工程的其他什么新话题?欢迎在评论区留言。我会仔细阅读每一条留言。期待听到你的声音。
如果觉得本文对你有帮助,欢迎点赞,并转发给其他志同道合的小伙伴。
企业生意好,系统运行稳。你所阅读的文章,来自“吾真本说混沌工程”知乎专栏。