Skip to main content

将Rancher迁移到新集群

如果你要将 Rancher 迁移到一个新的 Kubernetes 集群,你不需要先在新集群上安装 Rancher。如果将 Rancher 还原到一个已经安装了 Rancher 的新集群上,可能会引起问题。

先决条件#

这些说明假设你已经创建了一个备份,并且已经安装了将在其中部署 Rancher 的新 Kubernetes 集群。

要求使用与第一个集群中设置的服务器 URL 相同的 hostname。

Rancher 版本必须是 v2.5.0 及以上。

Rancher 可以安装在任何 Kubernetes 集群上,包括托管的 Kubernetes 集群,如 Amazon EKS 集群。有关安装 Kubernetes 的帮助,请参考 Kubernetes 发行版的文档。也可以使用 Rancher 的 Kubernetes 发行版之一:

1. 安装 rancher-backup Helm chart#

安装 rancher-backup chart 的 1.x.x 版本

helm repo add rancher-charts https://charts.rancher.io
helm repo update
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

2. 使用 Restore 自定义资源从备份中还原#

如果你使用 S3 存储作为备份源,并且需要使用你的 S3 凭证进行还原,请使用你的 S3 凭证在这个集群中创建一个 Secret。Secret 数据必须有两个 key,accessKeysecretKey,包含 s3 凭证,像这样:

apiVersion: v1
kind: Secret
metadata:
name: s3-creds
type: Opaque
stringData:
accessKey: <Enter your base64-encoded access key>
secretKey: <Enter your base64-encoded secret key>

这个 secret 可以在任何命名空间中创建,上面的例子中,它将在默认的命名空间中创建。

在 Restore 自定义资源中,prune必须设置为 false。

创建一个像下面例子一样的 Restore 自定义资源:

# migrationResource.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:

  1. 加密配置文件必须命名为encryption-provider-config.yaml,并且必须使用--from-file标志来创建这个 secret。因此,将你的EncryptionConfiguration保存在一个名为encryption-provider-config.yaml的文件中,然后运行这个命令:
kubectl create secret generic encryptionconfig \
--from-file=./encryption-provider-config.yaml \
-n cattle-resources-system

然后应用资源:

kubectl apply -f migrationResource.yaml

3. 安装 cert-manager#

按照文档中关于在 Kubernetes 上安装 cert-manager 的步骤安装 cert-manager

4. 使用 helm 安装 rancher#

使用与第一个集群上使用的相同版本的 Helm 来安装 Rancher。

helm install rancher rancher-latest/rancher \
--namespace cattle-system \
--set hostname=<same hostname as the server URL from the first Rancher server> \
Last updated on by kingsd041