前言
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的安装和使用。