这篇文章已经超过一年了。较旧的文章可能包含过时的内容。请检查页面中的信息自发布以来是否已变得不正确。
KubeInvaders - Kubernetes 的游戏化混沌工程工具
几个月前,我发布了我的最新项目 KubeInvaders。我第一次与社区分享它是在 Openshift Commons Briefing 会议期间。Kubenvaders 是一款用于 Kubernetes 和 Openshift 的游戏化混沌工程工具,可以帮助您以一种有趣的方式测试 Kubernetes 集群的弹性。
它就像太空侵略者,但外星人是 Pod。
在我在 2019 年米兰 Codemotion 上的演讲中,我开始说“当然你可以用几行 Bash 完成它,但这很无聊。”
使用上面的代码,你可以杀死 Kubernetes 集群中随机的 Pod,但我认为使用 KubeInvaders 的宇宙飞船会更有趣。
我将代码发布在 https://github.com/lucky-sideburn/KubeInvaders 上,并且有一个小社区正在逐渐壮大。有些人喜欢在演示会话中使用它,在大屏幕上杀死 Pod。
如何安装 KubeInvaders
我定义了多种安装模式
Helm Chart https://github.com/lucky-sideburn/KubeInvaders/tree/master/helm-charts/kubeinvaders
使用模板在 Openshift 上手动安装 https://github.com/lucky-sideburn/KubeInvaders#install-kubeinvaders-on-openshift
在 Kubernetes 上手动安装 https://github.com/lucky-sideburn/KubeInvaders#install-kubeinvaders-on-kubernetes
当然,首选的方式是使用 Helm Chart
# Please set target_namespace to set your target namespace!
helm install --set-string target_namespace="namespace1,namespace2" \
--name kubeinvaders --namespace kubeinvaders ./helm-charts/kubeinvaders
如何使用 KubeInvaders
一旦安装到您的集群上,您可以使用以下功能
- 键 'a' — 切换到自动驾驶模式
- 键 'm' — 切换到手动驾驶模式
- 键 'i' — 显示 Pod 的名称。将飞船移动到外星人处
- 键 'h' — 打印帮助
- 键 'n' — 在不同的命名空间之间跳转(我最喜欢的功能!)
调整 KubeInvaders
在 2019 年米兰 Codemotion 上,我和我的同事组织了一个办公桌,上面有一个游戏站来玩 KubeInvaders。人们必须与 Kubernetes 作战才能赢得一件 T 恤。
如果您的 Pod 需要几秒钟才能启动,您可能会输掉。可以使用这些参数作为 Kubernetes 部署中的环境变量来设置游戏的复杂性
- ALIENPROXIMITY — 减小此值以增加外星人之间的距离;
- HITSLIMIT — 射击前等待的 CPU 时间(秒);
- UPDATETIME — 等待更新 Pod 状态的时间(秒)(也可以设置为 0.x 例如:0.5);
结果是与机器进行更困难的游戏体验。
用例
为您的生产环境采用混沌工程策略非常有用,因为这是测试系统是否支持意外破坏性事件的唯一方法。
KubeInvaders 是一款游戏 — 所以请不要太当真!— 但它演示了一些重要的用例
- 测试 Kubernetes 集群在意外 Pod 删除时的弹性
- 收集诸如 Pod 重启时间之类的指标
- 调整就绪探针
下一步
我想继续添加一些很酷的功能,并将其集成到 Kubernetes 仪表板中,因为我计划将其转换为“Kubernetes 的游戏化混沌工程和开发工具”,以帮助开发人员与 Kubernetes 环境中的部署进行交互。例如
- 指向外星人以获取 Pod 日志
- 通过射击某些特定对象来部署 Helm Chart
- 读取存储在部署中特定标签中的消息
请随时贡献给 https://github.com/lucky-sideburn/KubeInvaders,并通过关注 #kubeinvaders 新闻 在 Twitter 上保持更新。