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





























