當前位置: 妍妍網 > 碼農

【運維幹貨分享】Kubernetes 集群上的 etcd 備份和恢復

2024-08-26碼農


etcd

本篇文章中,主要介紹使用 etcd 快照在 Kubernetes 集群上進行 etcd 備份和恢復。

在 Kubernetes 架構中,etcd 是集群不可或缺的一部份。所有集群物件及其狀態都儲存在 etcd 中。從 Kubernetes 的角度來看,你應該了解的關於 etcd 的幾件事。

  1. 它是一個一致的、分布式的、安全的鍵值儲存。

  1. 它使用 raft 協定。

  1. 支持具有堆疊 etcd 的高可用性架構。

  1. 它儲存 kubernetes 集群配置、所有 API 物件、物件狀態和服務發現詳細資訊。

如果你想了解更多關於 etcd 以及 kubernetes 如何使用它的資訊,可以去看下之前介紹的k8s架構文章 。

此外,如果您考慮 Kubernetes 設計最佳實踐,Kubernetes etcd 備份和恢復是備份策略下的重要方面之一。

Kubernetes etcd 使用 etcdctl 進行備份

以下是應該了解的有關 etcd 備份的資訊。

  1. etcd 具有內建的快照機制。

  1. etcdctl是與 etcd 互動以獲取快照的命令列實用程式。

按照下面給出的步驟獲取etcd 快照。

步驟1:登入控制平面。

步驟2:如果您的集群控制平面中沒有 etcdctl,請使用以下命令進行安裝。

sudo apt install etcd-client

步驟3:我們需要將以下三條資訊傳遞給 etcd 快照。etcdctl

  1. etcd 端點 (–端點)

  1. CA 證書 (–CACERT)

  1. 伺服器證書 (–cert)

  1. 伺服器金鑰 (–key)

可以透過兩種方式獲取上述詳細資訊。

從位於該位置的 etcd 靜態 pod 清單檔。/etc/kubernetes/manifests/etcd.yaml

也可以透過描述在名稱空間中執行的 etcd pod 來獲取上述詳細資訊。在描述 pod 時,請替換為您的 etcd pod 名稱。kube-systemetcd-master-node

kubectl get po -n kube-system

kubectl describe pod etcd-master-node -n kube-system

步驟4: 使用以下命令進行 etcd 快照備份。

ETCDCTL_API=3 etcdctl \
--endpoints=https://127.0.0.1:2379 \
--cacert=<ca-file> \
--cert=<cert-file> \
--key=<key-file> \
snapshot save <backup-file-location>

添加實際位置和參數時,該命令如下所示。執行命令以執行備份。可以替換為您選擇的位置和名稱。 /opt/backup/etcd.db

ETCDCTL_API=3 etcdctl \
--endpoints=https://127.0.0.1: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/backup/etcd.db

成功執行後,您將收到「Snapshot saved at /opt/backup/etcd.db」訊息,如下所示。

此外,您還可以使用以下命令驗證快照。

ETCDCTL_API=3 etcdctl --write-out=table snapshot status /opt/backup/etcd.db

下面是一個範例輸出。

HASH REVISION TOTAL KEYS TOTAL SIZE
b7147656 51465 1099 5.1 MB

Kubernetes etcd 使用 Snapshot Backup 進行還原

現在,我們在該位置有了備份。我們將使用快照備份來恢復 etcd。

/opt/backup/etcd.db

這是恢復 etcd 的命令。

ETCDCTL_API=3 etcdctl snapshot restore <backup-file-location>

讓我們執行 etcd restore 命令。

ETCDCTL_API=3 etcdctl snapshot restore /opt/backup/etcd.db

如果要使用特定數據目錄進行還原,可以使用如下所示的標誌添加位置。--data-dir

ETCDCTL_API=3 etcdctl --data-dir /opt/etcd snapshot restore /opt/backup/etcd.db

etcd 備份常見問題

如何在 Kubernetes 中進行 etcd 備份?

要進行 etcd 備份,您需要使用 etcdctl 命令列實用程式。您需要使用 etcdctl snapshot 命令和 etcd 證書來執行備份操作。

結論

在這篇部落格中,我們學習了使用命令列工具進行 Kubernetes etcd 備份和恢復。

etcd 備份和恢復是 Kubernetes 集群管理中的基本任務。此外,它是 CKA 認證考試中的一個重要主題。