在 Kubernetes 中使用混沌工程
在這篇文章中學習混沌工程的基礎知識。
混沌工程是由科學、規劃以及實驗組成的。它是一門在系統上進行實驗的學科,用來建立系統在生產中承受混亂條件能力的信心。
首先,我會在文章導論部分解釋混沌系統如何工作。
如何開始學習混沌系統呢?
以我的經驗,開始學習混沌系統的最好方式是觸發一個此前生產中出現的事故來進行實驗。使用過去的數據,制定一個計劃,以相同的方式破壞你的系統,然后建立修復策略,并確認結果滿足你預期。如果計劃失敗,你就有了一種新的實驗方式,并朝著快速處理問題的新方式前進。
最重要的是,你可以隨時記錄所有內容,這意味著,隨著時間的推移,整個系統將被完整記錄下來,任何人都可以值守而無需太多加碼,每個人都可以在周末好好休息。
你要在混沌工程中做什么?
混沌系統實驗運行背后有一些科學依據。我記錄了其中一些步驟:
- 定義一個穩定狀態:使用監控工具來搜集當系統沒有問題或事故時,看起來功能正常的數據。
- 提出假設或使用先前的事故:現在你已經定義了一個穩定狀態,請提出一個關于在事故或中斷期間會發生(或發生過)的情況的假設。用這個假設來得出一系列將會發生的事故,以及如何解決問題的理論。然后你可以制定一個故意引發該問題的計劃。
- 引發問題:用這個計劃來破壞系統,并開始在真實環境中測試。收集破壞時的指標狀態,按計劃修復,并追蹤提出解決方案所需時長。確保你把所有的東西都記錄下來,以備將來發生故障時使用。
- 試圖推翻你的假設:實驗中最精彩的部分是嘗試推翻你的思考或計劃。你要創建一個不同的狀態,看看你能走多遠,并在系統中生成一個不同的穩定狀態。
確保在你在另一個系統中生成的破壞因素前,建立一個處于穩定狀態的控制系統。這將使你更容易在實驗前、期間和之后發現各種穩定狀態的差異。
混沌工程需要什么?
這有一些初學混沌工程很好的工具:
- 良好的文檔編制方法
- 一個捕捉你系統是否處于穩定狀態的監控系統
- Grafana
- Prometheus
- 混沌工程工具:
- Chaos mesh
- Litmus
- 之后的文章我會介紹更多
- 一個假設
- 一個計劃
去搞破壞吧
現在你已經掌握了基礎,是時候去安全的摧毀你的系統了。我計劃每年制造四次混亂,然后努力實現每月一次的破壞。
混沌工程是一種很好的實踐,也是推進你的內部文檔保持最新的好方法。此外,隨著時間的推移,新升級或應用程序部署將更加順暢,你的日常生活管理將通過 Kubernetes 變得更加輕松。