Chaos-mesh
在 Kubernetes 裡放個破壞小精靈,檢視你系統的韌性以及看你能不能抓到他
Last updated
Was this helpful?
在 Kubernetes 裡放個破壞小精靈,檢視你系統的韌性以及看你能不能抓到他
Last updated
Was this helpful?
增加 helm repo
新增 namespaces
下載 helm values.yaml 檔案
編輯values.yaml,根據 K8S 使用的container runtime 做設定 此範例使用的是 docker
透過 helm 安裝
透過 NodePort 進入 dashboard
進入 dashboard 需要透過 token,可以透過 Click here 取得建立token 步驟
根據所需權限,選擇namespace或是整個 Cluster,並按照步驟建立rbac 和 token
取得token後輸入,即可登入
建立名為 web-show 的測試程式,此程式可以在網頁上看到 ping kube-system pod 的結果圖表
到 chaos-mesh 的 github 取得範例
執行 deploy.sh
建立完成後,從 NodePort 進入web-show
建立一個實驗,類型為網路攻擊的延遲,設為 10ms
目標設定為 web-show pod,持續 10s,然後建立
回到實驗頁面,看到實驗已執行完成
目標設定為 web-show pod,持續 10s,然後建立
除了建立單一實驗外,還可以建立多個實驗,多個實驗可以同時進行,或是依序進行,接下來範例建立一個workflow,內容為執行
1.建立workflow yaml 檔
使用 kubectl apply 建立 workflow
透過chaos-mesh,可以直接對pod 注入網路問題,或是壓力測試等等,其實還有很多種類的錯誤可以來玩,像是時間錯誤和 http request 的問題,透過問題的注入,來檢視系統服務的韌性以及目前的告警機制和log系統是否能察覺問題發生的原因,持續更新告警機制,從而讓平台跟系統變得越來越強大
查看web-show 發現 ping 的封包確實有持續10s延遲
建立一個實驗,類型為網路封包遺失,遺失率為 100%
查看 web-show,確定封包有遺失
建立 Pod Fault 類型的 pod Failure 實驗
選定 web-show pod,持續時間為永久,送出實驗
查看 pod 狀態
查看實驗狀態
停止實驗,確認 pod 恢復正常
建立 Stress Test 實驗,讓 Pod CPU 和 Memory 滿載
選定 web-show pod,持續時間為永久,送出實驗
此範例程式的資源 limit 為 cpu 0.3 core memort 20Mi
查看pod監控值,CPU Memory都滿載
可以透過 UI 來制定 workflow 不過以下範例是透過 yaml 來制定
查看 web-show 結果,確實先 delay,暫停,再 loss
查看 workflow 頁面的實驗拓墣圖