基于Rancher实现kubernetes集群管理
1.Rancher介绍
Rancher可以通过图形化操作的方式管理kubernetes集群
Rancher 是为使用容器的公司打造的容器管理平台。Rancher 简化了使用 Kubernetes 的流程,开发者可以随处运行 Kubernetes(Run Kubernetes Everywhere),满足 IT 需求规范,赋能 DevOps 团队。
Kubernetes 已经成为了容器管理的标准。大多数云服务和虚拟服务的提供商现在将 Kubernetes 作为标准的基础设施。用户可以使用 Rancher Kubernetes Engine(简称 RKE),或其他云服务提供商的容器服务,如 GKE、AKS、 EKS 等,创建 Kubernetes 集群。用户也可以将已有集群导入 Rancher,集中管理。
Rancher架构
![请添加图片描述](https://img-blog.csdnimg.cn/a0e093256f3c43d09cbf2fddb3340e21.png?x-oss-process=image/watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBAbGxsbHloODEy,size_20,color_FFFFFF,t_70,g_se,x_16)
2.Rancher部署
主机准备
主机名 |
资源 |
操作系统 |
主机IP |
rancher |
Vcpu_4个 - Mem_8G - Disk_100G |
CentOS8u2 |
172.20.251.129 |
node1 |
Vcpu_4个 - Mem_8G - Disk_100G |
CentOS8u2 |
172.20.251.115 |
node2 |
Vcpu_4个 - Mem_8G - Disk_100G |
CentOS8u2 |
172.20.251.105 |
以下操作需在所有主机执行
[root@rancher ~]# hostnamectl set-hostname xxx
# 主机名
[root@rancher ~]# cat >> /etc/hosts << EOF
> 172.20.251.129 rancher
> 172.20.251.115 node1
> 172.20.251.105 node2
> EOF
# 主机名解析
[root@rancher ~]# dnf -y install vim bash-completion
[root@rancher ~]# source /etc/profile.d/bash_completion.sh
# 安装小工具
[root@rancher ~]# systemctl stop firewalld && systemctl disable firewalld
[root@rancher ~]# setenforce 0
[root@rancher ~]# sed -ri "s/SELINUX=enforcing/SELINUX=disabled/g" /etc/selinux/config
# 关闭防火墙及selinux
[root@rancher ~]# dnf -y install chrony
[root@rancher ~]# timedatectl set-timezone "Asia/Shanghai"
[root@rancher ~]# systemctl restart chronyd && systemctl enable chronyd
# 时间同步
[root@rancher ~]# cat >> /etc/sysctl.conf <<EOF
> net.ipv4.ip_forward=1
> net.bridge.bridge-nf-call-iptables=1
> net.ipv4.neigh.default.gc_thresh1=4096
> net.ipv4.neigh.default.gc_thresh2=6144
> net.ipv4.neigh.default.gc_thresh3=8192
> EOF
# 开启路由转发,性能调优
[root@rancher ~]# cat >> /etc/sysconfig/modules/load.mod <<EOF
> #!/bin/bash
> mods=(
> br_netfilter
> ip6_udp_tunnel
> ip_set
> ip_set_hash_ip
> ip_set_hash_net
> iptable_filter
> iptable_nat
> iptable_mangle
> iptable_raw
> nf_conntrack_netlink
> nf_conntrack
> nf_conntrack_ipv4
> nf_defrag_ipv4
> nf_nat
> nf_nat_ipv4
> nf_nat_masquerade_ipv4
> nfnetlink
> udp_tunnel
> VETH
> VXLAN
> x_tables
> xt_addrtype
> xt_conntrack
> xt_comment
> xt_mark
> xt_multiport
> xt_nat
> xt_recent
> xt_set
> xt_statistic
> xt_tcpudp
> )
> for mod in ${mods[@]};do
> modprobe $mod
> lsmod |grep $mod
> done
> EOF
# 创建加载模块脚本
[root@rancher ~]# chmod +x /etc/sysconfig/modules/load.mod
# 为脚本添加执行权限
[root@rancher ~]# source /etc/sysconfig/modules/load.mod
[root@rancher ~]# sysctl -p
net.ipv4.ip_forward = 1
sysctl: cannot stat /proc/sys/net/bridge/bridge-nf-call-iptables: No such file or directory
net.ipv4.neigh.default.gc_thresh1 = 4096
net.ipv4.neigh.default.gc_thresh2 = 6144
net.ipv4.neigh.default.gc_thresh3 = 8192
# 执行脚本,生效配置
[root@rancher ~]# sudo yum install -y yum-utils
# 安装yum-utils工具
[root@rancher ~]# sudo yum-config-manager \
> --add-repo \
> https://download.docker.com/linux/centos/docker-ce.repo
Adding repo from: https://download.docker.com/linux/centos/docker-ce.repo
# 增加docker-ce的yum源
[root@rancher ~]# sudo yum-config-manager --enable docker-ce-nightly
[root@rancher ~]# sudo yum-config-manager --enable docker-ce-test
# 可选
[root@rancher ~]# sudo yum -y install docker-ce docker-ce-cli containerd.io
# 安装docker-ce
[root@rancher ~]# mkdir -p /etc/docker
[root@rancher ~]# cat >> /etc/docker/daemon.json <<EOF
> {
> "registry-mirrors": ["https://32yzbld0.mirror.aliyuncs.com"]
> }
> EOF
# 配置镜像加速器
[root@rancher ~]# systemctl daemon-reload
# 重新加载配置文件
[root@rancher ~]# systemctl restart docker && systemctl enable docker
Created symlink /etc/systemd/system/multi-user.target.wants/docker.service → /usr/lib/systemd/system/docker.service.
# 重启docker并设置开机自启
启动Rancher(rancher节点操作)
[root@rancher ~]# docker run -d --restart=unless-stopped -p 80:80 -p 443:443 --name rancher --privileged -v /var/lib/rancher/:/var/lib/rancher/ rancher/rancher:stable
...
32b1c3e4c3f81e3ba3063981d84dde599f3b518d4cd241e73c97a253e246a50c
# 运行Rancher容器
网页访问rancher(172.20.251.151)
![请添加图片描述](https://img-blog.csdnimg.cn/8e6fdd66a1344fdd94d827c10291f29f.png?x-oss-process=image/watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBAbGxsbHloODEy,size_20,color_FFFFFF,t_70,g_se,x_16)
点击高级
![请添加图片描述](https://img-blog.csdnimg.cn/551128042a8c4f049d9cd8e9e831918f.png?x-oss-process=image/watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBAbGxsbHloODEy,size_20,color_FFFFFF,t_70,g_se,x_16)
点击继续前往
![请添加图片描述](https://img-blog.csdnimg.cn/62af99a348504e90aa0d8e9c7ec9812f.png?x-oss-process=image/watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBAbGxsbHloODEy,size_20,color_FFFFFF,t_70,g_se,x_16)
[root@rancher ~]# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
32b1c3e4c3f8 rancher/rancher:stable "entrypoint.sh" 3 minutes ago Up About a minute 0.0.0.0:80->80/tcp, :::80->80/tcp, 0.0.0.0:443->443/tcp, :::443->443/tcp rancher
# 查看当前运行的容器
[root@rancher ~]# docker logs 32 2>&1 | grep "Bootstrap Password:"
2022/04/26 01:29:22 [INFO] Bootstrap Password: gg8bp9fhpj764nksbpdcl8q8fjhs8qnkrwzfnjktf7w22wcm4nt4qx
# 获取密码
粘贴上去
![请添加图片描述](https://img-blog.csdnimg.cn/d5cab8d8705247c8acecbaee05351485.png)
点击Log in with Local User
![请添加图片描述](https://img-blog.csdnimg.cn/d88f0fd3e04740328ef85d13bc554736.png?x-oss-process=image/watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBAbGxsbHloODEy,size_20,color_FFFFFF,t_70,g_se,x_16)
选择自己设置密码,注意不能少于12位,完成之后勾选下面我同意选项,点击continue
![请添加图片描述](https://img-blog.csdnimg.cn/01830507b6fc4126b7703664da8c2176.png?x-oss-process=image/watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBAbGxsbHloODEy,size_20,color_FFFFFF,t_70,g_se,x_16)
成功进入Rancher
添加kubernetes集群
![请添加图片描述](https://img-blog.csdnimg.cn/b8aa72d1efb846f0bb5bd303063cdee2.png?x-oss-process=image/watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBAbGxsbHloODEy,size_20,color_FFFFFF,t_70,g_se,x_16)
下滑主界面找到Create,点击
![请添加图片描述](https://img-blog.csdnimg.cn/5afc7a24ee2e42ce90e94e5ed53870a5.png?x-oss-process=image/watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBAbGxsbHloODEy,size_20,color_FFFFFF,t_70,g_se,x_16)
选择Custom
![请添加图片描述](https://img-blog.csdnimg.cn/6ba6ff862a77428f84d236f52aa80605.png?x-oss-process=image/watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBAbGxsbHloODEy,size_20,color_FFFFFF,t_70,g_se,x_16)
输完名字后下滑找到next点击
![请添加图片描述](https://img-blog.csdnimg.cn/ad63b2f46d2340afbe9603fb9e6cb6ea.png?x-oss-process=image/watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBAbGxsbHloODEy,size_20,color_FFFFFF,t_70,g_se,x_16)
![请添加图片描述](https://img-blog.csdnimg.cn/141da7dbf65c4dc78c65ac59b87075fa.png?x-oss-process=image/watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBAbGxsbHloODEy,size_20,color_FFFFFF,t_70,g_se,x_16)
勾选etcd和Control Plane,复制下面一段代码在node1和node2执行
[root@node1 ~]# sudo docker run -d --privileged --restart=unless-stopped --net=host -v /etc/kubernetes:/etc/kubernetes -v /var/run:/var/run rancher/rancher-agent:v2.6.3 --server https://172.20.251.151 --token m77q9mjhbwnzqts2h7trmvlvbw8z4lfh9989xblnwgqmmhbzpzvq2z --ca-checksum d3d846fe2e185247d2f066b623b6ef8f1f3b72b9e46177fa96473fb45ac54e31 --etcd --controlplane --worker
...
2b4fe0e6f4e255deefc3108ea7e302038c9094389928a81b837b9a4b5a26ef98
[root@node2 ~]# sudo docker run -d --privileged --restart=unless-stopped --net=host -v /etc/kubernetes:/etc/kubernetes -v /var/run:/var/run rancher/rancher-agent:v2.6.3 --server https://172.20.251.151 --token m77q9mjhbwnzqts2h7trmvlvbw8z4lfh9989xblnwgqmmhbzpzvq2z --ca-checksum d3d846fe2e185247d2f066b623b6ef8f1f3b72b9e46177fa96473fb45ac54e31 --etcd --controlplane --worker
...
defab1ca0668b7863e05a3617720072c154d8f384780781c5bf2009977b85665
![请添加图片描述](https://img-blog.csdnimg.cn/b60560d453564c0f8cf6915ce9088630.png?x-oss-process=image/watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBAbGxsbHloODEy,size_20,color_FFFFFF,t_70,g_se,x_16)
当两个节点都执行完毕下方就会出现提示,这时点击Done即可![请添加图片描述](https://img-blog.csdnimg.cn/7ca9b11cfb254d71b8ab954b51f5f427.png?x-oss-process=image/watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBAbGxsbHloODEy,size_20,color_FFFFFF,t_70,g_se,x_16)
可以看到node1和node2节点均为Active状态
3.Rancher简单操作
![请添加图片描述](https://img-blog.csdnimg.cn/eceff672e5994ce4ad7ffb8967452227.png)
设置简体中文
部署一个Deployments类型的工作负载
![请添加图片描述](https://img-blog.csdnimg.cn/cc44646a8a384f1280d651f60c219307.png)
点击进入test集群
![请添加图片描述](https://img-blog.csdnimg.cn/48c564c625244b43a0a89f4bc0f5721f.png)
点击工作负载,选择Deployments
![请添加图片描述](https://img-blog.csdnimg.cn/0c2049ad6b914d27bf15b172ffe7c9a6.png)
创建Deployments
![请添加图片描述](https://img-blog.csdnimg.cn/34503c1a3f1c452ea22bf6508b63719f.png)
自定义Deployment,添加端口映射,下滑点击创建
![请添加图片描述](https://img-blog.csdnimg.cn/cb85dd62c4eb4e9d9b3947478afbbce7.png)
等待一会,发现均为Ready,成功