Kubernetes 運維操作手冊:從 etcd 快照進行精確恢復

1

? ?

5 步實現 etcd 精確恢復

  1. 將快照恢復到本地 etcd 數據目錄。

  2. 使用恢復的數據啟動本地 etcd 實例。

  3. 使用 etcdctl 查詢特定鍵(例如,ConfigMap)。

  4. 使用 auger 解碼以提取干凈的 YAML。

  5. 使用 kubectl 申請恢復到您的實時集群。

本指南將指導您從 etcd 快照中精準地恢復資源,而無需觸發完整的集群恢復。無論您是要排除意外刪除故障,還是進行取證調試,這種輕量級且有針對性的方法都能最大程度地減少停機時間。#Kubernetes

2

? ?

引言:🩺Kubernetes 操作里的緊急情況

etcd 是 Kubernetes 集群的核心,它是一個分布式鍵值存儲系統,忠實地維護系統內每個對象的狀態。但是,如果某個資源(例如 ConfigMap、Secret 或 Deployment)被刪除或損壞,會發生什么情況呢?

啟動完整的集群恢復就像進行心臟手術來修復紙張劃傷一樣。它具有破壞性、風險性,而且通常沒有必要。

這就是手術精度發揮作用的地方。

想象一下,您的生產環境陷入危機——一個重要的 ConfigMap 消失了,Pod 崩潰了,用戶只能盯著錯誤頁面。完全回滾會比問題本身造成更大的損失。您需要的是一個“外科醫生”式的方案:只修復損壞的部分,其他部分一概不做。

在本博客中,您將了解如何:

  1. 從 etcd 快照中隔離并提取特定資源

  2. 僅將所需內容直接恢復到實時 Kubernetes 集群中

  3. 避免不必要的停機并保持集群穩定性

  4. 非常適合重視最小影響恢復的 DevOps、SRE 和 Kubernetes 管理員。

3

? ?

先決條件🔧

為了繼續操作,請確保您已具備:

  • etcd v3.4+ — etcd 服務器二進制文件可在此處獲取

  • etcdctl — 與 etcd 交互的 CLI

  • auger — CLI 工具,用于將 etcd 的二進制有效負載解碼為 YAML

  • kubectl — CLI 用于將資源應用于 Kubernetes 集群

  • 快照文件— 例如 live-cluster-snapshot.db

始終先在暫存環境中工作。從干凈的快照開始:

etcdctl snapshot save live-cluster-snapshot.db

4

? ?

恢復過程🏥

假設 production 命名空間中一個關鍵的 ConfigMap app-config 被意外刪除了。以下是如何將其恢復:

4.1

? ?

🧬 步驟 1:準備快照

如果壓縮,請解壓縮快照:

gunzip live-cluster-snapshot.db.gz

然后恢復它:

etcdctl snapshot restore live-cluster-snapshot.db --data-dir=recovery-etcd

4.2

? ?

🩻 第 2 步:啟動本地 etcd 實例

etcd --data-dir=recovery-etcd --listen-client-urls=http://localhost:2379

核實:

etcdctl --endpoints=localhost:2379 endpoint status

4.3

? ?

🔍 步驟 3:定位并提取資源

Kubernetes 將 ConfigMap 存儲在類似 /registry/configmaps//的鍵中。列出生產命名空間中的鍵:

etcdctl --endpoints=localhost:2379 get --prefix "/registry/configmaps/production" --keys-only你會看到類似這樣的內容:

/registry/configmaps/production/app-config提取并解碼 ConfigMap:

etcdctl --endpoints=localhost:2379 get /registry/configmaps/production/app-config --print-value-only | auger decode > app-config.yaml

生成的 app-config.yaml 可能如下所示:

apiVersion: v1? kind: ConfigMap? metadata:? ? name: app-config? ? namespace: production? data:? ? api-url: "https://api.example.com"? ? log-level: "debug"

4.4

? ?

步驟 4:恢復到集群

通過試運行來測試修復效果:

kubectl apply -f app-config.yaml --dry-run=server

如果一切檢查無誤,則應用它:

kubectl apply -f app-config.yaml

輸出:

configmap/app-config created

4.5

? ?

🧹 步驟 5:清理

pkill etcdrm -rf recovery-etcd app-config.yaml

5

? ?

高級場景🔍

5.1

? ?

💠 跨命名空間恢復

cat app-config.yaml | yq eval '.metadata.namespace = "dev"' | kubectl apply -f -

5.2

? ?

🔐 加密集群 (KMS)

使用 etcdctl 并根據 etcd 加密指南配置解密密鑰。📦批量恢復?

etcdctl --endpoints=localhost:2379 get --prefix "/registry/configmaps/production" --print-value-only | auger decode > all-cm.yaml

6

? ?

總結

最后的想法💡Kubernetes 管理員經常為災難性故障做準備,但忽略了精確恢復的價值。能夠精準地提取和恢復資源,并減少停機時間、防止附帶損害、增強對事件響應的信心。當下次災難來臨時,您不會手忙腳亂,而是會采取行動。

隨手關注或者”在看“,誠摯感謝!

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/pingmian/81669.shtml
繁體地址,請注明出處:http://hk.pswp.cn/pingmian/81669.shtml
英文地址,請注明出處:http://en.pswp.cn/pingmian/81669.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

LeetCode Hot100刷題——合并區間

56. 合并區間 以數組 intervals 表示若干個區間的集合,其中單個區間為 intervals[i] [starti, endi] 。請你合并所有重疊的區間,并返回 一個不重疊的區間數組,該數組需恰好覆蓋輸入中的所有區間 。 示例 1: 輸入:i…

《Metasploit框架核心模塊解析與安全防護實踐》?

目錄 ??一、框架模塊化設計與安全驗證價值?? ??1. 漏洞驗證模塊(Exploit Modules)?? ??2. 安全評估模塊(Auxiliary Modules)?? ??3. 安全響應模塊(Post-Exploitation)?? ??4. 載荷安全…

Cribl 中 Parser 扮演著重要的角色 + 例子

先看文檔: Parser | Cribl Docs Parser The Parser Function can be used to extract fields out of events or reserialize (rewrite) events with a subset of fields. Reserialization will preserve the format of the events. For example, if an event contains comma…

程序設計實踐--排序(1)

&#xff11;、插入排序&#xff08;一個數組&#xff09; #include<bits/stdc.h> using namespace std; const int N1e35; int a[N]; int n; int main(){cin>>n;for(int i1;i<n;i){cin>>a[i];}for(int i1;i<n;i){int va[i];int ji-1;while(j>1&am…

MAC電腦中右鍵后復制和拷貝的區別

在Mac電腦中&#xff0c;右鍵菜單中的“復制”和“拷貝”操作在功能上有所不同&#xff1a; 復制 功能&#xff1a;在選定的位置創建一個與原始文件相同的副本。快捷鍵&#xff1a;CommandD用于在當前位置快速復制文件&#xff0c;CommandC用于將內容復制到剪貼板。效果&…

新能源汽車焊接智能節氣閥

在新能源汽車產業迅猛發展的浪潮中&#xff0c;制造工藝的優劣直接關系到車輛的性能、安全與市場競爭力。焊接&#xff0c;作為新能源汽車生產流程里的關鍵一環&#xff0c;無論是構建車身框架&#xff0c;還是連接電池模組&#xff0c;其質量的好壞都起著決定性作用。而在焊接…

Linux:面試題

1. 什么是中斷和異常&#xff1f; 中斷&#xff1a;由外部設備&#xff08;如鍵盤、網卡&#xff09;觸發的異步事件&#xff0c;用于通知 CPU 有緊急事件需要處理。 異常&#xff1a;由 CPU 內部執行指令時產生的同步事件&#xff08;如除零錯誤、缺頁異常&#xff09;&#…

linux關閉某端口暫用的進程

查看是哪個端口暫用 sudo netstat -tulpn | grep :80根據圖片 顯示 80端口暫用的 進程id是 3002 結束進程id為3002的進程 sudo kill -9 3002

【學習心得】Jupyter 如何在conda的base環境中其他虛擬環境內核

如果你在conda的base環境運行了jupyter lab打開了一個ipynb文本&#xff0c;此時選擇的內核是base虛擬環境的Python內核&#xff0c;如果我想切換成其他conda虛擬環境來運行這個文件該怎么辦&#xff1f;下面我們試著還原一下問題&#xff0c;并且解決問題。 【注】 這個問題出…

React Flow 邊的基礎知識與示例:從基本屬性到代碼實例詳解

本文為《React Agent&#xff1a;從零開始構建 AI 智能體》專欄系列文章。 專欄地址&#xff1a;https://blog.csdn.net/suiyingy/category_12933485.html。項目地址&#xff1a;https://gitee.com/fgai/react-agent&#xff08;含完整代碼示?例與實戰源&#xff09;。完整介紹…

ZooKeeper 原理解析及優劣比較

大家好&#xff0c;這里是架構資源棧&#xff01;點擊上方關注&#xff0c;添加“星標”&#xff0c;一起學習大廠前沿架構&#xff01; 引言 在分布式系統中&#xff0c;服務注冊、配置管理、分布式鎖、選舉等場景都需要一個高可用、一致性強的協調服務。Apache ZooKeeper 憑…

模糊照片變清晰:照片高清修復 ComfyUI 使用教學

模糊照片變清晰 滿心歡喜地翻出舊相冊&#xff0c;想重溫那些美好的回憶&#xff0c;結果照片卻模糊不清&#xff0c;根本看不清當年的模樣&#xff1b;又或者精心拍攝了一張超有氛圍感的照片&#xff0c;結果因為手抖或者光線問題&#xff0c;變得模糊&#xff0c;無法發朋友圈…

IEEEtran中文獻中的作者大于3個時,用et al.省略

latex&#xff1a; 在使用bib文件的時候&#xff0c;當參考文獻超過三個作者時&#xff0c;第三個作者后加逗號并接上et al.。我使用的是IEEEtran.bst。 \begingroup \small \bibliographystyle{IEEEtran} \bibliography{newbmyref1} \endgroup1.需要將IEEEtran.bst添加到這個…

Android Studio Kotlin 中的方法添加灰色參數提示

在使用 Android Studio 時&#xff0c; 我發現使用 Java 編寫方法后在調用方法時&#xff0c; 會自動顯示灰色的參數。 但在 Kotlin 中沒有顯示&#xff0c; 于是找了各種方法最后找到了設置&#xff0c; 并且以本文章記錄下來。 博主博客 https://blog.uso6.comhttps://blog.…

python寵物用品商城系統

目錄 技術棧介紹具體實現截圖系統設計研究方法&#xff1a;設計步驟設計流程核心代碼部分展示研究方法詳細視頻演示試驗方案論文大綱源碼獲取/詳細視頻演示 技術棧介紹 Django-SpringBoot-php-Node.js-flask 本課題的研究方法和研究步驟基本合理&#xff0c;難度適中&#xf…

《具身智能機器人:自修復材料與智能結構設計的前沿探索》

在具身智能機器人的研發進程中&#xff0c;自修復材料與智能結構設計無疑是極具挑戰性與創新性的關鍵領域&#xff0c;吸引著無數科研人員投身其中&#xff0c;探尋未知。 傳統機器人在復雜多變的環境中執行任務時&#xff0c;一旦材料出現損傷&#xff0c;如外殼刮擦、內部線…

矩陣的秩(Rank)

矩陣的秩&#xff08;Rank&#xff09;是線性代數中的核心概念&#xff0c;表示矩陣中線性無關的行&#xff08;或列&#xff09;的最大數量&#xff0c;反映了矩陣所包含的“獨立信息”的多少。以下是其核心要點&#xff1a; 1. 秩的定義 行秩&#xff1a;矩陣中線性無關的行…

麒麟系統編譯osg —— 擴展篇

一、背景 前文講到麒麟系統編譯osg&#xff0c;通常情況下會提示&#xff1a; 意思是無法生成插件osgdb_jpeg&#xff0c;需要配置“JPEG_LIBRARY”和“JPEG_INCLUDE_DIR”。 經查&#xff0c;本機不存在jpeglib.h和libjpeg.so&#xff0c;需要另外安裝。 二、編譯jpeg庫 …

【數據倉庫面試題合集①】數據建模高頻面試題及解析

?? 面試官愛問什么?——核心考察點 數據建模作為數倉崗位面試的重頭戲,考察的不只是模型知識,更是對業務理解、抽象能力和工程落地經驗的綜合評估。常見題型可分為三類: 概念類:模型類型、建模方法論(如維度建模、范式建模) 場景類:給定一個業務場景進行模型設計(如…

園區無人機智能巡檢項目方案

在工業4.0與智慧園區建設加速推進的今天&#xff0c;傳統人工巡檢的局限性日益凸顯&#xff1a;效率低、覆蓋范圍有限、安全隱患大。而無人機智能巡檢技術的崛起&#xff0c;正以其 "高空視角AI大腦全自動作業" 的創新模式&#xff0c;重新定義園區管理標準。本文將深…