雲原生 | 混沌工程工具 ChaosBlade Operator 入門篇

做者:丁源 RadonDB 測試負責人git

負責 RadonDB 雲數據庫、容器化數據庫的質量性能測試,迭代驗證。對包括雲數據庫以及容器化數據庫性能和高可用方案有深刻研究。github

近日,國內多家網站同時發生短時間服務不可用現象,一晚上衝上圈內熱搜。據官方答覆,是因爲部分服務器機房發生故障,致使網站沒法訪問。爲了不這種狀況,提升系統架構的可靠性,保障業務的連續性,但願能在故障以前找到致使 「崩盤」 的缺口。數據庫

十多年前,國外的互聯網公司就已經在雲化、分佈式、微服務等前沿技術的使用過程當中,遇到了相似的問題,並由此誕生了混沌工程服務器

什麼是混沌工程?

混沌工程即 Chaos Engineering[1],被定義爲 在分佈式系統上進行實驗的學科,目的是創建對系統抵禦生產環境中失控條件的能力以及信心。混沌工程屬於一門新興的技術學科,是一種提升技術架構彈性能力的複雜技術手段。最先由 Netflix 技術部門建立了名爲 Chaos Monkey 的項目,經過隨機性測試,來檢測系統架構的健康狀況,並設計足夠的預案來應對可能到來的新一輪故障。網絡

圖 1 混沌工程的發展歷史

隨着雲化技術的發展和雲原生(Cloud Native)的概念的提出,混沌工程的反脆弱哲學思想,也引入了雲原生體系,可簡單高效地爲系統提升容錯能力。架構

什麼是 ChaosBlade Operator?

ChaosBlade[2] 是阿里巴巴開源的一款遵循混沌工程原理和混沌實驗模型的實驗注入工具,幫助企業提高分佈式系統的容錯能力,而且在企業上雲或往雲原生系統遷移過程當中業務連續性保障。分佈式

而ChaosBlade Operator[3] 是 Kubernetes 平臺實驗場景的實現,將混沌實驗經過 Kubernetes 標準的 CRD 方式定義,很方便的使用 Kubernetes 資源操做的方式來建立、更新、刪除實驗場景,包括使用 kubectl、client-go 等方式執行,並且還可使用上述的 chaosblade cli 工具執行。ide

圖 2 聲明式實驗場景

把實驗定義爲 Kubernetes CRD 資源,將實驗模型中的四部分映射爲 Kubernetes 資源屬性,完美將混沌實驗模型與 Kubernetes 聲明式設計結合在一塊兒(依靠混沌實驗模型便捷開發場景,並結合 Kubernetes 設計理念)。微服務

  • 經過 kubectl 或者編寫代碼直接調用 Kubernetes API 來建立、更新、刪除混沌實驗,可清晰獲取資源模擬實驗的執行狀態,實現 Kubernetes 故障注入的標準化。
  • 經過 Chaosblade cli 方式 可很是方便的執行 Kubernetes 實驗場景,查詢實驗狀態等。
  • ChaosBlade 混沌實驗模型與 Kubernetes CRD 的結合,實現 基礎資源、應用服務、Docker 容器 等場景複用,方便 Kubernetes 場景的擴展。

支持的場景

目前支持的實驗場景由如下三大類(持續更新中):工具

分類 資源種類 詳細場景
Node CPU 指定 CPU 使用率
網絡 指定網卡、端口、IP 包延遲、丟包、包阻塞、包重複、包亂序、包損壞等。
進程 指定進程 Hang、強殺指定進程等
磁盤 指定目錄磁盤填充、磁盤 IO 讀寫負載等
內存 指定內存使用率
Pod 網絡 指定網卡、端口、IP 等包延遲、丟包、包阻塞、包重複、包亂序、包損壞等
磁盤 指定目錄磁盤填充、磁盤 IO 讀寫負載等
內存 指定內存使用率
Pod 殺 Pod
Container CPU 指定 CPU 使用率
網絡 指定網卡、端口、IP 等包延遲、丟包、包阻塞、包重複、包亂序、包損壞等
進程 指定進程 Hang、強殺指定進程等
磁盤 指定目錄磁盤填充、磁盤 IO 讀寫負載等
內存 指定內存使用率
Container 殺 Container

部署 ChaosBlade Operator

執行 Kubernetes 實驗場景前,需提早部署ChaosBlade Operator。

Helm 包下載地址:
https://github.com/chaosblade-io/chaosblade-operator/releases

本系列文章默認 Helm v3 版本

注意:須要新建一個 namespace !

部署指令:

helm install kube-system/chaosblade-operator-1.2.0-v3.tgz
helm install chaosblade-operator chaosblade-operator-1.2.0-v3.tgz --namespace chaosblade

回顯示例:

ChaosBlade Operator 啓動後,將在每一個節點分別部署 chaosblade-toolchaosblade-operator Pod。經過以下指令查看部署結果,若 Pod 都處於 Running 狀態,則部署成功。

kubectl get pod -n chaosblade -o wide | grep chaosblade

查詢部署結果示例:

關於部署失敗的常見緣由,請關注後續 混沌工程工具系列 專題介紹。

實驗環境

本系列文章將使用在 KubeSphere 上安裝的 ChaosBlade Operator,對 RadonDB 系列容器化產品進行測試。

KubeSphere 環境參數:

  • 規格 8 核 16G
  • 磁盤大小 500GB
  • 節點數 4

在 KubeSphere 環境部署成功後,控制檯狀態以下圖所示。

圖 3 KubeSphere 控制檯

下期預告

本篇爲混沌工程工具 ChaosBlade Opeator 系列的入門篇,主要介紹混動工程以及實驗工具 ChaosBlade Operator。

下一期,咱們將使用部署的 ChaosBlade Opeator 工具,針對 Node 類資源各類場景進行測試。同時也會介紹在不一樣場景下混沌工程是如何幫助開發者發現系統中的問題,並達到逐漸建設高可用的韌性系統的目的。

參考

[1]. 混沌工程原則:https://principlesofchaos.org

[2]. ChaosBlade:https://github.com/chaosblade-io/chaosblade

[3]. ChaosBlade Operator:https://github.com/chaosblade-io/chaosblade-operator

[4].Kubernetes中文文檔:https://chaosblade-io.gitbook.io/chaosblade-help-zh-cn/blade

相關文章
相關標籤/搜索