若要備份和還原在 主管 中的 TKG 叢集上執行的工作負載,請在 Kubernetes 叢集上建立資料存放區並安裝 Velero 和 Restic。
概觀
TKG 叢集在虛擬機器節點上執行。若要備份和還原 TKG 叢集工作負載,請在叢集上安裝 Velero 和 Restic。
必要條件
確保您的環境符合下列安裝 Velero 和 Restic 的必要條件,以便備份和還原在
Tanzu Kubernetes 叢集上執行的工作負載。
- 儲存區足夠儲存數個工作負載備份的 Linux 虛擬機器。您將在此虛擬機器上安裝 MinIO。
- 安裝了 vSphere 適用的 Kubernetes CLI 工具 (包括 kubectl 適用的 vSphere 外掛程式 和 kubectl) 的 Linux 虛擬機器。您將在此用戶端虛擬機器上安裝 Velero CLI。如果沒有此類虛擬機器,您可以在本機安裝 Velero CLI,但必須相應地調整安裝步驟。
- Kubernetes 環境具有網際網路存取權,且可由用戶端虛擬機器連線。
安裝和設定 MinIO 物件存放區
Velero 需要與 S3 相容的物件存放區做為 Kubernetes 工作負載備份的目的地。Velero 支援數個此類
物件存放區提供者。為簡單起見,這些指示使用
MinIO,即一種在物件存放區虛擬機器上本機執行的與 S3 相容的儲存區服務。
- 安裝 MinIO。
wget https://dl.min.io/server/minio/release/linux-amd64/minio
- 將執行權限授與 MinIO。
chmod +x minio
- 在檔案系統上為 MinIO 建立目錄。
mkdir /DATA-MINIO
- 啟動 MinIO 伺服器。
./minio server /DATA-MINIO
- MinIO 伺服器啟動後,系統會為您提供重要的資料存放區執行個體詳細資料,包括端點 URL、AccessKey 和 SecretKey。在資料表中記錄端點 URL、AccessKey 和 SecretKey。
資料存放區中繼資料 值 端點 URL AccessKey SecretKey - 透過開啟瀏覽器並導向 MinIO 伺服器端點 URL,以瀏覽到 MinIO 資料存放區。
- 登入 MinIO 伺服器並提供 AccessKey 和 SecretKey。
- 若要啟用 MinIO 即服務,請下載
minio.service
指令碼以設定用於自動啟動的 MinIO。curl -O https://raw.githubusercontent.com/minio/minio-service/master/linux-systemd/minio.service
- 編輯
minio.service
指令碼,並為ExecStart
新增下列值。ExecStart=/usr/local/bin/minio server /DATA-MINIO path
- 儲存修訂的指令碼。
- 執行下列命令以設定 MinIO 服務。
cp minio.service /etc/systemd/system cp minio /usr/local/bin/ systemctl daemon-reload systemctl start minio systemctl status minio systemctl enable minio
- 透過啟動 MinIO 瀏覽器並登入物件存放區,建立用於備份和還原的 MinIO 值區。
- 按一下 [建立值區] 圖示。
- 輸入值區名稱,例如:
my-cluster-backups
。 - 確認值區是否已建立。
- 依預設,新的 MinIO 值區為唯讀。為了進行 Velero 獨立備份和還原,MinIO 值區必須為讀寫。若要將值區設定為讀寫,請選取值區,然後按一下省略號 (點) 連結。
- 選取編輯原則。
- 將原則變更為讀取和寫入。
- 按一下新增。
- 若要關閉對話方塊,請按一下 X。
安裝 Velero CLI
在虛擬機器用戶端或本機機器上安裝 Velero CLI。
本說明文件中使用的版本為
適用於 Tanzu Kubernetes Grid 2.2.0 的 Velero 1.9.7。
- 從 VMware Customer Connect 入口網站上的 Tanzu Kubernetes Grid 產品下載頁面下載 Velero。
備註: 您必須使用由 VMware 簽署的 Velero 二進位檔案,才有資格獲得 VMware 的支援。
- 開啟命令列,並將目錄變更為 Velero CLI 下載。
- 解壓縮下載檔案。例如:
gunzip velero-linux-vX.X.X_vmware.1.gz
- 檢查 Velero 二進位檔案。
ls -l
- 將執行權限授與 Velero CLI。
chmod +x velero-linux-vX.X.X_vmware.1
- 將 Velero CLI 移至系統路徑以使其全域可用:
cp velero-linux-vX.X.X_vmware.1 /usr/local/bin/velero
- 確認安裝。
velero version
在 Tanzu Kubernetes 叢集上安裝 Velero 和 Restic
Velero CLI 內容將自動遵循 kubectl 內容。在執行 Velero CLI 命令以在目標叢集上安裝 Velero 和 Restic 之前,請設定 kubectl 內容。
- 擷取 MinIO 值區的名稱。例如,
my-cluster-backups
。 - 取得 MinIO 值區的 AccessKey 和 SecretKey。
- 設定目標 Kubernetes 叢集的內容,以便 Velero CLI 知道要在哪個叢集上運作。
kubectl config use-context tkgs-cluster-name
- 建立名為
credentials-minio
的密碼檔案。使用您收集的 MinIO 伺服器存取認證更新檔案。例如:aws_access_key_id = 0XXNO8JCCGV41QZBV0RQ aws_secret_access_key = clZ1bf8Ljkvkmq7fHucrKCkxV39BRbcycGeXQDfx
備註: 如果收到錯誤訊息「獲取備份存放區時出錯」,且說明為「NoCredentialProviders: 鏈結中不存在有效的提供者」,請將行[default]
附加到認證檔案的開頭。例如:[default] aws_access_key_id = 0XXNO8JCCGV41QZBV0RQ aws_secret_access_key = clZ1bf8Ljkvkmq7fHucrKCkxV39BRbcycGeXQDfx
- 儲存檔案並確認該檔案位置正確。
ls
- 執行下列命令,以在目標 Kubernetes 叢集上安裝 Velero 和 Restic。將這兩個 URL 取代為 MinIO 執行個體的 URL。
velero install \ --provider aws \ --plugins velero/velero-plugin-for-aws:v1.0.0 \ --bucket tkgs-velero \ --secret-file ./credentials-minio \ --use-volume-snapshots=false \ --use-restic \ --backup-location-config \ region=minio,s3ForcePathStyle="true",s3Url=http://10.199.17.63:9000,publicUrl=http://10.199.17.63:9000
- 確認 Velero 和 Restic 是否已安裝。
kubectl logs deployment/velero -n velero
- 確認
velero
命名空間。kubectl get ns
- 確認
velero
和restic
網繭。kubectl get all -n velero
疑難排解 Restic DaemonSet (如有必要)
若要在 Kubernetes 叢集上執行三個網繭 Restic DaemonSet,您可能必須更新 Restic DaemonSet 規格並修改 hostPath。如需有關此問題的詳細資訊,請參閱 Velero 說明文件中的
〈Restic 整合〉。
- 驗證三個網繭 Restic DaemonSet。
kubectl get pod -n velero
如果網繭處於 CrashLoopBackOff 狀態,請按如下所示編輯這些網繭。
- 執行
edit
命令。kubectl edit daemonset restic -n velero
- 將 hostPath 從
/var/lib/kubelet/pods
變更為/var/vcap/data/kubelet/pods
。- hostPath: path: /var/vcap/data/kubelet/pods
- 儲存檔案。
- 驗證三個網繭 Restic DaemonSet。
kubectl get pod -n velero
NAME READY STATUS RESTARTS AGE restic-5jln8 1/1 Running 0 73s restic-bpvtq 1/1 Running 0 73s restic-vg8j7 1/1 Running 0 73s velero-72c84322d9-le7bd 1/1 Running 0 10m
調整 Velero 記憶體限制 (如有必要)
如果 Velero 備份傳回很多小時的
status=InProgress
,請提高限制和要求記憶體設定。
- 執行下列命令。
kubectl edit deployment/velero -n velero
- 將限制和要求記憶體設定從預設值
256Mi
和128Mi
變更為512Mi
和256Mi
。ports: - containerPort: 8085 name: metrics protocol: TCP resources: limits: cpu: "1" memory: 512Mi requests: cpu: 500m memory: 256Mi terminationMessagePath: /dev/termination-log terminationMessagePolicy: File