Rancher 迁移到一个新的 Kubernetes 集群,不需要先在新集群上安装 Rancher。
如果将 Rancher 还原到一个已经安++装了 Rancher 的新集群上,可能会引起问题(会出现服务器正常的rancher服务会被清除掉)++。
前提条件
这些说明假设你已经创建了一个备份,并且已经安装了将在其中部署 Rancher 的新 Kubernetes 集群。
要求使用与第一个集群中设置的服务器 URL 相同的 hostname。
Rancher 版本必须是 v2.5.0 及以上。
Rancher 可以安装在任何 Kubernetes 集群上,包括托管的 Kubernetes 集群,
安装 rancher-backup Helm chart#
安装 rancher-backup chart 的 1.x.x 版本
# 添加仓库并更新
helm repo add rancher-charts https://charts.rancher.io
helm repo update
# 定义版本
CHART_VERSION="103.0.4+up4.0.4"
# 安装CRD
helm install rancher-backup-crd rancher-charts/rancher-backup-crd \
-n cattle-resources-system \
--create-namespace \
--version $CHART_VERSION \
--wait
# 安装rancher-backup operator
helm install rancher-backup rancher-charts/rancher-backup \
-n cattle-resources-system \
--version $CHART_VERSION \
--wait
- 使用 Restore 自定义资源从备份中还原#
如果你使用 S3 存储作为备份源,并且需要使用你的 S3 凭证进行还原,请使用你的 S3 凭证在这个集群中创建一个 Secret。Secret 数据必须有两个 key,accessKey和secretKey,包含 s3 凭证,像这样:
apiVersion: v1
kind: Secret
metadata:
name: s3-creds
namespace: cattle-resources-system
type: Opaque
stringData:
accessKey: <Enter your base64-encoded access key>
secretKey: <Enter your base64-encoded secret key>
这个 secret 可以在任何命名空间中创建,上面的例子中,它将在默认的命名空间中创建。
在 Restore 自定义资源中,prune必须设置为 false。
创建一个像下面例子一样的 Restore 自定义资源:
migrationResource.yaml
该资源会有异常重复导入的情况出现,导致rancher的pod重复拉起和退出。需要在导入完数据后,将该资源删除即可。
apiVersion: resources.cattle.io/v1
kind: Restore
metadata:
name: restore-migration
namespace: cattle-resources-system
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: cattle-resources-system
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标志来创建这个 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
- 安装 cert-manager#
按照文档中关于在 Kubernetes 上安装 cert-manager 的步骤安装 cert-manager。
# 如果你手动安装了CRD,而不是在Helm安装命令中添加了`--set installCRDs=true`选项,你应该在升级Helm chart之前升级CRD资源。
kubectl apply -f https://github.com/jetstack/cert-manager/releases/download/v1.5.1/cert-manager.crds.yaml
# 添加 Jetstack Helm 仓库
helm repo add jetstack https://charts.jetstack.io
# 更新本地 Helm chart 仓库缓存
helm repo update
# 安装 cert-manager Helm chart
helm install cert-manager jetstack/cert-manager \
--namespace cert-manager \
--create-namespace \
--version v1.5.1
# 查看状态
kubectl get pods --namespace cert-manager
- 使用 helm 安装 rancher#
使用与第一个集群上使用的相同版本的 Helm 来安装 Rancher。
# 等待pod全部Running后安装Rancher
# 创建命名空间
kubectl create namespace cattle-system
# 添加Rancher稳定版helm仓库
helm repo add rancher-stable https://releases.rancher.com/server-charts/stable
# 更新helm仓库缓存
helm repo update
# 安装Rancher
helm install rancher rancher-stable/rancher \
--namespace cattle-system \
--set hostname=rancher.baidutest.com
确保服务器本地的dns地址和/etc/hosts配置是正确的,避免存在一些不一致的地址解析
INFO: Environment: CATTLE_ADDRESS=192.168.113.23
CATTLE_AGENT_CONNECT=true
CATTLE_CA_CHECKSUM=d8ebf6d7c62bedcc9a3602fbc55f13bbc059656686547cd1a91dbf4c3e943294
INFO: https://rancher.baidutest.com/ping is accessible
解析域名到新ip地址
对应的k8s集群上要执行如下命令,重启rancher-agent服务
docker ps|grep agent|grep run.sh|awk '{print $1}'|xargs docker restart
#如果还有出现rancher有两个解析地址记得重启宿主机的kubelet。
进入到k8s服务执行如下命令,内网
kubectl patch deployment cattle-cluster-agent -n cattle-system --type='json' -p='[{"op":"add","path":"/spec/template/spec/hostAliases","value":[{"ip":"172.17.116.200","hostnames":["rancher.baidutest.com"]}]}]'
#
kubectl patch daemonset cattle-node-agent -n cattle-system --type='json' -p='[{"op":"add","path":"/spec/template/spec/hostAliases","value":[{"ip":"172.17.116.200","hostnames":["rancher.baidutest.com"]}]}]'
参考链接:
https://blog.csdn.net/dang028/article/details/153792740
https://docs.rancher.cn/docs/rancher2.5/backups/migrating-rancher/