Kubernetes etcd 故障恢復(1)

1.查看集群狀態? 獲取主節點和故障節點id

ETCDCTL_API=3 ./etcdctl --cacert=/etc/kubernetes/ssl/new-ca.pem --cert=/etc/kubernetes/ssl/etcd.pem --key=/etc/kubernetes/ssl/etcd-key.pem --endpoints="https://192.168.7.132:2379,https://192.168.7.134:2379,https://192.168.7.135:2379" endpoint status cluster-health --write-out=table
ETCDCTL_API=3 ./etcdctl --cacert=/etc/kubernetes/ssl/new-ca.pem --cert=/etc/kubernetes/ssl/etcd.pem --key=/etc/kubernetes/ssl/etcd-key.pem --endpoints="https://192.168.7.132:2379,https://192.168.7.134:2379,https://192.168.7.135:2379" endpoint status cluster-health --write-out=table

?查看故障節點

ETCDCTL_API=3 ./etcdctl --cacert=/etc/kubernetes/ssl/new-ca.pem --cert=/etc/kubernetes/ssl/etcd.pem --key=/etc/kubernetes/ssl/etcd-key.pem --endpoints="https://192.168.7.132:2379,https://192.168.7.134:2379,https://192.168.7.135:2379" endpointhealth --write-out=table
ETCDCTL_API=3 ./etcdctl --cacert=/etc/kubernetes/ssl/new-ca.pem --cert=/etc/kubernetes/ssl/etcd.pem --key=/etc/kubernetes/ssl/etcd-key.pem --endpoints="https://192.168.7.132:2379,https://192.168.7.134:2379,https://192.168.7.135:2379" endpointhealth --write-out=table

2.剔除故障節點?

ETCDCTL_API=3 etcdctl --endpoints="https://172.16.169.82:2379" --cacert=/etc/etcd/ssl/ca.pem --cert=/etc/etcd/ssl/etcd.pem --key=/etc/etcd/ssl/etcd-key.pem member remove 971a0fee3d275c5
ETCDCTL_API=3 etcdctl --endpoints="https://172.16.169.82:2379" --cacert=/etc/etcd/ssl/ca.pem --cert=/etc/etcd/ssl/etcd.pem --key=/etc/etcd/ssl/etcd-key.pem member remove 971a0fee3d275c5

驗證是否剔除成功

ETCDCTL_API=3 ./etcdctl --cacert=/etc/kubernetes/ssl/new-ca.pem --cert=/etc/kubernetes/ssl/etcd.pem --key=/etc/kubernetes/ssl/etcd-key.pem --endpoints="https://192.168.7.132:2379,https://192.168.7.134:2379,https://192.168.7.135:2379" member list --write-out=table
ETCDCTL_API=3 ./etcdctl --cacert=/etc/kubernetes/ssl/new-ca.pem --cert=/etc/kubernetes/ssl/etcd.pem --key=/etc/kubernetes/ssl/etcd-key.pem --endpoints="https://192.168.7.132:2379,https://192.168.7.134:2379,https://192.168.7.135:2379" member list --write-out=table

3.重新添加故障節點


3.1 檢查舊etcd數據并清空?
rm -rf etcd3.etcd/

3.2 修改要加入集群etcd3的啟動參數

vi /etc/etcd/etcd.conf并保存
將etcd的--initial-cluster-state啟動參數,改為--initial-cluster-state=existing

3.3 從etcd-master拷貝證書

scp -rp etcd1:/etc/etcd/ssl/ ?/etc/etcd/

拷貝后檢查etcd證書所屬用戶

3.4 重新添加故障節點etcd3
注意:etcd3為etcd.conf中ETCD_NAME

ETCDCTL_API=3 etcdctl --endpoints="https://172.16.169.82:2379" --cacert=/etc/etcd/ssl/ca.pem --cert=/etc/etcd/ssl/etcd.pem --key=/etc/etcd/ssl/etcd-key.pem ?member add etcd3 --peer-urls=https://172.16.169.83:2380

3.5 重啟服務驗證成功

systemctl daemon-reload
systemctl restart etcd

?
二. 備份恢復方式重做集群

備注:此方式有可能導致數據丟失,親身經歷,盡量使用第一種方式。

備份ETCD集群時,只需要備份一個ETCD數據,然后同步到其他節點上
恢復ETCD數據時,每個節點都要執行恢復命令
恢復順序:停止kube-apiserver –> 停止ETCD –> 恢復數據 –> 啟動ETCD –> 啟動kube-apiserve

etcd資源文件在/var/lib/etcd下,有兩個文件夾

  • snap:存放快照數,etcd防止WAL文件過多而設置的快照,存儲etcd數據狀態
  • wal:存放預寫式日志,最大的作用是記錄了整個數據變化的全部歷程。在etcd中,所有數據的修改在提交前,都要先寫入到WAL中

1、查看健康節點

ETCDCTL_API=3 /opt/etcd/bin/etcdctl --cacert=/opt/etcd/ssl/etcd-ca.pem --cert=/opt/etcd/ssl/server.pem --key=/opt/etcd/ssl/server-key.pem --endpoints="https://192.168.15.215:2379,https://192.168.15.216:2379,https://192.168.15.217:2379" endpoint health --write-out=table

2、在健康節點上備份etcd數據

ETCDCTL_API=3 etcdctl snapshot save ?backup.db \
--cacert=/opt/etcd/ssl/etcd-ca.pem \
--cert=/opt/etcd/ssl/server.pem \
--key=/opt/etcd/ssl/server-key.pem \
--endpoints="https://192.168.15.215:2379"

3、將備份后的文件復制到其他etcd節點下

for i in {etcd2,etcd3};do scp backup.db root@i:/root ;done

4、恢復etcd數據
恢復之前需要先關閉apiserver和etcd,刪除etcd數據文件

systemctl stop kube-apiserver ?#停止apiserver
systemctl stop etcd ? ? ? ? ? ?#停止etcd
rm -rf opt/etcd/data/* ? ? ? ? #刪除數據目錄文件,根據實際情況

在節點1執行恢復命令,如下:

ETCDCTL_API=3 etcdctl snapshot restore backup.db \
--name etcd-1 \
--initial-cluster="etcd-1=https://192.168.15.215:2380,etcd-2=https://192.168.15.216:2380,etcd-3=https://192.168.15.217:2380" \
--initial-cluster-token=etcd-cluster \
--initial-advertise-peer-urls=https://192.168.15.215:2380 \
--data-dir=/opt/etcd/data

在節點2執行恢復命令,如下:

ETCDCTL_API=3 etcdctl snapshot restore backup.db \
--name etcd-2 \
--initial-cluster="etcd-1=https://192.168.15.215:2380,etcd-2=https://192.168.15.216:2380,etcd-3=https://192.168.15.217:2380" \
--initial-cluster-token=etcd-cluster \
--initial-advertise-peer-urls=https://192.168.15.216:2380 \
--data-dir=/opt/etcd/data

在節點3執行恢復命令,如下:

ETCDCTL_API=3 etcdctl snapshot restore backup.db \
--name etcd-3 \
--initial-cluster="etcd-1=https://192.168.15.215:2380,etcd-2=https://192.168.15.216:2380,etcd-3=https://192.168.15.217:2380" \
--initial-cluster-token=etcd-cluster \
--initial-advertise-peer-urls=https://192.168.15.217:2380 \
--data-dir=/opt/etcd/data

恢復完成后,重啟kube-apiserver和etcd,如下:

systemctl start kube-apiserver
systemctl start etcd

5、查看集群狀

ETCDCTL_API=3 /opt/etcd/bin/etcdctl --cacert=/opt/etcd/ssl/etcd-ca.pem --cert=/opt/etcd/ssl/server.pem --key=/opt/etcd/ssl/server-key.pem --endpoi

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

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

相關文章

在UI原型設計中,低、高保真原型圖有什么區別?

在數字產品開發中,原型(Prototype) 是連接創意與落地的橋梁。它通過可視化的方式驗證功能、交互與用戶體驗,避免開發資源浪費。而低保真(Lo-Fi)與高保真(Hi-Fi)原型,則是…

使用FastAPI和React以及MongoDB構建全棧Web應用02 前言

Who this book is for 本書適合哪些人閱讀 This book is designed for web developers who aspire to build robust, scalable, and efficient web applications. It caters to a broad spectrum of developers, from those with foundational knowledge to experienced prof…

linux下minio的進程管理腳本

準備工作: 參考鏈接: Deploy MinIO: Single-Node Single-Drive — MinIO Object Storage for Linux 下載: wget https://dl.min.io/server/minio/release/linux-amd64/minio kill-app.sh #!/bin/bash # 文件名: kill-app.sh…

【Linux】編譯安裝 opencv 并鏈接到 VSCode

一、背景 最近打算把現有的一個 python 程序用 c 重寫,進一步提升性能。編輯器使用 VSCode,三方庫需要用到 opencv,要進行編譯安裝。 二、編譯安裝 opencv 1. 更新源 sudo apt update && sudo apt upgrade 2. 安裝依賴庫 安裝編…

Ubuntu 安裝 HAProxy

HAProxy 是什么 HAProxy(High Availability Proxy) 是一個 高性能、高可用的 TCP 和 HTTP 負載均衡器與代理服務器。 HAProxy 的特點 特性說明支持協議HTTP、HTTPS、TCP高性能使用 C 語言編寫,性能極高高可用與 Keepalived 配合可實現主備健…

Mysql--基礎知識點--91.2--processlist

在 MySQL 中,SHOW PROCESSLIST 是一個常用命令,用于查看當前數據庫服務器上所有正在運行的線程(進程)信息。以下是關鍵點說明: 1. 命令用法 SHOW FULL PROCESSLIST;輸出字段: 列名含義Id線程唯一標識符&am…

Git標簽刪除腳本解析與實踐:輕松管理本地與遠程標簽

Git 標簽刪除腳本解析與實踐:輕松管理本地與遠程標簽 在 Git 版本控制系統中,標簽常用于標記重要的版本節點,方便追溯和管理項目的不同階段。隨著項目的推進,一些舊標簽可能不再需要,此時就需要對它們進行清理。本文將通過一個完整的腳本,詳細介紹如何刪除本地和遠程的 …

K8S - Harbor 鏡像倉庫部署與 GitLab CI 集成實戰

引言 在 Kubernetes 環境中,容器鏡像的存儲與管理至關重要。企業級鏡像倉庫(如 Harbor)為團隊提供了安全、穩定、可擴展的鏡像管理解決方案。 一、Harbor 安裝與配置 Harbor 是由 VMware 開源的企業級云原生鏡像倉庫,它不僅支持…

2025年best好用的3dsmax插件和腳本

copitor 可以從一個3dsmax場景里將物體直接復制到另一個場景中 Move to surface 這個插件可以將一些物體放到一個平面上 instancer 實體器,舉例:場景中有若干獨立的光源,不是實體對象,我們可以使用instancer將他變成實體。 paste …

Python爬蟲實戰:研究nodejs aes加密

1. 引言 1.1 研究背景與意義 在當今數字化時代,Web 數據的價值日益凸顯。通過爬蟲技術獲取公開數據并進行分析,能夠為企業決策、學術研究等提供有力支持。然而,為了保護數據安全和隱私,許多網站采用了加密技術對數據進行保護,其中 AES 加密是一種常見且安全的加密算法。…

LGDRL:基于大型語言模型的深度強化學習在自動駕駛決策中的應用

《Large Language Model guided Deep Reinforcement Learning for Decision Making in Autonomous Driving》2024年12月發表,來自北理工的論文。 深度強化學習(DRL)在自動駕駛決策方面顯示出巨大的潛力。然而,由于DRL的學習效率低…

TDEngine 與 Grafana

目錄 實踐目錄 Grafana 參考文檔 實踐目錄 10.60.100.194:/home/dualven/tdengine Grafana systemctl status grafana-server http://10.60.100.194:3000/ 這個端口與mydoor的new server服務沖突 (同時只開一個) 參考文檔 運行監…

Edge瀏覽器打開PDF文件顯示空白(每次需要等上一會)

概述 部分pdf文件用edge瀏覽器打開顯示空白,需要等一會才能顯示出來,這很讓人難以接受,用其他瀏覽器和pdf閱讀器打開是正常的,該怎么操作解決,卸載重裝,修復,重置瀏覽器等都無效。 解決辦法 可…

uniapp小程序輪播圖高度自適應優化詳解

在微信小程序開發過程中,輪播圖組件(swiper)是常用的UI元素,但在實際應用中經常遇到高度不匹配導致的空白問題。本文詳細記錄了一次輪播圖高度優化的完整過程,特別是針對固定寬高比圖片的精確適配方案。 問題背景 在開發"零工市場&quo…

Android第三次面試總結之網絡篇補充

一、網絡模型:OSI 七層 vs TCP/IP 四層(必考點) 1. 分層模型對比 OSI 七層模型TCP/IP 四層模型核心功能Android 相關場景應用層(7 層)應用層定義數據格式(HTTP/HTTPS/FTP/API)OkHttp/Retrofit…

postgresql主從集群一鍵搭建腳本分享

腳本1: cat pg_ms_install.sh #!/bin/bash # 基礎環境配置(保持不變) setenforce 0 >/dev/null 2>&1 || true sed -i "s/SELINUXenforcing/SELINUXdisabled/" /etc/selinux/config systemctl stop firewalld >/dev/n…

LWIP的ICMP協議

ICMP協議簡介 ICMP協議是一個網絡層協議 背景:如果丟包了,IP協議并不能通知傳輸層是否丟包以及丟包的原因。因此我們需要ICMP協議來完成這樣的功能 為什么需要ICMP協議 1,IP 協議本身不提供差錯報告和差錯控制機制來保證數據報遞交的有效…

具身智能機器人開源陪跑計劃(機器人實戰落地)

Who:我們是誰? 主理人背景 華南理工大學碩士畢業,10年機器人研發經驗,5年“互聯網機器人”創業經歷 累計牽頭落地的機器人30多款,累計授權專利80余項,累計論文發表10余篇。 技術履歷 C#、Sql server、SPSS…

Dify 配置網絡爬蟲為知識庫數據來源 (以Jina Reader為例) - 隨筆

API獲取 進入官網獲取免費的API密鑰 官網鏈接&#xff1a;https://jina.ai/reader/ 點擊“<> API”按鈕 點擊復制文本框中的API Key&#xff1a; 進入Dify的知識庫頁面 → 選擇“同步自Web站點” → 選擇“Jina Reader” → 點擊“配置”按鈕 選擇數據來源為Jina …

基于網絡爬蟲+Spark+Hadoop等大數據和SpringBoot技術實現的的汽車行業大數據分析與可視化平臺系統(源碼+論文+PPT+部署文檔教程等)

博主介紹&#xff1a;CSDN畢設輔導第一人、全網粉絲50W,csdn特邀作者、博客專家、騰訊云社區合作講師、CSDN新星計劃導師、Java領域優質創作者,博客之星、掘金/華為云/阿里云/InfoQ等平臺優質作者、專注于Java技術領域和學生畢業項目實戰,高校老師/講師/同行前輩交流? 技術范圍…