暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

手把手教你在Rancher中无痛迁移自定义集群

Rancher 2021-03-11
676

点击上方卡片关注公众号并设为星标🌟

即可及时获取K8S干货哟


作者简介

洪晓露,Rancher高级技术支持工程师。2017年加入Rancher,一直负责 Rancher 全系列产品的技术支持。


前  言


本文将指导用户如何把Rancher创建的自定义集群迁移到另一个Rancher server中纳管。迁移过程中,你的下游K8s集群不受任何影响。


注意事项


  1. 在进行操作前,先检查所有 Rancher 环境(源 Rancher 环境和目标 Rancher 环境)中节点的时间是不是已同步【重要】

  2. 对于 Rancher 低于 v2.3.x 并且自定义 k8s 集群版本低于 v1.16 的环境,因为 K8S 集群 API 版本变化,迁移过去后会提示 API 版本不匹配,以及其他权限问题。在迁移之前,需要升级源 Rancher 环境和目标 Rancher 环境到 v2.4.x 及以上版本,并升级自定义 K8S 集群到 v1.16 及以上版本,然后再进行迁移。

  3. 不支持降级迁移。

  4. 集群导入到目标 Rancher 环境后,在没有确认集群迁移完全正常之前,保留源 Rancher 环境,以便集群回退。

  5. 在将 Rancher 低版本环境自定义 k8s 集群迁移到 Rancher 高版本环境时,会触发 k8s 集群自动 更新/升级,请确定好窗口期以免影响业务。

  6. 此方法目前主要针对 2.4 以下的版本,2.5 及以上版本架构变化太大,很多组件文章中没有说明,可以根据此方法自行研究。


基础配置(可选)


1、对于 docker run 单容器运行的源 Rancher 环境,为了操作方便,建议在源 Rancher 容器中执行以下命令安装文本编辑工具 vim,并配置自动补全,离线环境可忽略此步骤。


    sed -i 's/archive.ubuntu.com/mirrors.ustc.edu.cn/g' etc/apt/sources.list
    sed -i 's/security.ubuntu.com/mirrors.ustc.edu.cn/g' etc/apt/sources.list


    apt update && apt install -y vim bash-com* jq
    echo 'source <(kubectl completion bash)' >> ~/.bashrc
    echo 'source etc/bash_completion' >> ~/.bashrc
    bash


    2、对于源 Rancher 环境是 HA 架构的,可直接在 local 集群中操作。


    3、准备待迁移 k8s 集群的直连 kubeconfig 文件


    所谓直连,就是不经过 Rancher Agent 代理直接与业务 k8s 通信。通过 Rancher UI 获取到的 kubeconfig 配置文件默认是通过 Rancher Agent 进行代理。当 k8s 集群迁移到目标 Rancher 环境后,如果 Rancher Agent 无法连接 Rancher server,那么后面将无法对自定义 K8S 集群做任何编辑操作。所以需要准备可以直连 k8s 的配置文件,以备不时之需。


      # 进入容器
      docker exec -ti <Rancher 容器 ID> bash


      # 待迁移集群 ID,可通过浏览器地址栏查询
      CLUSTER_ID=c-xxx


      kubectl get secret c-${CLUSTER_ID} -n cattle-system -o=jsonpath='{.data.cluster}' \
      | base64 --decode | jq .metadata.state | awk '{print substr($0,2,length($0)-2)}' \
      > kubeconfig-${CLUSTER_ID}.yaml


      sed -i 's/\\n/\n/g' kubeconfig-${CLUSTER_ID}.yaml && \
      sed -i 's/\\"/"/g' kubeconfig-${CLUSTER_ID}.yaml


      导出源 Rancher 环境中的 CRD 资源


      在 Rancher 容器中或者 local 集群中操作


      clusters.management.cattle.io (必须)


      • 在源 Rancher UI 上查询并确定待迁移的 K8S 集群 ID,通过浏览器地址栏可查看集群 ID。

      • 执行以下命令再次查看集群 ID


        kubectl get --all-namespaces clusters.management.cattle.io


        NAME AGE
        c-wskbw 43m


        • 执行以下命令导出 Clusters YAML 资源。


          CLUSTER_ID='' # clusters id
          kubectl get clusters.management.cattle.io $CLUSTER_ID -oyaml > clusters-${CLUSTER_ID}.yaml


          projects.management.cattle.io (必须)


          • 执行以下命令查看环境中所有的项目,以及对应的集群 ID。

            1、第一列的 NAMESPACE 对应 集群 ID

            2、第二列 NAME 对应 项目 ID


            kubectl get projects.management.cattle.io --all-namespaces


            NAMESPACE NAME AGE
            c-bwl9m p-l86x6 17m
            c-bwl9m p-lvdjq 17m


            • 以集群 ID 为命名空间,执行以下命令导出单个集群全部项目资源。


              CLUSTER_ID=''
              kubectl -n $CLUSTER_ID get projects.management.cattle.io -oyaml > projects-${CLUSTER_ID}.yaml


              nodes.management.cattle.io (必须)


              • 执行以下命令查看集群对应的主机管理配置。


              NAMESPACE 为集群 ID


                kubectl get nodes.management.cattle.io --all-namespaces


                NAMESPACE NAME AGE
                c-bwl9m m-59601d9748cf 14m


                • 以集群 ID 为命名空间,执行以下命令导出单个集群所有节点的 YAML 文件。


                  CLUSTER_ID=''
                  kubectl -n $CLUSTER_ID get nodes.management.cattle.io -oyaml > nodes-$CLUSTER_ID.yaml


                  secrets (必须)


                  • 创建集群会生成以下密文


                    kubectl get secrets --all-namespaces


                    NAMESPACE NAME TYPE DATA AGE
                    c-bwl9m default-token-nl7mh kubernetes.io/service-account-token 3 4m28s
                    cattle-global-data default-token-qgwn9 kubernetes.io/service-account-token 3 39m
                    cattle-system c-c-bwl9m Opaque 1 4m14s
                    cattle-system tls-rancher kubernetes.io/tls 2 39m
                    default default-token-rwm29 kubernetes.io/service-account-token 3 39m
                    kube-public default-token-6k2vc kubernetes.io/service-account-token 3 39m
                    kube-system default-token-wg7rg kubernetes.io/service-account-token 3 39m
                    p-l86x6 default-token-bz2pg kubernetes.io/service-account-token 3 4m28s
                    p-lvdjq default-token-7tbkn kubernetes.io/service-account-token 3 4m28s
                    user-vf5xr default-token-ktvrm kubernetes.io/service-account-token 3 21m


                    • kube* 命名空间相关的可以忽略,service-account-token* 类型的可以忽略,tls-rancher 可以忽略。

                    • 提取 cattle-system 命名空间下 集群 ID 相关的密文。


                      kubectl -n cattle-system get secrets


                      NAME TYPE DATA AGE
                      c-c-bwl9m Opaque 1 8m15s
                      default-token-xhl6d kubernetes.io/service-account-token 3 43m
                      tls-rancher kubernetes.io/tls 2 43m


                        CLUSTER_ID=''
                        kubectl -n cattle-system get secrets c-${CLUSTER_ID} -oyaml > secrets-${CLUSTER_ID}.yaml


                        apps.project.cattle.io (可选)


                        如果迁移的集群启用了 cluster-monitoring 等应用商店 APP,需要导出 YAML 再导入目标 Rancher 环境,不然 Rancher 无法管理对应资源。


                        • 查看所有集群项目下部署的应用商店 APP。


                          kubectl get apps.project.cattle.io --all-namespaces


                          NAMESPACE NAME AGE
                          p-tjfmp wp-p-tjfmp 265d
                          p-w49bx demoma-p-w49bx 6m2s
                          p-w49bx mongodb-replicaset 19d
                          p-wfdpj cluster-monitoring 27d
                          p-wfdpj monitoring-operator 27d
                          p-wfdpj rancher-logging 47d
                          p-zkhr5 cluster-alerting 122d
                          p-zkhr5 cluster-monitoring 38d
                          p-zkhr5 longhorn-system 81d
                          p-zkhr5 monitoring-operator 38d
                          p-zkhr5 nfs-provisioner 229d
                          p-zkhr5 rabbitmq 18d
                          p-zkhr5 rancher-logging 9d
                          p-zkhr5 systemapp-demo 203d


                          • 通过 集群 ID 获取 项目 ID,并提取所有项目对应的 APP 的 YAML 文件。


                            CLUSTER_ID=xxx
                            PROJECT_ID=$( kubectl get project -n $CLUSTER_ID | grep -v 'NAME' | awk '{print $1}' )


                            APPS_NS=$( kubectl get apps.project.cattle.io --all-namespaces | awk '{ print $1 }' | grep -v 'NAMESPACE' )


                            for project_id in ${PROJECT_ID};
                            do
                            if echo ${APPS_NS} | grep ${project_id};
                            kubectl get app --all-namespaces | grep -v NAMESPACE | awk '{ print "kubectl get apps -n " $1" "$2 " -oyaml > " $1"-"$2".yaml" }' | sh -
                            fi
                            done;


                            multiclusterapps.management.cattle.io (可选)


                            与 apps.project.cattle.io 类型, 如果有多集群应用商店应用,也需要导出 YAML。


                              kubectl get multiclusterapps.management.cattle.io --all-namespaces


                              podsecuritypolicytemplates.management.cattle.io (可选)


                                kubectl get podsecuritypolicytemplates.management.cattle.io


                                authconfigs.management.cattle.io (可选)


                                • 执行以下命令查看对应的认证提供商


                                  kubectl get authconfigs.management.cattle.io --all-namespaces


                                  NAME AGE
                                  activedirectory 259d
                                  adfs 259d
                                  azuread 259d
                                  freeipa 259d
                                  github 259d
                                  googleoauth 172d
                                  keycloak 259d
                                  local 259d
                                  okta 259d
                                  openldap 259d
                                  ping 259d


                                  • 根据实际配置导出对应提供商 yaml 文件


                                    AUTH_PROVIDER=''
                                    kubectl get authconfigs.management.cattle.io --all-namespaces \
                                    $AUTH_PROVIDER -oyaml > authconfigs-${AUTH_PROVIDER}.yaml


                                    users.management.cattle.io (可选)


                                    对于使用 Rancher local 认证的环境,如果本地用户比较多,可以通过以下命令导出所有用户。但是有一点需要注意,在导入目标 Rancher 环境时,需要检查一下 user id 是否有相同。


                                      # 排除本地 admin
                                      USERS=$( kubectl get users.management.cattle.io --all-namespaces | \
                                      grep -v user- | grep -v NAME | awk '{print $1}' )


                                      # 轮训所有用户,分别导出每个用户的 YAML 文件
                                      for users in $USERS;
                                      do
                                      kubectl get users.management.cattle.io $users --all-namespaces -oyaml > user-${users}.yaml;
                                      done;


                                      注意: 用户、角色、角色绑定,如果要导出,则需一起导出。


                                      clusterrole.rbac.authorization.k8s.io (可选)


                                      • 创建用户时,会自动创建一个 clusterrole,比如 u-${user_id}-view,这个可以不用导出。

                                      • 如果有自定义集群角色,可通过 clusterrole 名称查询并导出。


                                      clusterrolebindings.rbac.authorization.k8s.io (可选)


                                      • 创建用户时,会自动创建一个 clusterrolebindings,比如 grb-${user_id}-view

                                      • 在 Rancher UI 上为集群添加成员的时候,会自动创建 clusterrolebindings。在集群迁移完成后可选择手动为集群添加成员。如果为大量用户配置了集群成员权限,为了减少手动操作的工作量,可以选择把这些 clusterrolebindings 一并导出,然后导入目的 Rancher local 集群。


                                      注意:clusterrolebindings 会绑定 user id,所以如果选项导出 clusterrolebindings 那也需要一并导出 user。


                                      roles.rbac.authorization.k8s.io (可选)


                                      • 在 Rancher UI 上为项目添加成员的时候,会以 项目 ID 为命名空间自动创建对应权限的角色。在集群迁移完成后可选择手动为项目添加成员,这些角色也会自动重新创建。如果为大量用户配置了项目成员权限,为了减少手动操作的工作量,可以选择把这些角色一并导出,然后导入目的 Rancher local 集群。

                                      • 如果有自定义角色,可通过 role 名称查询并导出。

                                      • 项目 ID集群 ID 来过滤 role


                                        kubectl get role.rbac.authorization.k8s.io -A|grep 6zjs5
                                        c-q4mfl p-6zjs5-projectmember 2021-03-04T08:26:54Z
                                        p-6zjs5 edit 2021-03-04T08:26:54Z
                                        p-6zjs5 project-member 2021-03-04T08:26:54Z


                                        • 以集群 ID 和项目 ID 为 NAMESPACE 导出全部 yaml 文件


                                          # 指定需要迁移的集群 ID
                                          CLUSTER_ID=''


                                          PROJECT_ID=$( kubectl get project -n ${CLUSTER_ID} |grep -v NAME | awk '{print $1}' )
                                          NAMESPACE=$( echo ${CLUSTER_ID} ${PROJECT_ID} cattle-global-data )


                                          for ns in $NAMESPACE ;
                                          do
                                          kubectl -n $ns get roles.rbac.authorization.k8s.io -oyaml > roles-$ns.yaml
                                          done;


                                          注意: 用户、角色、角色绑定,如果要导出,则需一起导出。


                                          rolebindings.rbac.authorization.k8s.io (可选)


                                          与角色具有相同逻辑。


                                          • 以项目 ID 和集群 ID 来过滤 rolebindings


                                            kubectl get rolebindings.rbac.authorization.k8s.io -A | grep 6zjs5
                                            c-q4mfl p-6zjs5-prtb-zqb6j-project-member Role/project-member 2m8s
                                            c-q4mfl p-6zjs5-u-6pz5k3vokn-member-project-member Role/project-member 31m
                                            c-q4mfl rolebinding-692hm Role/p-6zjs5-projectmember 2m8s
                                            c-q4mfl rolebinding-fhrwt Role/p-6zjs5-projectmember 31m
                                            p-6zjs5 prtb-zqb6j-edit Role/edit 2m8s
                                            p-6zjs5 prtb-zqb6j-project-member Role/project-member 2m8s
                                            p-6zjs5 u-6pz5k3vokn-member-edit Role/edit 31m
                                            p-6zjs5 u-6pz5k3vokn-member-project-member Role/project-member 31m


                                            • 以集群 ID 和项目 ID 为 NAMESPACE 导出全部 yaml 文件


                                              CLUSTER_ID=''


                                              PROJECT_ID=$( kubectl get project -n $CLUSTER_ID |grep -v NAME | awk '{print $1}' )
                                              NAMESPACE=$( echo ${CLUSTER_ID} ${PROJECT_ID} cattle-global-data )


                                              for ns in $NAMESPACE ;
                                              do
                                              kubectl -n $ns get rolebindings.rbac.authorization.k8s.io -oyaml > roles-$ns.yaml
                                              done;


                                              注意: 用户、角色、角色绑定,如果要导出,则需一起导出。


                                              综合脚本


                                              以下脚本在 Rancher 容器中执行,或者在 local 集群中执行。


                                                #!/bin/bash


                                                # 指定集群 ID
                                                CLUSTER_ID=''


                                                # 导出集群直连 kubeconfig
                                                kubectl get secret c-${CLUSTER_ID} -n cattle-system -o=jsonpath='{.data.cluster}' \
                                                | base64 --decode | jq .metadata.state | awk '{print substr($0,2,length($0)-2)}' \
                                                > kubeconfig-${CLUSTER_ID}.yaml
                                                sed -i 's/\\n/\n/g' kubeconfig-${CLUSTER_ID}.yaml && \
                                                sed -i 's/\\"/"/g' kubeconfig-${CLUSTER_ID}.yaml


                                                # 导出 clusters crd yaml
                                                kubectl get clusters.management.cattle.io $CLUSTER_ID -oyaml > clusters-${CLUSTER_ID}.yaml
                                                # 导出 projects crd yaml
                                                kubectl -n $CLUSTER_ID get projects.management.cattle.io -oyaml > projects-${CLUSTER_ID}.yaml
                                                # 导出 nodes crd yaml
                                                kubectl -n $CLUSTER_ID get nodes.management.cattle.io -oyaml > nodes-$CLUSTER_ID.yaml
                                                # 导出集群相关的 secrets
                                                kubectl -n cattle-system get secrets c-${CLUSTER_ID} -oyaml > secrets-${CLUSTER_ID}.yaml



                                                整理导出的 CRD YAML 文件


                                                对于导出的 YAML 文件,会残留一些源 Rancher 环境的配置信息,在导入目标 Rancher 环境之前需要进行配置更新。


                                                clusters.management.cattle.io (必须)


                                                1、在 Cluster CRD YAML 中,annotations 字段中的 field.cattle.io/creatorId 需要对应真实的用户 ID,这个 USER ID 需要为 超级管理员的 user id。可通过 全局|安全|用户 查看到 user id,这个 user id 默认为 user- 前缀。


                                                  metadata:
                                                  annotations:
                                                  authz.management.cattle.io/creator-role-bindings: '{"created":["cluster-owner"],"required":["cluster-owner"]}'
                                                  field.cattle.io/creatorId: user-q6cst
                                                  lifecycle.cattle.io/create.cluster-agent-controller-cleanup: "true"
                                                  lifecycle.cattle.io/create.cluster-provisioner-controller: "true"
                                                  lifecycle.cattle.io/create.cluster-scoped-gc: "true"
                                                  lifecycle.cattle.io/create.mgmt-cluster-rbac-remove: "true"
                                                  provisioner.cattle.io/ke-driver-update: updated
                                                  creationTimestamp: "2021-03-09T07:17:48Z"
                                                  finalizers:


                                                  2、删除 metadata 下的 selfLink 和 uid 字段。

                                                  3、在 .status.conditions 中删除 SystemAccountCreated


                                                    {
                                                    "lastUpdateTime": "2021-03-09T08:26:02Z",
                                                    "status": "True",
                                                    "type": "SystemAccountCreated"
                                                    }



                                                    目标 Rancher 环境中导入 CRD 资源


                                                    • 将上一步导出的 YAML 文件依次导入到目标 Rancher 环境,除密文(secrets)外其他 YAML 可使用 kubeclt apply -f xxx.yaml 去导入。

                                                    • 注意:需要先导入 Cluster CRD YAML

                                                    • 因为密文(secrets)文件太大,需要通过 kubectl replace --force -f xxx 导入。


                                                    目标 Rancher UI 操作


                                                    创建 clusterregistrationtokens


                                                    在 YAML 文件导入目标 Rancher 环境后,访问https://demo.xxxxx.com/v3/clusters/<cluster_id>/clusterregistrationtokens 可以看到并没有注册命令,这个时候需要手动去创建。

                                                    • 访问 

                                                      https://demo.xxxx.com/v3/clusters/<cluster_id>/clusterregistrationtokens 页面,点击右上角的 Create;

                                                    • 选择迁移的 集群 ID



                                                    • 点击Show Request,然后再点击 Send Request。如果显示状态码为201即执行成功;



                                                    • 执行完成后,在 clusterregistrationtokens 页面应该是可以看到如下的链接,复制 自签名 ssl 证书 对应那条命令备用。



                                                    添加集群成员


                                                    集群迁移到目标 Ranher 环境后,因为用户 ID 有所变动,所以集群成员中将不会显示对于的用,这里需要手动添加用户授权。如图:



                                                    执行 Agent 导入命令


                                                    回到源 Rancher 环境,这个时候 k8s 集群还是可以正常访问,前面的操作只是将必要的 CRD 资源迁移到目标 Rancher 环境。


                                                    进入 待迁移集群 详情页面,然后点击 执行 kubectl 命令行 按钮,接着执行上一步骤中拷贝的 clusterregistrationtokens 命令。



                                                    执行成功后,集群将变为 “Active”状态。


                                                    手动更新 k8s 集群(可选)


                                                    如果是低版本 Rancher 环境的自定义 k8s 集群迁移到高版本 Rancher 环境,因为元数据版本不一致,Rancher 会自动的更新 k8s 集群配置。如果集群页面长时间未恢复正常,也没有 k8s 集群更新状态显示,那可以手动编辑集群参数去触发集群更新。



                                                    CRD 资源清单


                                                    以下是 Rancher v2.4.13 的 CRD 资源清单,文章前面部分仅指出了常用的一些资源。如果有使用其他资源,或者自定义过其他 CRD 资源,可按照上述方法进行导出再导入目标集群。


                                                      kubectl  get crd| grep management.cattle.io


                                                      authconfigs.management.cattle.io 2021-03-04T06:47:55Z
                                                      catalogs.management.cattle.io 2021-03-04T06:47:55Z
                                                      catalogtemplates.management.cattle.io 2021-03-04T06:47:55Z
                                                      catalogtemplateversions.management.cattle.io 2021-03-04T06:47:55Z
                                                      cisbenchmarkversions.management.cattle.io 2021-03-04T06:47:56Z
                                                      cisconfigs.management.cattle.io 2021-03-04T06:47:56Z
                                                      clusteralertgroups.management.cattle.io 2021-03-04T06:47:55Z
                                                      clusteralertrules.management.cattle.io 2021-03-04T06:47:55Z
                                                      clusteralerts.management.cattle.io 2021-03-04T06:47:55Z
                                                      clustercatalogs.management.cattle.io 2021-03-04T06:47:55Z
                                                      clusterloggings.management.cattle.io 2021-03-04T06:47:55Z
                                                      clustermonitorgraphs.management.cattle.io 2021-03-04T06:47:55Z
                                                      clusterregistrationtokens.management.cattle.io 2021-03-04T06:47:55Z
                                                      clusterroletemplatebindings.management.cattle.io 2021-03-04T06:47:55Z
                                                      clusters.management.cattle.io 2021-03-04T06:47:55Z
                                                      clusterscans.management.cattle.io 2021-03-04T06:47:55Z
                                                      clustertemplaterevisions.management.cattle.io 2021-03-04T06:47:56Z
                                                      clustertemplates.management.cattle.io 2021-03-04T06:47:56Z
                                                      composeconfigs.management.cattle.io 2021-03-04T06:47:55Z
                                                      dynamicschemas.management.cattle.io 2021-03-04T06:47:55Z
                                                      etcdbackups.management.cattle.io 2021-03-04T06:47:55Z
                                                      features.management.cattle.io 2021-03-04T06:47:55Z
                                                      globaldnses.management.cattle.io 2021-03-04T06:47:56Z
                                                      globaldnsproviders.management.cattle.io 2021-03-04T06:47:56Z
                                                      globalrolebindings.management.cattle.io 2021-03-04T06:47:55Z
                                                      globalroles.management.cattle.io 2021-03-04T06:47:55Z
                                                      groupmembers.management.cattle.io 2021-03-04T06:47:55Z
                                                      groups.management.cattle.io 2021-03-04T06:47:55Z
                                                      kontainerdrivers.management.cattle.io 2021-03-04T06:47:55Z
                                                      monitormetrics.management.cattle.io 2021-03-04T06:47:55Z
                                                      multiclusterapprevisions.management.cattle.io 2021-03-04T06:47:55Z
                                                      multiclusterapps.management.cattle.io 2021-03-04T06:47:55Z
                                                      nodedrivers.management.cattle.io 2021-03-04T06:47:55Z
                                                      nodepools.management.cattle.io 2021-03-04T06:47:55Z
                                                      nodes.management.cattle.io 2021-03-04T06:47:55Z
                                                      nodetemplates.management.cattle.io 2021-03-04T06:47:55Z
                                                      notificationtemplates.management.cattle.io 2021-03-04T06:47:55Z
                                                      notifiers.management.cattle.io 2021-03-04T06:47:55Z
                                                      podsecuritypolicytemplateprojectbindings.management.cattle.io 2021-03-04T06:47:55Z
                                                      podsecuritypolicytemplates.management.cattle.io 2021-03-04T06:47:55Z
                                                      preferences.management.cattle.io 2021-03-04T06:47:55Z
                                                      projectalertgroups.management.cattle.io 2021-03-04T06:47:55Z
                                                      projectalertrules.management.cattle.io 2021-03-04T06:47:55Z
                                                      projectalerts.management.cattle.io 2021-03-04T06:47:55Z
                                                      projectcatalogs.management.cattle.io 2021-03-04T06:47:55Z
                                                      projectloggings.management.cattle.io 2021-03-04T06:47:55Z
                                                      projectmonitorgraphs.management.cattle.io 2021-03-04T06:47:55Z
                                                      projectnetworkpolicies.management.cattle.io 2021-03-04T06:47:56Z
                                                      projectroletemplatebindings.management.cattle.io 2021-03-04T06:47:56Z
                                                      projects.management.cattle.io 2021-03-04T06:47:56Z
                                                      rkeaddons.management.cattle.io 2021-03-04T06:47:56Z
                                                      rkek8sserviceoptions.management.cattle.io 2021-03-04T06:47:56Z
                                                      rkek8ssystemimages.management.cattle.io 2021-03-04T06:47:56Z
                                                      roletemplates.management.cattle.io 2021-03-04T06:47:56Z
                                                      samltokens.management.cattle.io 2021-03-04T06:47:56Z
                                                      settings.management.cattle.io 2021-03-04T06:47:56Z
                                                      templatecontents.management.cattle.io 2021-03-04T06:47:56Z
                                                      templates.management.cattle.io 2021-03-04T06:47:56Z
                                                      templateversions.management.cattle.io 2021-03-04T06:47:56Z
                                                      tokens.management.cattle.io 2021-03-04T06:47:56Z
                                                      userattributes.management.cattle.io 2021-03-04T06:47:56Z
                                                      users.management.cattle.io 2021-03-04T06:47:56Z


                                                      异常回退


                                                      因为源 Rancher 环境保留了完整的配置信息,要想回退到源 Rancher 环境,只需将 K8S 集群重新注册到源 Rancher 环境即可。


                                                      1. 访问源 Rancher https://demo.cnrancher.com/v3/clusters/<cluster_id>/clusterregistrationtokens 页面 。

                                                      2. 定位到 insecureCommand,复制 insecureCommand 后面的命令,在需要迁移的 K8S 集群中执行。


                                                      推荐阅读

                                                      Rancher 2.5.6发布,支持Kubernetes 1.20!

                                                      硬核干货丨借助多容器Pod,轻松扩展K8S中的应用

                                                      无需重新搭建集群,轻松替换证书!

                                                      About SUSE Rancher


                                                      Rancher是一个开源的企业级Kubernetes管理平台,实现了Kubernetes集群在混合云+本地数据中心的集中部署与管理。Rancher一向因操作体验的直观、极简备受用户青睐,被Forrester评为“2020年多云容器开发平台领导厂商”以及“2018年全球容器管理平台领导厂商”,被Gartner评为“2017年全球最酷的云基础设施供应商”。


                                                      目前Rancher在全球拥有超过三亿的核心镜像下载量,并拥有包括中国联通、中国平安、中国人寿、上汽集团、三星、施耐德电气、西门子、育碧游戏、LINE、WWK保险集团、澳电讯公司、德国铁路、厦门航空、新东方等全球著名企业在内的共40000家企业客户。


                                                      2020年12月,SUSE完成收购RancherLabs,Rancher成为了SUSE “创新无处不在(Innovate Everywhere)”企业愿景的关键组成部分。SUSE和Rancher共同为客户提供了无与伦比的自由和所向披靡的创新能力,通过混合云IT基础架构、云原生转型和IT运维解决方案,简化、现代化并加速企业数字化转型,推动创新无处不在。

                                                      文章转载自Rancher,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

                                                      评论