Rancher 2.4.x 迁移自定义 k8s 集群的示例分析

发布时间:2021-12-16 10:08:49 作者:柒染
来源:亿速云 阅读:182

本篇文章给大家分享的是有关Rancher 2.4.x 迁移自定义 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 环境,以便集群回退。

二、基础配置(可选)

  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. 准备待迁移集群的直连 kubecfg 文件所谓直连,就是不经过 Rancher Agent 代理直接与业务 K8S 通信。通过 Rancher UI 获取到的 kubecfg 配置文件默认是通过 Rancher Agent 进行代理。当集群迁移到目标 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)}' \
    > ${CLUSTER_ID}-kube-config.yml
    
    sed -i 's/\\n/\n/g' ${CLUSTER_ID}-kube-config.yml && \
    sed -i 's/\\"/"/g' ${CLUSTER_ID}-kube-config.yml

     

三、导出源 Rancher 环境中的 CRD 资源( Rancher 容器中或者 local 集群中操作 )

clusters.management.cattle.io (必须)

projects.management.cattle.io (必须)

nodes.management.cattle.io (必须)

secrets (必须)

apps.project.cattle.io (可选)

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

multiclusterapps.management.cattle.io (可选)

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

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

Pod(可选)安全策略

kubectl get podsecuritypolicytemplates.management.cattle.io

全局安全认证(可选)(authconfigs.management.cattle.io)

users.management.cattle.io (可选)

# 排除本地 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 (可选)

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

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

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

与角色具有相同逻辑。

四、目标 Rancher 环境中导入CRD 资源

五、目标 Rancher UI 操作

创建 clusterregistrationtokens

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

Rancher 2.4.x 迁移自定义 k8s 集群的示例分析

Rancher 2.4.x 迁移自定义 k8s 集群的示例分析

Rancher 2.4.x 迁移自定义 k8s 集群的示例分析

执行 Agent 导入命令

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

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

六、CRD 资源清单

以下是 Rancher v2.4.13 的 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 环境,只需将集群重新注册到源 Rancher 环境即可。

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

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

以上就是Rancher 2.4.x 迁移自定义 k8s 集群的示例分析,小编相信有部分知识点可能是我们日常工作会见到或用到的。希望你能通过这篇文章学到更多知识。更多详情敬请关注亿速云行业资讯频道。

推荐阅读:
  1. Rancher Server如何配置多节点kubernetes集群
  2. rancher集成gitlab教程

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

rancher kubernetes

上一篇:elasticsearch插件有哪些

下一篇:Linux sftp命令的用法是怎样的

相关阅读

您好,登录后才能下订单哦!

密码登录
登录注册
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》