跳至主要内容

備份叢集

在 Rancher UI 中,可以輕鬆執行 Rancher 啟動的 Kubernetes 叢集的 etcd 備份和復原。

Rancher 建議為所有正式環境叢集設定循環 etcd 快照。此外,也可以建立一次性快照。

etcd 資料庫的快照會被擷取並儲存至 etcd 節點本機或 S3 相容目標。設定 S3 的優點是,如果所有 etcd 節點都遺失,你的快照會遠端儲存,並可用於還原叢集。

快照的運作方式​

快照元件​

當 Rancher 建立快照時,它包含三個元件:

  • etcd 中的叢集資料
  • Kubernetes 版本
  • cluster.yml 形式的叢集設定

由於快照現在包含了 Kubernetes 版本,因此可以將叢集還原到先前的 Kubernetes 版本。

快照的多個元件讓你在需要從快照還原叢集時可以選擇以下選項:

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

始終建議在執行任何設定變更或升級之前建立新快照。

從 etcd 節點產生快照​

對於叢集中的每個 etcd 節點,系統會檢查 etcd 叢集的健康狀態。如果節點回報 etcd 叢集健康,則會從該節點建立快照,並可選擇性地上傳到 S3。

快照會儲存在 /opt/rke/etcd-snapshots 中。如果該目錄在節點上設定為共享掛載,它將被覆寫。在 S3 上,快照將始終來自最後上傳的節點,因為所有 etcd 節點都會上傳它,而最後上傳的將被保留。

當存在多個 etcd 節點時,任何建立的快照都會在叢集健康檢查後建立,因此可以被視為 etcd 叢集資料的有效快照。

快照命名慣例​

快照名稱是自動產生的。使用 RKE CLI 建立一次性快照時,可以使用 --name 選項來覆寫快照的名稱。

當 Rancher 為 RKE 叢集建立快照時,快照名稱基於類型(快照是手動還是循環)和目標(快照是儲存在本機還是上傳到 S3)。命名慣例如下:

  • m 代表手動 (manual)
  • r 代表循環 (recurring)
  • l 代表本機 (local)
  • s 代表 S3

一些快照名稱範例:

  • c-9dmxz-rl-8b2cx
  • c-9dmxz-ml-kr56m
  • c-9dmxz-ms-t6bjb
  • c-9dmxz-rs-8gxc8

從快照還原的運作方式​

在還原時,使用以下流程:

  1. 如果已設定 S3,則從 S3 擷取快照。
  2. 解壓縮快照(如果已壓縮)。
  3. 叢集中的其中一個 etcd 節點將該快照檔案提供給其他節點。
  4. 其他 etcd 節點下載快照並驗證校驗和,以確保它們都使用相同的快照進行還原。
  5. 還原叢集,並在叢集中執行還原後動作。

設定循環快照​

選擇循環快照的建立頻率以及要保留的快照數量。時間量以小時為單位。使用帶有時間戳記的快照,使用者可以進行時間點復原。

預設情況下,Rancher 啟動的 Kubernetes 叢集設定為建立循環快照(儲存到本機磁碟)。為了防止本機磁碟故障,建議使用 S3 目標或複製磁碟上的路徑。

在叢集佈建或編輯叢集期間,可以在叢集選項的進階區段中找到快照的設定。點擊顯示進階選項。

在進階叢集選項區段中,有幾個可設定的選項:

選項說明預設值
etcd 快照備份目標選擇你希望快照儲存的位置。選項為本機或 S3local
啟用循環 etcd 快照啟用/停用循環快照Yes
循環 etcd 快照建立週期循環快照之間的時間(小時)12 hours
循環 etcd 快照保留數量要保留的快照數量6

一次性快照​

除了循環快照之外,你可能還想建立「一次性」快照。例如,在升級叢集的 Kubernetes 版本之前,最好備份叢集的狀態以防止升級失敗。

  1. 在左上角,點擊 ☰ > 叢集管理。
  2. 在叢集頁面上,導覽至你要建立一次性快照的叢集。
  3. 點擊 ⋮ > 建立快照。

結果: 根據你的快照備份目標,將建立一次性快照並儲存到選定的備份目標。

快照備份目標​

Rancher 支援兩種不同的備份目標:

本機備份目標​

預設情況下,選擇 local(本機)備份目標。此選項的優點是不需要外部設定。快照會自動儲存到 Rancher 啟動的 Kubernetes 叢集中 etcd 節點的本機 /opt/rke/etcd-snapshots。所有循環快照都會在設定的間隔時間建立。使用 local 備份目標的缺點是,如果發生全面災難且_所有_ etcd 節點都遺失,則無法還原叢集。

S3 備份目標​

我們建議你使用 S3 備份目標。它可以讓你將快照儲存在外部的 S3 相容後端。由於快照不是儲存在本機,因此即使遺失所有 etcd 節點,你仍然可以還原叢集。

雖然 S3 目標比本機備份提供了優勢,但它確實需要額外的設定。

警告

如果你使用 S3 備份目標,請確保每個叢集都有自己的儲存桶或資料夾。Rancher 會從為該叢集設定的 S3 儲存桶或資料夾中列出的任何可用快照填充快照資訊。

選項說明必填
S3 儲存桶名稱用於儲存備份的 S3 儲存桶名稱*
S3 區域備份儲存桶的 S3 區域
S3 區域端點備份儲存桶的 S3 區域端點*
S3 存取金鑰具有存取備份儲存桶權限的 S3 存取金鑰*
S3 秘密金鑰具有存取備份儲存桶權限的 S3 秘密金鑰*
自訂 CA 憑證用於存取私有 S3 後端的自訂憑證

使用 S3 的自訂 CA 憑證​

備份快照可以儲存在自訂的 S3 備份中,例如 minio。如果 S3 後端使用自簽憑證或自訂憑證,請使用 Custom CA Certificate(自訂 CA 憑證)選項提供自訂憑證以連線到 S3 後端。

在 S3 中儲存快照的 IAM 支援​

S3 備份目標除了使用 API 憑證外,還支援使用 IAM 驗證來存取 AWS API。IAM 角色為應用程式在對 S3 儲存進行 API 呼叫時提供臨時權限。若要使用 IAM 驗證,必須滿足以下要求:

  • 叢集 etcd 節點必須具有對指定備份儲存桶具有讀/寫存取權限的執行個體角色。
  • 叢集 etcd 節點必須具有對指定 S3 端點的網路存取權限。
  • Rancher Server 工作節點必須具有對指定備份儲存桶具有讀/寫權限的執行個體角色。
  • Rancher Server 工作節點必須具有對指定 S3 端點的網路存取權限。

若要授予應用程式存取 S3 的權限,請參閱 AWS 文件使用 IAM 角色授予在 Amazon EC2 執行個體上執行的應用程式權限。

檢視可用快照​

叢集的所有可用快照清單可在 Rancher UI 中取得。

  1. 在左上角,點擊 ☰ > 叢集管理。
  2. 在叢集頁面中,前往你要檢視快照的叢集,並點擊其名稱。
  3. 點擊快照標籤以檢視已儲存快照的清單。這些快照包含建立時的時間戳記。

安全時間戳記 (RKE)​

快照檔案會加上時間戳記,以簡化使用外部工具和指令碼處理檔案的過程,但在某些 S3 相容後端中,這些時間戳記無法使用。

新增了 safe_timestamp 選項以支援相容的檔案名稱。當此旗標設定為 true 時,快照檔案名稱時間戳記中的所有特殊字元都會被替換。

此選項無法直接在 UI 中使用,僅能透過 Edit as Yaml(編輯為 Yaml)介面使用。