草庐IT

【Rancher】Rancher 2.6.x 搭建Kubernetes集群

山水不相逢 2023-12-06 原文

 Rancher 是一个开源的项目,提供了在产品环境中对 Docker 容器进行全方位管理的平台。它提供的基础架构服务包括多主机网络、全局和局部的负载均衡、卷快照等。集成了原生 Docker 管理能力,包括:Docker Machine 和 Docker Swarm。Rancher 还提供了丰富用户体验的管理功能。

Rancher 支持多种编排系统,支持多种 IaaS 网络服务和裸机。其架构如下:

前置操作:

🍃 我的物理机硬件:i5-12400CPU、12核、16G

🍃 VMware虚拟机配置,受限于我的电脑配置瓶颈,k8snode3这个节点我可能不会用上,不过可以把k8snode3这个节点和k8sMaster节点放在同一台机器上

hostnameIP内容CPU内存硬盘
k8srancher172.16.0.128rancher8C7G40G
k8sMaster172.16.0.129master4C3G40G
k8snode1172.16.0.130node4C2G40G
k8snode2172.16.0.131node4C2G40G
k8snode3172.16.0.132node4C2G40G

🍃 虚拟机网络配置:

🍃 我将虚拟机的NET网络配置为桥接模式,在虚拟网络编辑器里将虚拟机网卡桥接至了物理机网卡,避免拉取k8s镜像时网络不稳定的情况发生

 🍃 安装rancher前的虚拟机配置,每台都要配置,不然会出现些奇奇怪怪的问题

yum install -y ntpdate #下载ntpdate
ntpdate ntp1.aliyun.com #更新系统时间
hostnamectl set-hostname k8sRancher  #依次更改系统主机名

#将以下IP和主机名信息写入每台虚拟机
cat >> /etc/hosts << EOF
172.16.0.128 k8srancher
172.16.0.129 k8sMaster
172.16.0.130 k8snode1
172.16.0.131 k8snode2
172.16.0.132 k8snode3
EOF

systemctl stop firewalld #关闭防火墙
systemctl disable firewalld #永久关闭防火墙

setenforce 0 #关闭selinux
#永久关闭selinux
sed -i "s#SELINUX=enforcing#SELINUX=disable#g" /etc/selinux/config

swapoff -a #关闭swap
sed -ri 's/.*swap.*/#&/' /etc/fstab #永久关闭swap

一、获取rancher

🍃 进入rancher官网

https://www.rancher.cn/quick-start/

二、rancher安装示意

🍃 主界面有安装方法,这里得保证机器里面都提前安装了docker

三、 启动rancher

🍃 命令执行完后Rancher容器会自己启动

🍃 查看容器,已经启动了,我这里映射了宿主机81端口

🍃 然后访问Rancher宿主机IP,进入Rancher页面

四、获取rancher初始登录密码

🍃 这一步需要获取Rancher容器的id

🍃 查询Rancher容器id,执行:

docker logs  622f2837f003  2>&1 | grep "Bootstrap Password:"

🍃 会得到如下一串密码,将密码填入上面的password框,然后下一步:

 五、自定义rancher登录密码

🍃 这一步我自定义了密码,也就是rancher后期页面登录用的密码,账号是:admin

 六、创建

🍃 上一步设置完后,就进入首页了,这里点击创建

 七、自定义集群

🍃 在现有的节点上使用RKE创建自定义集群

 八、版本选择

🍃 名字自定义,k8s版本我选的v1.18.20-rancher1-3,下一步

 九、部署master和node节点

🍃 勾选 etcd、Control Plane,复制下面的命令在master机器上运行

 🍃 在master机器执行命令,完毕确认镜像是否起来,以下是启动的master节点所有有关容器:

 🍃 出现这个其实就可以点击Done了

 

🍃 这里等待集群状态显示为Active就说明好了,关于为什么node节点还没加我就Done,是因为我的机器实在拉跨,再继续添加一个node节点,我的虚拟机cpu会疯狂飙升,rancher页面会爆炸到直接失联

 🍃 等rancher机器缓一缓,接下来可以添加node节点了

 9.1、进入集群,添加注册新的节点,复制里面的命令,注意命令最后是带worker的,这个是node节点使用的

 🍃 命令执行完成后,node节点rancher-agent容器已经运行起来了

🍃 rancher页面里面你得等它一会,它这会在干活儿,等rancher忙完新的node节点就会出现在集群节点中

🍃 比如这样,新的node节点已经出来了

🍃 k8snode3这台机器我终究还是没启用,错付了,我摊牌了,终究还是没有雨露均沾,这台要是起来,我这物理机就要变成老爷车了,卡到奔溃(这块儿真是老惨了,卡了我半小时),总结到这里还得是实验机器配置要给够,不给够的话,部署过程真就是一言难尽

十、 配置kubectl命令

🍃 下载kubeConfig

 🍃 在需要部署kubectl的机器用户家目录下创建文件夹 .kube ,在 .kube 中创建文件config

🍃 将刚刚下载的kubeConfig文件的内容复制到config文件中

🍃 然后在机器里下载kubectl命令

 curl -LO https://storage.googleapis.com/kubernetes-release/release/$(curl -s https://storage.googleapis.com/kubernetes-release/release/stable.txt)/bin/linux/amd64/kubectl

🍃确定要下载的版本,我这里的k8s版本是v1.18.20,我就下载v1.18.20版本的kubectl

curl -LO https://storage.googleapis.com/kubernetes-release/release/v1.18.20/bin/linux/amd64/kubectl

🍃下载完成后将kubectl更换位置,放入以下目录

sudo mv ./kubectl /usr/local/bin/kubectl

🍃测试kubectl是否可以使用

kubectl get nodes #获取节点信息
#这里权限不够,给个可执行权限
chmod +x /usr/local/bin/kubectl

 🍃kubectl已经可以使用了

🍃如果不想在机器安装kubectl,rancher集群管理页面命令行也可以直接使用kubectl命令

 

🍁下面总结下部署过程中遇见的报错问题:

1、如果碰见ssl相关的报错,得看看是不是虚拟机网络配置有问题,关于k8s镜像拉取,作为虚拟机默认网络设置(net),会有可能不太好使,甚至有的小伙伴还会使用内网穿透(有这么费力嘛?)

2、Websocket Disconnected
The connection to wss://172.16.0.128/v1/subscribe closed unexpectedly Fri, Sep 30 2022 12:33:59 pm. Retrying...

🍁这个问题在我这还真就是配置不够导致的,后来我重新调整了虚拟机配置,也就是文章开头表格的配置才成功避开这个提示

 3、Cluster health check failed: Failed to communicate with API server during namespace check: Get "https://172.16.0.129:6443/api/v1/namespaces/kube-system?timeout=45s": context deadline exceeded

🍁这个问题,看看是不是防火墙、selinux、swap这些没设置好导致的,也就是文章开头要求的前置配置,看看是不是有什么遗漏

🍃 展示下每个节点机器的运行的内容:

🍃 k8srancher

🍃 k8sMaster(etcd、Control Plane)

 🍃 k8snode1(worker)

🍃 k8snode2(worker)

 

有关【Rancher】Rancher 2.6.x 搭建Kubernetes集群的更多相关文章

  1. 【详解】Docker安装Elasticsearch7.16.1集群 - 2

    开门见山|拉取镜像dockerpullelasticsearch:7.16.1|配置存放的目录#存放配置文件的文件夹mkdir-p/opt/docker/elasticsearch/node-1/config#存放数据的文件夹mkdir-p/opt/docker/elasticsearch/node-1/data#存放运行日志的文件夹mkdir-p/opt/docker/elasticsearch/node-1/log#存放IK分词插件的文件夹mkdir-p/opt/docker/elasticsearch/node-1/plugins若你使用了moba,直接右键新建即可如上图所示依次类推创建

  2. 关于ES集群信息的一些查看 - 2

    文章目录查看ES信息查看节点信息查看分片信息实际场景下ES分片及副本数量应该怎么分关于ES的灵活使用查看ES信息查看版本kibana:GET/查看节点信息GET/_cat/nodes?v解释:ip:集群中节点的ip地址;heap.percent:堆内存的占用百分比;ram.percent:总内存的占用百分比,其实这个不是很准确,因为buff/cache和available也被当作使用内存;cpu:cpu占用百分比;load_1m:1分钟内cpu负载;load_5m:5分钟内cpu负载;load_15m:15分钟内cpu负载;node.role:上图的dilmrt代表全部权限master:*代表

  3. linux查看es节点使用情况,elasticsearch(es) 如何查看当前集群中哪个节点是主节点(master) - 2

    elasticsearch查看当前集群中的master节点是哪个需要使用_cat监控命令,具体如下。查看方法es主节点确定命令,以kibana上查看示例如下:GET_cat/nodesv返回结果示例如下:ipheap.percentram.percentcpuload_1mload_5mload_15mnode.rolemastername172.16.16.188529952.591.701.45mdi-elastic3172.16.16.187329950.990.991.19mdi-elastic2172.16.16.231699940.871.001.03mdi-elastic4172

  4. LinuxGUI自动化测试框架搭建(二十二)-框架主入口main.py设计&log日志调用 - 2

    (二十二)-框架主入口main.py设计&log日志调用和生成1测试目的2测试需求3需求分析4详细设计4.1新建存放日志目录log4.1.1配置config.py中写入log的目录4.2`baseInfo.py`中加入日志4.3`test_gedit.py`中加入日志4.4主函数入口main.py中调用日志5调用日志主函数main.py源码6`baseInfo.py`源码7`test_gedit.py`源码8运行效果9目前框架结构1测试目的组织运行所有的测试用例,并调用日志模块,便于问题定位。

  5. 基于ActiveMQ搭建MQTT服务备忘(二):webapp集成 - 2

    (1)为什么写这个话题(Why)读万卷书不如行千里路。这次搭建MQTT服务,遇到了一些误解,特此记录备忘。主要包括:(1)服务(Broker)的账户管理与网页管理平台的账户(2)与web应用的集成(Spring系)(2)ActiveMQ版本选择因为JAVA环境是JDK8,所以按兼容性考虑选择了ActiveMQ5.15的最后版本5.15.15。如果你是JDK11则可考虑ActiveMQ的最新版本5.17或5.18。ActiveMQ支持MQTTv3.1.1andv3.1。(3)ActiveMQ与web应用的集成主要介绍与Spring系的webapp集成(SpringBoot和SpringMVC)。

  6. kubernetes集群划分节点 - 2

    Kubernetes(K8s)是一个用于管理容器化应用程序的开源平台,可以帮助开发人员更轻松地部署、管理和扩展应用程序。在Kubernetes中,集群划分是一种重要的概念,可以帮助我们更好地组织和管理集群中的节点和资源。本文将介绍如何使用Kubernetes对集群进行划分,并提供详细的操作示例,希望能够帮助读者更好地了解和使用Kubernetes平台。Node划分Node划分是将集群中的节点按照一定的规则进行划分。在Kubernetes中,可以使用NodeSelector和Affinity机制来实现Node划分。NodeSelectorNodeSelector是一种将Pod调度到符合特定节点标

  7. 【微服务笔记23】使用Spring Cloud微服务组件从0到1搭建一个微服务工程 - 2

    这篇文章,主要介绍如何使用SpringCloud微服务组件从0到1搭建一个微服务工程。目录一、从0到1搭建微服务工程1.1、基础环境说明(1)使用组件(2)微服务依赖1.2、搭建注册中心(1)引入依赖(2)配置文件(3)启动类1.3、搭建配置中心(1)引入依赖(2)配置文件(3)启动类1.4、搭建API网关(1)引入依赖(2)配置文件(3)启动类1.5、搭建服务提供者(1)引入依赖(2)配置文件(3)启动类1.6、搭建服务消费者(1)引入依赖(2)配置文件(3)启动类1.7、运行测试一、从0到1搭建微服务工程1.1、基础环境说明(1)使用组件这里主要是使用的SpringCloudNetflix

  8. 云原生(十八) | Kubernetes篇之Kubernetes(k8s)工作负载 - 2

    文章目录Kubernetes(k8s)工作负载一、Workloads二、Pod三、Deployment四、RC、RS、DaemonSet、StatefulSet五、Job、CronJob1、Job2、CronJob六、GCKubernetes(k8s)工作负载一、Workloads什么是工作负载(Workloads)工作负载是运行在Kubernetes上的一个应用程序。一个应用很复杂,可能由单个组件或者多个组件共同完成。无论怎样我们可以用一组Pod来表示一个应用,也就是一个工作负载Pod又是一组容器(Containers)所以关系又像是这样工作负载(Workloads)控制一组PodPod控制

  9. ruby-on-rails - 搭建Ruby开发环境 - 2

    按照目前的情况,这个问题不适合我们的问答形式。我们希望答案得到事实、引用或专业知识的支持,但这个问题可能会引发辩论、争论、投票或扩展讨论。如果您觉得这个问题可以改进并可能重新打开,visitthehelpcenter指导。关闭9年前。我目前正在尝试搭建一个学习Ruby的开发环境。环境主要是为了掌握这门语言,但我很可能会在很长一段时间后转向使用Rails进行开发。以Web开发为目标,我想了解首选的Web服务器和数据库。我打算在虚拟机上设置环境,所以我不担心把它弄坏。因此,我愿意使用Linux发行版、OSX或Windows作为操作系统。我正从C#转向,所以我想在一定程度上被迫采用Ruby的

  10. geth下载安装配置环境及联盟链的搭建 - 2

    以太坊概论考察课更具课堂教学讲解,参考开放资料。使用所学的知识,创建项目并完成要求的内容。包含的功能和要求具体如下:一:安装并运行geth客户端1、下载安装geth首先下载geth:https://geth.ethereum.org/downloads/​选择路径↓2、配置环境变量3、运行geth如下命令所示:查看geth命令。使用gethversion查看geth版本号,判断geth是否成功安装。如下命令所示:`gethversion`可以通过geth--help查看geth工具所支持的命令和相关参数,方便后期关于geth的操作。如下命令所示:geth--help运行结果如下:二:搭建get

随机推荐