Chuyển đến nội dung chính

第 10 課:ETCD — 操作、備份與災難復原

深入了解 etcd 內部結構、Raft 共識、etcdctl 作業、CronJob 自動備份、快照復原、碎片整理、壓縮、警報管理和災難復原程序。

🔒 DevSecOps — 第 10 課 第 10 課:ETCD — 作業、備份與 災難復原

使用 Kubernetes HA 在本地部署微服務

第 2 部分:使用 kubeadm 的 Kubernetes HA 叢集__HTMLTAG_62___

xdev.asia

🎯 課程目標__HTMLTAG_68___

完成本課程後,您將:

  • ✅ 了解 Raft 共識演算法和 etcd 內部結構__HTMLTAG_73___
  • ✅ 精通etcdctl進行日常操作__HTMLTAG_75___
  • ✅ 使用 CronJob 設定自動備份
  • ✅ 練習從快照復原(災難復原)
  • ✅ 碎片整理、壓縮與效能調整

第 1 部分:ETCD 內部

1.1。 Raft 共識演算法

程式碼區塊_0

程式碼區塊_1

⚠️ etcd 容忍 (N-1)/2 失敗:

  • 3 個節點 → 容忍 1 次故障(法定人數 = 2)
  • 5 個節點 → 容忍 2 次故障(法定人數 = 3)

1.2。資料模型

___程式碼區塊_2___

第 2 部分:ETCDCTL 操作

2.1。叢集運作狀況監控

___程式碼區塊_3___

2.2。效能檢查

___程式碼區塊_4___

2.3。在etcd中查看Kubernetes資料

___程式碼區塊_5___

第 3 部分:ETCD 備份

3.1。手動快照

___程式碼區塊_6___

3.2。自動備份腳本

___程式碼區塊_7___

3.3。 Cron 備份(每 6 小時一次)

___程式碼區塊_8___

程式碼區塊_9


第 4 部分:災難復原 — 復原

4.1。恢復場景

程式碼區塊_10

4.2。逐步恢復

___程式碼區塊_11___

第 5 部分:壓縮與碎片整理

5.1。壓縮

___程式碼區塊_12___

5.2。碎片整理

___程式碼區塊_13___

5.3。警報管理

___程式碼區塊_14___

第 6 部分:ETCD 監控

6.1。普羅米修斯指標

___程式碼區塊_15___

6.2。 PrometheusRule(將在第 32 課中使用)

___程式碼區塊_16___

💡 重點

    ___HTMLTAG_145__HTMLTAG_146___Raft 共識:寫入所需的多數法定人數 (2/3) ___HTMLTAG_149__HTMLTAG_150___每 6 小時備份一次 是生產的最低限度 — 保存快照 + 憑證 ___HTMLTAG_153__HTMLTAG_154___恢復 = 從快照建立新叢集,快照後的所有資料都會遺失__HTMLTAG_156___ ___HTMLTAG_157__HTMLTAG_158___依序對每個成員進行碎片整理,而不是同時進行碎片整理(I/O 區塊) ___HTMLTAG_161__HTMLTAG_162___NOSPACE警報:壓縮→碎片整理→解除 ___HTMLTAG_165__HTMLTAG_166___NVMe SSD 是 etcd 的必備品(p99 寫入延遲 < 10ms)

🎯 練習__HTMLTAG_172___

練習 1:備份與復原實驗室

  • 建立 Nginx 部署(3 個副本)
  • 備份 etcd 快照
  • 刪除部署 nginx
  • 從快照恢復,驗證部署 nginx 返回

練習 2:監控

  • 執行etcd-check.sh,記錄資料庫大小、領導者、運作狀況
  • 壓縮與碎片整理,比較之前/之後的資料庫大小

練習 3:設定 CronJob 備份

  • 部署 etcd 備份 CronJob
  • 驗證作業已成功執行__HTMLTAG_199___
  • 檢查 /backup/etcd/
  • 中的快照文件

📚 下一篇文章

在 第 11 課:使用 Rook-Ceph 的分散式儲存架構,我們將開始第 3 部分 — 安裝 Rook-Ceph 以實現持久性儲存。