这篇文章已经超过一年了。较旧的文章可能包含过时的内容。请检查页面中的信息自发布以来是否已变得不正确。

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

我定义了多种安装模式

  1. Helm Chart https://github.com/lucky-sideburn/KubeInvaders/tree/master/helm-charts/kubeinvaders

  2. 使用模板在 Openshift 上手动安装 https://github.com/lucky-sideburn/KubeInvaders#install-kubeinvaders-on-openshift

  3. 在 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 上保持更新。