Rancher迁移到其他Local集群

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
  1. 使用 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:

  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
  1. 安装 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
  1. 使用 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/

相关推荐
赵文宇(温玉)2 天前
OpenEuler24.03 SP4安装Rancher时遇到cgroupv2和iptables问题的经验
iptables·rancher·openeuler·cgroupv2
snow@li1 个月前
SpringBoot:项目基于Rancher全景梳理与深入分析/Kubernetes可视化管理平台
rancher
wangyadong3173 个月前
rancher 安装jenkins 。国内镜像太头疼
servlet·jenkins·rancher
wangyadong3173 个月前
重新安装k3s,因为我安装jenkins 的时候报错了。不知道为啥rancher 访问不了了。
linux·服务器·rancher
qq_356408663 个月前
Rancher 安装与配置文档
rancher
dyj0954 个月前
【Rancher Server+Kubernets】- 部署的Http服务进行文件上传时因为文件大小限制导致上传失败的解决过程
rancher
@王先生14 个月前
rancher安装--针对报错API Aggregation not ready
linux·运维·rancher
BIGmustang4 个月前
基于rancher-rke部署 k8s集群
容器·kubernetes·rancher
johnny2335 个月前
K8s管理面板:Rancher、Lens、KubeSphere、K8s Dashboard、Kite
容器·kubernetes·rancher