使用 gkectl 備份及還原進階叢集

本文說明如何備份及還原已啟用進階叢集的 Google Distributed Cloud 1.32 以上版本管理員和使用者叢集。

gkectl備份和還原程序不包含永久磁碟區。本機磁碟區佈建工具 (LVP) 建立的磁碟區不會受到影響。

備份叢集

gkectl backup cluster 指令會將 etcd 存放區中的叢集資訊,以及指定叢集的 PKI 憑證新增至 tar 檔案。etcd 儲存區是 Kubernetes 的備份儲存區,用於儲存所有叢集資料,並包含管理叢集狀態所需的所有 Kubernetes 物件和自訂物件。PKI 憑證用於透過傳輸層安全標準 (TLS) 進行驗證。這項資料是從叢集的控制層備份,或是從高可用性 (HA) 部署作業的其中一個控制層備份。

備份 tar 檔案包含私密憑證,包括服務帳戶金鑰和 SSH 金鑰。將備份檔案儲存在安全的位置。為避免檔案意外曝光,備份程序只會使用記憶體內檔案。

定期備份叢集,確保快照資料相對較新。請根據叢集重大變更的頻率,調整備份頻率。

開始前,請確認叢集運作正常,且所有節點的憑證和 SSH 連線都正常運作。備份程序的目的是擷取叢集已知的良好狀態,以便在發生災難性故障時還原作業。

如要備份叢集,請按照下列步驟操作:

  1. 執行下列指令來檢查叢集:

    gkectl diagnose cluster --cluster-name CLUSTER_NAME \
        --kubeconfig ADMIN_KUBECONFIG
    

    更改下列內容:

    • CLUSTER_NAME:您打算備份的叢集名稱。

    • ADMIN_KUBECONFIG:管理員叢集的 kubeconfig 檔案路徑。

  2. 執行適用的指令來備份叢集:

    管理員叢集

    gkectl backup admin --kubeconfig ADMIN_KUBECONFIG
    

    使用者叢集

    gkectl backup cluster --cluster-name CLUSTER_NAME \
        --kubeconfig ADMIN_KUBECONFIG
    

根據預設,備份 tar 檔案會儲存在管理員工作站的 gkectl-workspace/backups 目錄中。tar 檔案的名稱為 CLUSTER_NAME_backup_TIMESTAMP.tar.gz,其中 CLUSTER_NAME 是要備份的叢集名稱,而 TIMESTAMP 是備份作業的日期和時間。舉例來說,如果叢集名稱為 testuser,備份檔案的名稱會類似 testuser_backup_2006-01-02T150405Z0700.tar.gz。如要為備份檔案指定其他名稱和位置,請使用 --backup-file 標記。

備份檔案會在一年後過期,叢集還原程序無法處理過期的備份檔案。

如果將下列章節設定為管理員叢集設定檔:clusterBackup,備份檔案也可以上傳至 vCenter Server:

datastore: DATASTORE

請將 DATASTORE 改為要儲存備份的資料存放區。資料存放區必須與管理員叢集位於同一個資料中心。備份檔位於指定資料儲存區的 anthos/CLUSTER_NAME/backup 目錄中。

還原叢集

從備份還原叢集是最後手段,只有在叢集發生嚴重故障,且無法以其他方式恢復服務時,才應使用這項功能。舉例來說,etcd 資料已損毀,或 etcd Pod 處於當機迴圈。

備份 tar 檔案包含私密憑證,包括服務帳戶金鑰和 SSH 金鑰。為避免檔案遭到意外公開,Google Distributed Cloud 還原程序只會使用記憶體內檔案。

還原叢集前,請確認符合下列條件:

  • 確認備份時叢集可用的所有控制平面節點機器都正常運作且可連線。
  • 確認節點之間的 SSH 連線可搭配備份時使用的 SSH 金鑰運作。這些 SSH 金鑰會在還原程序中恢復。
  • 確認備份時使用的服務帳戶金鑰仍處於啟用狀態。這些服務帳戶金鑰會還原至還原的叢集。

如要還原叢集,請按照下列步驟操作:

  1. 執行適用的指令來還原叢集:

    管理員叢集

    gkectl restore admin --backup-file BACKUP_FILE \
        --config ADMIN_CONFIG
    

    更改下列內容:

    • BACKUP_FILE:您使用的備份檔案路徑和名稱。

    • ADMIN_CONFIG:管理員叢集設定檔的路徑。

    使用者叢集

    gkectl restore cluster --cluster-name CLUSTER_NAME \
        --backup-file BACKUP_FILE \
        --kubeconfig ADMIN_KUBECONFIG
    

    更改下列內容:

    • CLUSTER_NAME:要還原的叢集名稱。

    • BACKUP_FILE:您使用的備份檔案路徑和名稱。

    • ADMIN_KUBECONFIG:管理員叢集 kubeconfig 檔案的路徑。

    還原程序完成後,系統會在工作區目錄 gkectl-workspace 中,為還原的叢集產生新的 kubeconfig 檔案。

  2. 還原作業完成後,請執行下列指令,確認作業是否成功:

    gkectl diagnose cluster --cluster-name CLUSTER_NAME \
        --kubeconfig GENERATED_KUBECONFIG
    

    GENERATED_KUBECONFIG 替換為產生的 kubeconfig 檔案。

疑難排解

如果備份或還原程序發生問題,請參閱下列章節排解問題。

如需其他協助,請與 Cloud Customer Care 團隊聯絡。

備份或還原期間記憶體不足

如果執行 gkectl 指令的工作站 RAM 不多,您可能沒有足夠的記憶體來執行備份或還原程序。如有需要,請建立並使用臨時暫存磁碟,透過備份指令中的 --use-disk 參數處理備份或還原作業。為保留檔案權限,這個參數會修改檔案權限,因此您必須以根使用者身分執行指令 (或使用 sudo)。

備份後重新整理 SSH 金鑰會導致還原程序中斷

如果 SSH 金鑰在備份完成後重新整理,還原程序期間的 SSH 相關作業可能會失敗。在這種情況下,新的 SSH 金鑰會失效,無法用於還原程序。如要解決這個問題,可以暫時加回原始 SSH 金鑰,然後執行還原作業。還原程序完成後,您就可以輪替安全殼層金鑰。