跳到主要內容

Kubernetes 系統中 ETCD 備份還原教學


Kubernetes 系統中 ETCD 備份還原教學


在 Kubernetes 系統中,ETCD 是一個關鍵的組件,負責存儲系統中的所有配置資料。為了確保在災難發生時可以快速恢復系統狀態,定期備份和還原 ETCD 是至關重要的。以下是一個簡單的教學,介紹了如何在 Kubernetes 系統中進行 ETCD 的備份和還原。


備份 ETCD

1. 使用以下指令查找 ETCD 對外的連接端點:

bash
  kubectl describe pods -n kube-system etcd-controlplane | grep advertise-client-urls

   獲取到 Endpoint,例如:https://10.1.218.16:2379。


2. 使用以下指令查找憑證位置:

bash
   kubectl describe pods -n kube-system etcd-controlplane | grep pki

   確定憑證位置,例如:

   - Cert File: /etc/kubernetes/pki/etcd/server.crt

   - Key File: /etc/kubernetes/pki/etcd/server.key

   - CA Cert File: /etc/kubernetes/pki/etcd/ca.crt


3. 使用以下指令備份 ETCD 資料庫:

bash
 ETCDCTL_API=3 etcdctl \
--endpoints=https://10.1.220.8:2379 \
--cacert=/etc/kubernetes/pki/etcd/ca.crt \
--cert=/etc/kubernetes/pki/etcd/server.crt \
--key=/etc/kubernetes/pki/etcd/server.key snapshot save /opt/cluster1.db




還原 ETCD

1. 使用以下指令還原 ETCD 資料庫:

bash
ETCDCTL_API=3 etcdctl \
--endpoints=https://10.1.220.8:2379 \
--cacert=/etc/etcd/pki/ca.pem \
--cert=/etc/etcd/pki/etcd.pem \
--key=/etc/etcd/pki/etcd-key.pem snapshot restore /root/cluster2.db \
--data-dir /var/lib/etcd-data-new

   


2. 更新 ETCD systemd 服務單元檔案 `/etc/systemd/system/etcd.service`,將 `--data-dir` 參數設置為新的資料目錄路徑。


3. 確保新目錄的權限正確:

bash
  chown -R etcd:etcd /var/lib/etcd-data-new   


4. 重新載入並重啟 ETCD 服務:

bash
  systemctl daemon-reload
  systemctl restart etcd



通過以上步驟,你可以定期備份和還原 Kubernetes 系統中的 ETCD,以確保在災難發生時能夠快速恢復系統狀態,降低災害影響的程度。

留言