跳至主要内容

從備份還原叢集

Rancher 啟動的 Kubernetes 叢集的 etcd 備份和復原可以輕鬆執行。etcd 資料庫的快照會被擷取並儲存到 etcd 節點本機或 S3 相容目標。設定 S3 的優點是,如果所有 etcd 節點都遺失,你的快照會遠端儲存,並可用於還原叢集。

Rancher 建議啟用設定 etcd 循環快照的功能,但也可以輕鬆建立一次性快照。Rancher 允許從已儲存的快照還原。

叢集也可以還原到先前的 Kubernetes 版本和叢集設定。

檢視可用快照​

叢集的所有可用快照清單可供使用。

  1. 在左上角,點擊 ☰ > 叢集管理。
  2. 在叢集頁面中,前往你要檢視快照的叢集,並點擊叢集名稱。
  3. 點擊快照標籤。列出的快照包含建立時的時間戳記。

從快照還原叢集​

如果你的 Kubernetes 叢集損壞,你可以從快照還原叢集。

快照由 etcd 中的叢集資料、Kubernetes 版本和 cluster.yml 中的叢集設定組成。這些元件讓你在從快照還原叢集時可以選擇以下選項:

  • 僅還原 etcd 內容: 此還原方式類似於 Rancher v2.4.0 之前版本的快照還原。
  • 還原 etcd 和 Kubernetes 版本: 如果 Kubernetes 升級是導致叢集故障的原因,且你未進行任何叢集設定變更,應使用此選項。
  • 還原 etcd、Kubernetes 版本和叢集設定: 如果你在升級時同時變更了 Kubernetes 版本和叢集設定,應使用此選項。

回滾到先前的 Kubernetes 版本時,會忽略升級策略選項。在恢復到較舊的 Kubernetes 版本之前,工作節點不會被隔離或排空,以便更快速地將不健康的叢集還原到健康狀態。

先決條件:

若要從 S3 還原快照,叢集需要設定為在 S3 上建立循環快照。

  1. 在左上角,點擊 ☰ > 叢集管理。
  2. 在叢集頁面中,前往你要檢視快照的叢集,並點擊叢集名稱。
  3. 點擊快照標籤以檢視已儲存快照的清單。
  4. 前往你要還原的快照,並點擊 ⋮ > 還原。
  5. 選擇還原類型。
  6. 點擊還原。

結果: 叢集將進入 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 進行還原。

  1. 從叢集中移除所有 etcd 節點。

    1. 在左上角,點擊 ☰ > 叢集管理。
    2. 在叢集頁面中,前往你要移除節點的叢集。
    3. 在機器標籤中,對你要刪除的每個節點點擊 ⋮ > 刪除。最初,你會看到節點停留在 deleting(刪除中)狀態,但一旦所有 etcd 節點都在刪除中,它們將一起被移除。這是因為 Rancher 看到所有 etcd 節點都在刪除,並繼續「短路」etcd 安全移除邏輯。
  2. 移除所有 etcd 節點後,新增你計劃從中還原的新 etcd 節點。為新節點分配 all(etcd、controlplane 和 worker)角色。

    • 如果節點先前在叢集中,請先清理節點。
    • 對於自訂叢集,請前往註冊標籤並勾選 etcd、controlplane 和 worker 的方塊。然後複製並在你的節點上執行註冊命令。
    • 對於節點驅動程式叢集,會自動佈建新節點。

    此時,Rancher 將指示需要從 etcd 快照還原。

  3. 從 etcd 快照還原。

    備註

    由於 etcd 節點是乾淨的節點,你可能需要手動建立 /var/lib/rancher/<k3s/rke2>/server/db/snapshots/ 路徑。

    • 對於 S3 快照,使用 UI 還原。

      1. 點擊快照標籤以檢視已儲存快照的清單。
      2. 前往你要還原的快照,並點擊 ⋮ > 還原。
      3. 選擇還原類型。
      4. 點擊還原。
    • 對於本機快照,無法使用 UI 還原。

      1. 在右上角,點擊 ⋮ > 編輯 YAML。
      2. 可以在你的 rkeConfig 下新增以下範例 YAML 來設定 etcd 還原:
        ...
      rkeConfig:
      etcdSnapshotRestore:
      name: <string> # 此欄位為必填。參考關聯的 etcdsnapshot 物件的檔案名稱。
      ...
  4. 還原成功後,你可以將 etcd 節點擴展回所需的冗餘。