本文已超過一年。較舊的文章可能包含過時的內容。請檢查頁面中的資訊自發布以來是否已變得不正確。
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 並在 Twitter 上關注 #kubeinvaders 新聞以保持更新。