將 Rancher 遷移到新叢集
如果你要將 Rancher 遷移到新的 Kubernetes 叢集,則不需要先在新叢集上安裝 Rancher。如果將 Rancher 還原到已安裝 Rancher 的新叢集,可能會造成問題。
先決條件
這些說明假設你已經建立備份,並且已經安裝了將部署 Rancher 的新 Kubernetes 叢集。該備份特定於 Rancher 應用程式,只能遷移 Rancher 應用程式。
你必須使用在原始叢集中設定為伺服器 URL 的相同主機名稱。如果不這樣做,下游叢集將在 UI 的叢集管理頁面中顯示為不可用,並且你將無法點擊進入叢集或點擊叢集的探索按鈕。
Rancher 版本必須為 v2.5.0 及以上
Rancher 可以安裝在任何 Kubernetes 叢集上,包括託管的 Kubernetes 叢集,例如 Amazon EKS 叢集。如需安裝 Kubernetes 的協助,請參閱 Kubernetes 發行版的文件。也可以使用 Rancher 建立的 Kubernetes 發行版,例如但不限於 RKE 或 K3s。
由於 Rancher 可以安裝在任何 Kubernetes 叢集上,因此你可以使用此備份和還原方法將 Rancher 從一個 Kubernetes 叢集遷移到任何其他 Kubernetes 叢集。此方法僅遷移與 Rancher 相關的資源,不會影響叢集上的其他應用程式。請參閱支援矩陣以確定你的 Rancher 版本支援哪些 Kubernetes 叢集類型和版本。
1. 安裝 rancher-backup Helm chart
-
新增 Helm 儲存庫:
helm repo add rancher-charts https://charts.rancher.io
helm repo update -
設定
CHART_VERSION變數,選擇與你的 Rancher 版本相容的rancher-backupchart 版本。請參閱支援矩陣中的 Rancher Apps / Cluster Tools 部分,以查看支援哪些rancher-backup版本:CHART_VERSION=<chart-version> -
安裝 charts:
helm install rancher-backup-crd rancher-charts/rancher-backup-crd -n cattle-resources-system --create-namespace --version $CHART_VERSION
helm install rancher-backup rancher-charts/rancher-backup -n cattle-resources-system --version $CHART_VERSION備註上述假設環境具有到 Docker Hub 的出站連線。
對於離線環境,在安裝 rancher-backup Helm chart 時,請使用以下 Helm 值從你的私有 registry 拉取
backup-restore-operator和kubectl映像檔。--set image.repository <registry>/rancher/backup-restore-operator --set global.kubectl.repository=<registry>/rancher/kubectl
2. 使用 Restore 自訂資源從備份還原
-
當使用 S3 物件儲存作為需要憑證的還原的備份來源時,在此叢集中建立一個
Secret物件以新增 S3 憑證。secret 資料必須有兩個鍵 -accessKey和secretKey,其中包含 S3 憑證。secret 可以在任何命名空間中建立,此範例使用預設命名空間。
kubectl create secret generic s3-creds \
--from-literal=accessKey=<access key> \
--from-literal=secretKey=<secret key>備註在上述命令中,將你的存取金鑰和秘密金鑰新增為
accessKey和secretKey的值。 -
建立一個
Restore物件:在遷移期間,
prune必須設定為false。請參閱以下範例:# restore-migration.yaml
apiVersion: resources.cattle.io/v1
kind: Restore
metadata:
name: restore-migration
spec:
backupFilename: backup-b0450532-cee1-4aa1-a881-f5f48a007b1c-2020-09-15T07-27-09Z.tar.gz
prune: false
encryptionConfigSecretName: encryptionconfig
storageLocation:
s3:
credentialSecretName: s3-creds
credentialSecretNamespace: default
bucketName: backup-test
folder: ecm1
region: us-west-2
endpoint: s3.us-west-2.amazonaws.com重要只有在你的備份是在啟用加密的情況下建立的,才應使用
encryptionConfigSecretName欄位。如果適用,請提供包含加密設定檔案的
Secret物件名稱。如果你只有加密設定檔案,但在此叢集中尚未建立 secret,請使用以下步驟建立 secret:-
建立一個加密設定檔案
-
下面的命令使用名為
encryption-provider-config.yaml的檔案,並使用--from-file旗標。一旦將EncryptionConfiguration儲存在名為encryption-provider-config.yaml的檔案中,就執行以下命令:kubectl create secret generic encryptionconfig \
--from-file=./encryption-provider-config.yaml \
-n cattle-resources-system
-
-
套用清單並監控還原狀態:
-
套用
Restore物件資源:kubectl apply -f restore-migration.yaml -
監看還原狀態:
kubectl get restore -
監看還原日誌:
kubectl logs -n cattle-resources-system --tail 100 -f -l app.kubernetes.io/instance=rancher-backup -
一旦 Restore 資源的狀態為
Completed,你就可以繼續安裝 cert-manager 和 Rancher。
-
在任何兩個不同的 Kubernetes 發行版之間遷移 Rancher(例如從 K3s 到 RKE2)時,必須修改代表本機叢集的物件,以允許 Rancher 偵測新發行版。在還原完成後,並且在新叢集上啟動 Rancher 之前,編輯本機叢集物件:
kubectl edit clusters.management.cattle.io local
- 將
status.driver的值變更為imported。 - 移除
status.provider。 - 移除整個
status.version映射。 - 移除
metadata.labels中鍵為provider.cattle.io的標籤。 - 移除
metadata.annotations中鍵為management.cattle.io/current-cluster-controllers-version的註解。 - 移除整個
spec.rke2Config或spec.k3sConfig映射(如果存在)。 - 儲存變更。
請注意,移除 spec.rke2Config 或 spec.k3sConfig 將清除本機叢集的發行版特定升級設定。如果新發行版可為本機叢集設定,則可以重新設定。
3. 安裝 cert-manager
按照文件中關於在 Kubernetes 上安裝 cert-manager 的步驟來安裝 cert-manager。