從備份還原叢集
Rancher 啟動的 Kubernetes 叢集的 etcd 備份和復原可以輕鬆執行。etcd 資料庫的快照會被擷取並儲存到 etcd 節點本機或 S3 相容目標。設定 S3 的優點是,如果所有 etcd 節點都遺失,你的快照會遠端儲存,並可用於還原叢集。
Rancher 建議啟用設定 etcd 循環快照的功能,但也可以輕鬆建立一次性快照。Rancher 允許從已儲存的快照還原。
叢集也可以還原到先前的 Kubernetes 版本和叢集設定。
檢視可用快照
叢集的所有可用快照清單可供使用。
- 在左上角,點擊 ☰ > 叢集管理。
- 在叢集頁面中,前往你要檢視快照的叢集,並點擊叢集名稱。
- 點擊快照標籤。列出的快照包含建立時的時間戳記。
從快照還原叢集
如果你的 Kubernetes 叢集損壞,你可以從快照還原叢集。
快照由 etcd 中的叢集資料、Kubernetes 版本和 cluster.yml 中的叢集設定組成。這些元件讓你在從快照還原叢集時可以選擇以下選項:
- 僅還原 etcd 內容: 此還原方式類似於 Rancher v2.4.0 之前版本的快照還原。
- 還原 etcd 和 Kubernetes 版本: 如果 Kubernetes 升級是導致叢集故障的原因,且你未進行任何叢集設定變更,應使用此選項。
- 還原 etcd、Kubernetes 版本和叢集設定: 如果你在升級時同時變更了 Kubernetes 版本和叢集設定,應使用此選項。
回滾到先前的 Kubernetes 版本時,會忽略升級策略選項。在恢復到較舊的 Kubernetes 版本之前,工作節點不會被隔離或排空,以便更快速地將不健康的叢集還原到健康狀態。
若要從 S3 還原快照,叢集需要設定為在 S3 上建立循環快照。
- 在左上角,點擊 ☰ > 叢集管理。
- 在叢集頁面中,前往你要檢視快照的叢集,並點擊叢集名稱。
- 點擊快照標籤以檢視已儲存快照的清單。
- 前往你要還原的快照,並點擊 ⋮ > 還原。
- 選擇還原類型。
- 點擊還原。
結果: 叢集將進入 updating(更新中)狀態,並開始從快照還原 etcd 節點的過程。當叢集返回到 active(活動)狀態時,叢集即已還原。
當 controlplane/etcd 完全不可用時從快照還原叢集
在災難復原情況下,Rancher 在下游叢集中管理的控制平面和 etcd 節點可能不再可用或無法正常運作。可以透過再次新增控制平面和 etcd 節點來重建叢集,然後從可用的快照還原。
如果叢集完全故障,你必須先從叢集中移除所有 etcd 節點/機器,然後才能新增「新的」etcd 節點進行還原。
如果你使用本機快照,非常重要的是,你必須確保從你要移除的 etcd 節點上的 /var/lib/rancher/<k3s/rke2>/server/db/snapshots/ 資料夾備份你要還原的對應快照。你可以將快照複製到新節點的 /var/lib/rancher/<k3s/rke2>/server/db/snapshots/ 資料夾中。此外,如果使用本機快照並還原到新節點,目前無法透過 UI 進行還原。
-
從叢集中移除所有 etcd 節點。
- 在左上角,點擊 ☰ > 叢集管理。
- 在叢集頁面中,前往你要移除節點的叢集。
- 在機器標籤中,對你要刪除的每個節點點擊 ⋮ > 刪除。最初,你會看到節點停留在
deleting(刪除中)狀態,但一旦所有 etcd 節點都在刪除中,它們將一起被移除。 這是因為 Rancher 看到所有 etcd 節點都在刪除,並繼續「短路」etcd 安全移除邏輯。
-
移除所有 etcd 節點後,新增你計劃從中還原的新 etcd 節點。為新節點分配
all(etcd、controlplane 和 worker)角色。- 如果節點先前在叢集中,請先清理節點。
- 對於自訂叢集,請前往註冊標籤並勾選
etcd、controlplane 和 worker的方塊。然後複製並在你的節點上執行註冊命令。 - 對於節點驅動程式叢集,會自動佈建新節點。
此時,Rancher 將指示需要從 etcd 快照還原。
-
從 etcd 快照還原。
備註由於 etcd 節點是乾淨的節點,你可能需要手動建立
/var/lib/rancher/<k3s/rke2>/server/db/snapshots/路徑。-
對於 S3 快照,使用 UI 還原。
- 點擊快照標籤以檢視已儲存快照的清單。
- 前往你要還原的快照,並點擊 ⋮ > 還原。
- 選擇還原類型。
- 點擊還原。
-
對於本機快照,無法使用 UI 還原。
- 在右上角,點擊 ⋮ > 編輯 YAML。
- 可以在你的
rkeConfig下新增以下範例 YAML 來設定 etcd 還原:
...
rkeConfig:
etcdSnapshotRestore:
name: <string> # 此欄位為必填。參考關聯的 etcdsnapshot 物件的檔案名稱。
...
-
-
還原成功後,你可以將 etcd 節點擴展回所需的冗餘。