如何使用装rancher安装k8s集群(k8s集群图形化管理工具)

前言

kubernetes集群的图形化管理工具主要有以下几种:
1、 Kubernetes Dashborad: Kubernetes 官方提供的图形化工具
2、 Rancher: 目前比较主流的企业级kubernetes可视化管理工具
3、各个云厂商Kubernetes集成的管理器
4、 Kuboard: 国产开源Kubernetes可视化管理工具
本篇我们来学习 主流的企业级kubernetes可视化管理工具-rancher工具。

rancher官网

官网:https://www.rancher.cn/
github:https://github.com/rancher/rancher
镜像托管在hub.docker.com 上。
rancher的版本与k8s的版本有着一定的关系,在https://www.suse.com/suse-rancher/support-matrix/all-supported-versions/rancher-v2-7-5/ 中可以查看。

主机准备

准备4台服务器,一台用于rancher软件,其他3台用于搭建k8s高可用集群:

rancher	: 安装rancher
master01 : k8s master节点,也分配node、etcd角色;
node01 : k8s node节点,也分配node、etcd角色;
node2 : k8s node节点,也分配node、etcd角色;

环境初始化

4台主机都根据实际情况做如下6大步骤配置:

# 1、关闭防火墙
systemctl stop firewalld && systemctl disable firewalld
# 2、禁用selinux
setenforce 0					#临时关闭selinux
vim /etc/selinux/config			#永久关闭selinux
SELINUX=disabled
# 3、关闭swap分区(必须,因为k8s官网要求)
swapoff -a							#禁用所有swap交换分区
vim /etc/fstab						#永久禁用swap,删除或注释掉/etc/fstab里的swap设备的挂载命令即可
#/dev/mapper/centos-swap swap         swap    defaults        0 0
# 4、设置主机名并写入配置文件
hostnamectl set-hostname rancher
hostnamectl set-hostname master01
hostnamectl set-hostname node1
hostnamectl set-hostname node2
cat >> /etc/hosts <<EOF
192.168.244.150 rancher
192.168.244.151 master01
192.168.244.152 node1
192.168.244.153 node2
EOF
# 5、时间同步
yum -y install ntp
systemctl start ntpd && systemctl enable ntpd
# 6、将桥接的IPv4流量传递到iptables的链(有一些ipv4的流量不能走iptables链,因为linux内核的一个过滤器,每个流量都会经过他,然后再匹配
# 是否可进入当前应用进程去处理,所以会导致流量丢失),配置k8s.conf文件(k8s.conf文件原来不存在,需要自己创建的)
cat >> /etc/sysctl.d/k8s.conf <<EOF
net.bridge.bridge-nf-call-ip6tables=1
net.bridge.bridge-nf-call-iptables=1
net.ipv4.ip_forward=1
vm.swappiness=0
EOF
sysctl -p 

rancher的安装

rancher本身也是使用docker进行安装,所以要先安装好docker,docker的安装请参考Linux下如何安装docker详细介绍(联网、离线安装)``https://blog.csdn.net/MssGuo/article/details/122694156
rancher本质上是封装了RKE和K3S来安装k8s的。

rancher是一个开源的项目,开源的代码在https://github.com/rancher/rancher上:
在这里插入图片描述
可以看到目前最新的rancher版本是2.7.5

rancher镜像位于https://hub.docker.com/上,如下所示进入hub.docker官网搜索rancher:
在这里插入图片描述

[root@rancher ~]# docker pull rancher/rancher:v2.7.5				#拉取rancher镜像
v2.6.7-linux-amd64: Pulling from rancher/rancher
9047ed9df36f: Pull complete 
Digest: sha256:2c63e264eacc633d9d98ad30ac30bade271b66454a63446f0156191cee77aa9e
Status: Downloaded newer image for rancher/rancher:v2.6.7-linux-amd64
docker.io/rancher/rancher:v2.6.7-linux-amd64
[root@rancher ~]# docker images										#查看rancher镜像
REPOSITORY                      TAG                  IMAGE ID       CREATED                  SIZE
rancher/rancher                 v2.6.7-linux-amd64   23fa8b4529d2   Less than a second ago   1.55GB
[root@rancher ~]# 

启动rancher容器

#创建一个目录用于存放rancher的持久化数据
[root@rancher ~]# mkdir /rancher_data									
#--privileged运行特权模式,-p表示映射本机的80端口到容器的80端口,443端口到容器的443端口,-v挂载持久卷,
[root@rancher ~]# docker run -d --privileged -p 80:80 -p 443:443  -v /rancher_data:/var/lib/rancher/ --restart=unless-stopped --name rancher-v2.7.5 rancher/rancher:v2.7.5

[root@elk-client ~]# docker ps	#确认容器的CREATED时间STATUS时间基本相同就表示容器没有重启,rancher正常
CONTAINER ID   IMAGE                    COMMAND           CREATED         STATUS         PORTS                                                                      NAMES
768949c78d09   rancher/rancher:v2.7.5   "entrypoint.sh"   8 minutes ago   Up 8 minutes   0.0.0.0:80->80/tcp, :::80->80/tcp, 0.0.0.0:443->443/tcp, :::443->443/tcp   rancher-v2.7.5

网页登陆rancher

输入服务器ip地址http://192.168.244.150,默认会跳转到https的443端口,登录页面左下角有设置中文,可以设置中文,如下所示:
在这里插入图片描述

按照页面的提示,去容器里面查找rancher的登陆密码:

[root@rancher ~]# docker logs  7cf867e736fd01  2>&1 | grep "Bootstrap Password:"
2023/08/19 16:37:41 [INFO]  Bootstrap Password: q5hgkh5lgtncbm2q2tts8w6cdz45xfvpx7v5s8dk9f4c8dpbzrcr6s
[root@rancher ~]# 

复制密码进行登陆,跳转到如下页面,显示要我们要给默认账号admin设置一个登陆密码,那我们就设置一个登陆密码,密码需要有一定的复杂度,这里我就设置为admin12345678:
在这里插入图片描述

使用rancher创建一个k8s集群

既可以将已有的k8s集群加入rancher,让rancher管理,也可以使用rancher创建一个新的k8s集群,这里我们使用rancher创建一个新的k8s集群。
在这里插入图片描述
点击打开RKE2/K3S开关,我们选择使用RKE2创建k8s集群,点击自定义按钮,如下:
在这里插入图片描述
如下,填写集群名称,集群描述信息,可以看到rancher2.7.5支持的k8s版本有4个,我们选择RKE方式安装的v1.25.12+rke2r2,其他选项保持默认即可:
在这里插入图片描述
网络配置:
在这里插入图片描述
其他配置保持默认即可,最后,点击右下角的创建按钮,页面自动跳转到了集群页面,点击我们创建的k8s集群:
在这里插入图片描述
页面跳转到了这里,如下,节点角色勾选对应的角色后会生成对应的注册命令,把这串注册命令复制粘贴到k8s服务器上执行即可,这里由于我只有3台主机,所以角色规划是3台服务器都作为master、etcd、node角色:

master01 :k8s master节点,也分配node、etcd角色;
node01:k8s node节点,也分配master、etcd角色;
node02:k8s node节点,也分配master、etcd角色;

在这里插入图片描述

把注册命令复制粘贴到k8s服务器上执行,然后等待安装完成,在左侧"主机"栏可以查看:
在这里插入图片描述
等全部的节点安装完毕后,返回首页,点击集群名称即可进入集群。

创建deployment和svc

进入集群:
在这里插入图片描述
创建一个deployment:
在这里插入图片描述
在页面填写信息即可:
在这里插入图片描述

在这里插入图片描述

创建完成之后,等待deployment就绪即可:
在这里插入图片描述
创建svc,选择对应的标签选择器:
在这里插入图片描述在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

等待svc创建完成即可:
在这里插入图片描述
浏览器页面访问成功:
在这里插入图片描述

kubectl 命令行工具设置

使用rancher安装的k8s集群,服务器里面的kubectl 工具不能正常使用,如果需要在服务器执行kubectl命令的话,需要配置一下上下文:

#kubectl 配置命令自动补全
yum install -y bash-completion
echo 'source /usr/share/bash-completion/bash_completion' >> ~/.bashrc
echo 'source  <(kubectl completion bash)' >> ~/.bashrc
source ~/.bashrc

find / -name kubectl
ln -s   /var/lib/rancher/rke2/data/v1.25.12-rke2r1-15557ace5a8f/bin/kubectl /usr/bin/kubectl

返回首页,点击管理:
在这里插入图片描述
下载kubeConfig文件:
在这里插入图片描述

mkdir ${HOME}/.kube/
#把下载的kubeConfig上传到服务器,重命名
mv datacenter.yaml  /root/.kube/config
#验证正常使用 
[root@master01 ~]# kubectl  get pod 
NAME                    READY   STATUS    RESTARTS   AGE
nginx-dc9ff6bdf-xc22t   1/1     Running   0          66m 

以上就完成了rancher的安装和使用。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/87529.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Oracle给表空间添加容量

假如给SYSTEM表空间添加 查看文件位置和容量&#xff1a;Select * FROM DBA_DATA_FILES; FILE_NAME就是要修改的文件 查看每一个表空间的容量&#xff0c;单位MB&#xff1a; SELECT t.tablespace_name, round(SUM(bytes / (1024 * 1024)), 0) ts_size FROM dba_tablespaces…

基于医疗领域数据微调LLaMA——ChatDoctor模型

文章目录 ChatDoctor简介微调实战下载仓库并进入目录创建conda环境并配置环境&#xff08;安装相关依赖&#xff09;下载模型文件微调数据微调过程全量微调基于LoRA的微调基于微调后的模型推理 ChatDoctor简介 CHatDoctor论文&#xff1a; ChatDoctor: A Medical Chat Model F…

【QT5-自我学习-线程qThread练习-两种使用方式-1:通过继承线程类来使用-基础样例】

【QT5-自我学习-线程qThread练习-两种使用方式-1&#xff1a;通过继承线程类来使用-基础样例】 1、前言2、实验环境3-1、学习链接-参考文章3-2、先前了解-自我总结&#xff08;1&#xff09;线程处理逻辑事件&#xff0c;不能带有主窗口的事件&#xff08;2&#xff09;一般考虑…

FairyGUI编辑器的弹窗操作【插件】

之前在FairyGUI编辑器菜单扩展中&#xff0c;我使用了App.Alert("复制失败")来提示操作是否成功。这篇则会说一下我们可以使用的弹窗提示&#xff0c;以及做到类似资源发布成功时的“发布成功”飘窗。 打开APP的API脚本&#xff0c;可以看到有很多公开方法&#xff…

国内ChatGPT对比与最佳方案

很久没写内容了&#xff0c;主要还是工作占据了太多时间。简单分享下我这段时间的研究吧,由于时间仓促&#xff0c;有很多内容没有具体写&#xff0c;请自行到我分享的网站体验查看。 前言 ChatGPT 的出现确实在很大程度上改变了世界。许多人已经亲身体验到了ChatGPT作为一个…

TCP协议报文结构

TCP是什么 TCP&#xff08;传输控制协议&#xff09;是一种面向连接的、可靠的、全双工的传输协议。它使用头部&#xff08;Header&#xff09;和数据&#xff08;Data&#xff09;来组织数据包&#xff0c;确保数据的可靠传输和按序传递。 TCP协议报文结构 下面详细阐述TCP…

「UG/NX」Block UI 截面构建器SectionBuilder

✨博客主页何曾参静谧的博客📌文章专栏「UG/NX」BlockUI集合📚全部专栏「UG/NX」NX二次开发「UG/NX」BlockUI集合「VS」Visual Studio「QT」QT5程序设计「C/C+&#

stm32之14.超声波测距代码

-------------------- 源码 void sr04_init(void) { GPIO_InitTypeDef GPIO_InitStructure; //打开端口B的硬件时钟&#xff0c;就是供电 RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOC,ENABLE); //打开端口E的硬件时钟&#xff0c;就是供电 RC…

java八股文面试[java基础]——Object类有哪些方法

通过IDEA打开Object类就可以看到 &#xff08;1&#xff09;clone方法 保护方法&#xff0c;实现对象的浅复制&#xff0c;只有实现了Cloneable接口才可以调用该方法&#xff0c;否则抛出CloneNotSupportedException异常。 主要是JAVA里除了8种基本类型传参数是值传递&#xf…

Linux配置nginx反向代理

在云服务器上部署高并发的服务&#xff0c;使用Nginx作为反向代理是一种常见的做法&#xff0c;可以实现流量分发、负载均衡&#xff0c;同时提升系统的可靠性和性能。 步骤概览&#xff1a; 安装Nginx&#xff1a; 确保服务器已安装Nginx。若未安装&#xff0c;可使用适用于你…

stm32 无刷电机 V/F控制(无刷电机变频控制)以及与foc(矢量控制)的区别

无刷电机有三种控制方式&#xff0c;方波控制&#xff0c;foc控制以及变频控制&#xff0c;前两章我们讲解了方波和foc的控制方法&#xff0c;今天我们一起来讲一讲什么是无刷电机的变频控制&#xff08;VF&#xff09;以及变频控制的优势是什么。 实验用的硬件还是KY_Motor的无…

Eureka 的几种主动下线服务的方式

补充&#xff1a;在启动eureka服务的时候发现控制台有以下的输出 由此猜想可以通过改接口下线服务&#xff0c; 于是尝试了一下。 果然能从注册中心中移除该实例。 1. 直接停掉服务。 默认情况下&#xff0c;如果Eureka Server在90秒没有收到Eureka客户的续约&#xff0c;它…

AMBA总线协议(9)——AHB(七):终章

一、前言 在之前的文章中我们讲述了AHB协议的分割传输机制&#xff0c;它使得从机可以决定一次传输是否继续进行&#xff0c;以防止 传输的执行将占据大量的时钟周期&#xff0c;有效提高了总线的公平性与效率问题&#xff0c;本文中我们将一次性学习完AHB最后的内容&#xff0…

mysql 8.0 窗口函数 之 分布函数 与 sql server (2017以后支持) 分布函数 一样

mysql 分布函数 percent_rank&#xff08;&#xff09; &#xff1a;等级值 百分比cume_dist() &#xff1a;累积分布值 percent_rank&#xff08;&#xff09; 计算方式 (rank-1)/(rows-1)&#xff0c; 其中 rank 的值为使用RANK()函数产生的序号&#xff0c;rows 的值为当前…

测试框架pytest教程(9)跳过测试skip和xfail

skip无条件跳过 使用装饰器 pytest.mark.skip(reason"no way of currently testing this") def test_example(faker):print("nihao")print(faker.words()) 方法内部调用 满足条件时跳过 def test_example():a1if a>0:pytest.skip("unsupported …

单片机的ADC

如何理解ADC。ADC就是将模拟量转换成数字量的过程&#xff0c;就是转换为计算机所能存储的0和1序列&#xff0c;比如将模拟量转换为一个字节&#xff0c;所以这个字节的大小要能反应模拟量的大小&#xff0c;比如一个0-5V的电压测量量&#xff08;外部输入电压最小0V,最大为5V&…

MyBatis动态SQL、模糊查询与结果映射

目录 前言 一、MyBatis动态SQL 1.动态SQL是什么 2.动态SQL的作用 3.常用动态SQL元素 1. where if 元素 2. set if 元素 3. choose when otherwise 元素 4. 自定义 trim 元素 <1>. 自定义 trim 元素改写上面的 where if 语句 <2>. 自定义 trim 元素改…

2023前端求职经历回顾及面试题总结

文章目录 前言一、求职经历二、前端面经1. 投简历的正确打开方式2. 面经及面试题复盘外企面经、面试题大厂面经、面试题面试中的笔试有三种笔试题 给同行的温馨提示我的其他热门文章 前言 2023 年的春节之前&#xff0c;几乎没有公司招人&#xff0c;直到 2023年2月10日 左右&a…

【ARM AMBA AXI 入门 10 - AXI 总线 DATA信号与 STRB 信号之间的关系 】

文章目录 AXI STRB 信号 AXI STRB 信号 AXI总线是ARM公司设计的高性能处理器接口&#xff0c;其中STRB和DATA信号在AXI协议中有特殊的含义和关系。 DATA信号&#xff1a;在AXI中&#xff0c;DATA信号用于在读写操作中传输实际的数据。数据的大小可以根据AXI接口的位宽来变化&…

【深度强化学习】Python:OpenAI Gym-CarRacing 自动驾驶 | 提供项目完整代码 | 车道检测功能 | 路径训练功能 | 车辆控制功能

💭 写在前面:本篇是关于 OpenAI Gym-CarRacing 自动驾驶项目的博客,面向掌握 Python 并有一定的深度强化学习基础的读者。GYM-Box2D CarRacing 是一种在 OpenAI Gym 平台上开发和比较强化学习算法的模拟环境。它是流行的 Box2D 物理引擎的一个版本,经过修改以支持模拟汽车…