本文已超過一年。較舊的文章可能包含過時的內容。請檢查頁面中的資訊自發布以來是否已變得不正確。

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 並在 Twitter 上關注 #kubeinvaders 新聞以保持更新。