Rancher部署并导入K8S集群

Rancher 的部署可以有三种架构:

  • 高可用 Kubernetes 安装: 建议使用 Kubernetes 程序包管理器 Helm 在专用的 Kubernetes 集群上安装 Rancher。在 RKE 集群中,需要使用三个节点以实现高可用性。在 K3s 集群(轻量级kubernetes)中,仅需要两个节点即可。
  • 单节点 Kubernetes 安装: 另一个选择是在 Kubernetes 集群上使用 Helm 安装 Rancher,仅在集群中使用单个节点。虽然在这种情况下的 Rancher Server 不具有高可用性,但是这种架构既节省了资源,又保留了可扩展性。如果您想在短期内通过使用单个节点来节省资源,同时又保留高可用性迁移路径,最合适的架构就是单节点 Kubernetes 安装。
  • 单节点 Docker 安装: 将 Rancher 与 Docker 一起安装在单个节点上。这种安装方式的优点是开箱即用,建议在测试和演示环境中使用这种架构。它的缺点也非常明显,单节点 Docker 安装和 Kubernetes 安装之间无法迁移。如果您已经决定了要在生产环境中使用 Rancher,我们推荐您在上述的两种 Kubernetes 安装中选择一种,在生产环境中使用。

一、部署Rancher v2.27环境(单节点Docker安装)

1)这里我将Rancher部署到k8s集群的其中一个node节点172.16.60.234上。

需要提前下载rancher镜像,这里选择 “rancher/rancher:stable”版本镜像

bash;gutter:true; 下载rancher服务镜像 [root@k8s-node01 ~]# docker pull rancher/rancher:stable</p> <p>查看镜像 [root@k8s-node01 ~]# docker images REPOSITORY TAG IMAGE ID CREATED SIZE rancher/rancher stable fb0772b142fe 13 days ago 856MB .........</p> <pre><code> 2)以容器方式启动Rancher服务 ;gutter:true;
启动rancher容器
[root@k8s-node01 ~]# docker run -d -v /tmp/rancher:/tmp/rancher –restart=unless-stopped -p 80:80 -p 443:443 rancher/rancher:stable

查看rancher容器
[root@k8s-node01 ~]# docker ps|grep rancher
2c2b36cb138b rancher/rancher:stable "entrypoint.sh" 3 hours ago Up 3 hours 0.0.0.0:80->80/tcp, 0.0.0.0:443->443/tcp lucid_robinson

稍微等一会儿,待rancher容器进程完全拉起来后,就可以在浏览器里访问rancher了。访问地址是:https://172.16.60.234,首次访问会提示设置admin管理员密码。比如这里设置管理员密码为:
admin@123456

Rancher部署并导入K8S集群

Rancher部署并导入K8S集群

二、导入k8s集群到Rancher环境

将已经部署好的k8s集群导入到Rancher环境中

1)依次点击 “添加集群” -> “导入” -> “添加集群 – Import”

Rancher部署并导入K8S集群

Rancher部署并导入K8S集群

2) 给自己导入的集群起一个名称。比如这里我导入的k8s集群名称设置为”kuvin-test-cluster”

Rancher部署并导入K8S集群

3)按照下面的指向,执行第一步骤和第三步骤(因为我这里二进制部署的k8s集群是有证书,所以跳过第二步骤,直接执行第三步骤)

Rancher部署并导入K8S集群

先查看node节点kubelet配置中的USER_ACCOUNT,默认是default-auth

Rancher部署并导入K8S集群
  • 执行第一步骤操作(在k8s集群的master节点操作)

bash;gutter:true; [root@k8s-master01 work]# kubectl create clusterrolebinding cluster-admin-binding --clusterrole cluster-admin --user default-auth clusterrolebinding.rbac.authorization.k8s.io/cluster-admin-binding created</p> <pre><code> * 接着执行第三步骤(在k8s集群的master节点操作) 首先在浏览器里访问上面截图中的第三步骤中的yaml地址,查看yaml文件里配置的image镜像,提前在所以node节点将这些image镜像下载下来。 [https://172.16.60.234/v3/import/6mznp5cr88dcnxmglr6x4nklfpt5c2gzh5tzf75bncpflbmsh99p4h.yaml](https://172.16.60.234/v3/import/6mznp5cr88dcnxmglr6x4nklfpt5c2gzh5tzf75bncpflbmsh99p4h.yaml) 也可以将浏览器里这些yaml配置内容粘贴到master节点的一个文件里,比如rancher_imoprt.yml,然后执行"kubectl create -f rancher_imoprt.yml"。这里我直接使用上面截图中第三步的命令进行cattle-cluster-agent和cattle-node-agent的pod创建 ![Rancher部署并导入K8S集群](https://johngo-pic.oss-cn-beijing.aliyuncs.com/articles/20230526/907596-20210405075842478-744237943.png) 查出来image镜像后,提前在所有的node节点节点上下载这个rancher/rancher-agent:v2.4.5镜像 ;gutter:true;
[root@k8s-node01 ~]# docker pull rancher/rancher-agent:v2.4.5

[root@k8s-node01 ~]# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
rancher/rancher-agent v2.4.5 2e6c7ac4e072 13 days ago 294MB
…….

接着执行上面截图中的第三步骤操作

bash;gutter:true; [root@k8s-master01 work]# curl --insecure -sfL https://172.16.60.234/v3/import/qx7972dgq5876dlvtx66hmb55l49w57tvpr8v58ldwvlk75bb44msn.yaml | kubectl apply -f - clusterrole.rbac.authorization.k8s.io/proxy-clusterrole-kubeapiserver created clusterrolebinding.rbac.authorization.k8s.io/proxy-role-binding-kubernetes-master created namespace/cattle-system created serviceaccount/cattle created clusterrolebinding.rbac.authorization.k8s.io/cattle-admin-binding created secret/cattle-credentials-ad2b8cf created clusterrole.rbac.authorization.k8s.io/cattle-admin created deployment.apps/cattle-cluster-agent created daemonset.apps/cattle-node-agent created</p> <pre><code> 待上面第三步骤成功操作后,到k8s集群的master节点上查看信息 检查会发现k8s中多了一个cattle-system的命名空间: ;gutter:true;
检查会发现k8s中多了一个cattle-system的命名空间
[root@k8s-master01 work]# kubectl get ns
NAME STATUS AGE
cattle-system Active 18m
default Active 3d19h
kube-node-lease Active 3d19h
kube-public Active 3d19h
kube-system Active 3d19h

cattle-system的命名空间下创建了cattle-cluster-agent和cattle-node-agent的pod
[root@k8s-master01 work]# kubectl get pods -n cattle-system
NAME READY STATUS RESTARTS AGE
cattle-cluster-agent-87944bb89-9l8vn 1/1 Running 0 18m
cattle-node-agent-24vnp 1/1 Running 0 18m
cattle-node-agent-86hdx 1/1 Running 0 18m
cattle-node-agent-qz59v 1/1 Running 0 18m

[root@k8s-master01 work]# kubectl get deployment -n cattle-system
NAME READY UP-TO-DATE AVAILABLE AGE
cattle-cluster-agent 1/1 1 1 19m

[root@k8s-master01 work]# kubectl get daemonset -n cattle-system
NAME DESIRED CURRENT READY UP-TO-DATE AVAILABLE NODE SELECTOR AGE
cattle-node-agent 3 3 3 3 3 19m

  • 观察集群导入后的状态

执行完上面截图中的第三步骤后,观察下导入的集群的状态,状态依次从”Waiting” 变为 “Active”

Rancher部署并导入K8S集群

三、通过Rancher界面管理k8s集群

Rancher部署并导入K8S集群

Rancher部署并导入K8S集群

Rancher部署并导入K8S集群

点击上图右上角的”执行kubelet命令行”,就可以在webshell里面通过kubelet命令查看集群信息了

Rancher部署并导入K8S集群

还可以通过查看导入的k8s集群的项目里的资源,来查看每个service下的pod情况

Rancher部署并导入K8S集群

动态伸缩pod副本

Rancher部署并导入K8S集群

登录pod容器内部

Rancher部署并导入K8S集群

Rancher部署并导入K8S集群

pod重新部署

Rancher部署并导入K8S集群

Rancher部署并导入K8S集群

Rancher部署并导入K8S集群

Rancher还有很多管理k8s集群的其他操作功能,在这里就不一一介绍了。

四、删除已导入的k8s集群,重新导入

1)从Rancher界面直接删除已导入的集群

Rancher部署并导入K8S集群

2)删除已经导入的 “API&Keys” 信息

Rancher部署并导入K8S集群

3)删除上面截图中第一步骤中添加的权限(在k8s集群的master节点操作)

bash;gutter:true; [root@k8s-master01 work]# kubectl delete clusterrolebinding cluster-admin-binding</p> <pre><code> 4)删除上面截图中第三步骤中添加的cattle-cluster-agent和cattle-node-agent的pod ;gutter:true;
[root@k8s-master01 work]# kubectl delete deployment cattle-cluster-agent -n cattle-system
[root@k8s-master01 work]# kubectl delete daemonset cattle-node-agent -n cattle-system

或者将上面截图中第三步骤的yaml文件地址里的内容粘贴到k8s的master节点的一个yaml文件,比如rancher_imoprt.yml,直接针对这个yml文件执行”kubectl delete -f rancher_imoprt.yml”操作即可删除

bash;gutter:true;
[root@k8s-master01 work]# kubectl delete -f rancher_imoprt.yml

** 当你发现自己的才华撑不起野心时,就请安静下来学习吧!**

Original: https://www.cnblogs.com/kevingrace/p/14617757.html
Author: 散尽浮华
Title: Rancher部署并导入K8S集群

原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/546583/

转载文章受原作者版权保护。转载请注明原作者出处!

(0)

大家都在看

  • Python 多重继承时metaclass conflict问题解决与原理探究

    最近有一个需求需要自定义一个多继承abc.ABC与django.contrib.admin.ModelAdmin两个父类的抽象子类,方便不同模块复用大部分代码,同时强制必须实现所有…

    技术杂谈 2023年6月21日
    0101
  • 为什么人们都讨厌开会?

    原创不易,求分享、求一键三连 会议是工作中最重要的组成部分,因为他需要解决两个核心难题: 信息传递; 达成一致; 有效的信息传递是战略落地的前提条件,更多的认知统一更是可以加速成功…

    技术杂谈 2023年6月1日
    0123
  • XenServer 常见故障处理

    xe-<span class="hljs-keyword">switch-network-backend bridge sed -i <spa…

    技术杂谈 2023年5月31日
    0106
  • Linux Ubuntu 下载&安装 Java

    1. 下载 Java OpenJDK VS Oracle JDK ? 下载之前查了下资料,有 OpenJDK 和 Oracle JDK 两种: Java 最早由 SUN 公司发明,…

    技术杂谈 2023年7月11日
    0109
  • Python数据分析–Numpy常用函数介绍(7)–Numpy中矩阵和通用函数

    在NumPy中,矩阵是 ndarray 的子类,与数学概念中的矩阵一样,NumPy中的矩阵也是二维的,可以使用 mat 、 matrix 以及 bmat 函数来创建矩阵。 一、创建…

    技术杂谈 2023年7月25日
    091
  • [转]Jira ScriptRunner Send Custom Email

    This snippet shows you how to send a custom email. You can use the method inside in any sc…

    技术杂谈 2023年5月30日
    0142
  • transformer

    transformer 人工智能模型 transformer 人工智能模型 transformer 人工智能模型 Original: https://www.cnblogs.com…

    技术杂谈 2023年5月31日
    088
  • @AliasFor注解

    顾名思义,@AliasFor表示别名,它可以添加到自定义注解的两个属性上,表示这两个属性互为别名。也就是说,这两个属性其实是同一个含义。 通常所有注解都会有一个属性value,在使…

    技术杂谈 2023年5月31日
    091
  • 微信二维码支付

    准备工作 概述:微信扫码支付是商户系统按微信支付协议生成支付二维码,用户再用微信 &#x626B;&#x4E00;&#x626B;完成支付的模式。该模式适用…

    技术杂谈 2023年6月21日
    0111
  • 账号分享

    404. 抱歉,您访问的资源不存在。 可能是网址有误,或者对应的内容被删除,或者处于私有状态。 代码改变世界,联系邮箱 contact@cnblogs.com 园子的商业化努力-困…

    技术杂谈 2023年6月22日
    0120
  • 在Visual Code中安装对应的工具

    1.打开visual code的扩展管理,查找yarn 安装默认找到的第一个 image.png 安装完之后 点击 重新加载 2.快捷键 ctrl+shift+p打开命令面板 或者…

    技术杂谈 2023年5月31日
    0108
  • phpmyadmin 导出数据表

    — — &#x8868;&#x7684;&#x7ED3;&#x6784; eb_store_category — DROP TABLE IF …

    技术杂谈 2023年5月31日
    0104
  • [转]私有笔记部署

    故事的起源是一个由于线性代数期末考几道计算题卡住算不出来折腾半天而考后看某课代表提前交卷又感觉人均 AK 了以致十分 emo 想要暂时逃避学习的下午。 TL;DR 思源笔记最好。快…

    技术杂谈 2023年5月30日
    0161
  • 使用seldom编写http接口用例

    在编写接口用例的过程中,针对一个接口,往往只是参数不同,那么参数化就非常有必要了。 seldom 中参数化的用法非常灵活,这里仅介绍 @file_data() 的N种玩法。 二维列…

    技术杂谈 2023年5月31日
    0101
  • 查找文本文件中重复的汉字

    查找文本文件中重复的汉字,找到在所在行号 文本文件格式 大 小 多 少 前 后 左 …… text.py import os import re list = [] sam…

    技术杂谈 2023年5月31日
    0152
  • iOS修改项目名称

    网上很多方法修改iOS项目名字,但是操作不当就会遇到文件路径错误,修改前项目和修改后的项目路径指向同一文件,在这就是把项目修改完全打不开等等。今天在这分享完美修改项目名称,避免路径…

    技术杂谈 2023年5月31日
    098
亲爱的 Coder【最近整理,可免费获取】👉 最新必读书单  | 👏 面试题下载  | 🌎 免费的AI知识星球