基于Rancher实现kubernetes集群管理

  • 1.Rancher介绍
  • 2.Rancher部署
  • 添加kubernetes集群
  • 3.Rancher简单操作


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架构

为啥加入rancher集群的命令是curl而不是docker rancher管理现有集群_docker

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)

为啥加入rancher集群的命令是curl而不是docker rancher管理现有集群_docker_02


点击高级

为啥加入rancher集群的命令是curl而不是docker rancher管理现有集群_linux_03


点击继续前往

为啥加入rancher集群的命令是curl而不是docker rancher管理现有集群_linux_04

[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
# 获取密码

粘贴上去

为啥加入rancher集群的命令是curl而不是docker rancher管理现有集群_主机名_05


点击Log in with Local User

为啥加入rancher集群的命令是curl而不是docker rancher管理现有集群_主机名_06


选择自己设置密码,注意不能少于12位,完成之后勾选下面我同意选项,点击continue

为啥加入rancher集群的命令是curl而不是docker rancher管理现有集群_主机名_07


成功进入Rancher

添加kubernetes集群

为啥加入rancher集群的命令是curl而不是docker rancher管理现有集群_主机名_08


下滑主界面找到Create,点击

为啥加入rancher集群的命令是curl而不是docker rancher管理现有集群_主机名_09


选择Custom

为啥加入rancher集群的命令是curl而不是docker rancher管理现有集群_docker_10


输完名字后下滑找到next点击

为啥加入rancher集群的命令是curl而不是docker rancher管理现有集群_docker_11


为啥加入rancher集群的命令是curl而不是docker rancher管理现有集群_linux_12


勾选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

为啥加入rancher集群的命令是curl而不是docker rancher管理现有集群_linux_13


当两个节点都执行完毕下方就会出现提示,这时点击Done即可

为啥加入rancher集群的命令是curl而不是docker rancher管理现有集群_主机名_14


可以看到node1和node2节点均为Active状态

3.Rancher简单操作

为啥加入rancher集群的命令是curl而不是docker rancher管理现有集群_docker_15


设置简体中文部署一个Deployments类型的工作负载

为啥加入rancher集群的命令是curl而不是docker rancher管理现有集群_docker_16


点击进入test集群

为啥加入rancher集群的命令是curl而不是docker rancher管理现有集群_linux_17


点击工作负载,选择Deployments

为啥加入rancher集群的命令是curl而不是docker rancher管理现有集群_linux_18


创建Deployments

为啥加入rancher集群的命令是curl而不是docker rancher管理现有集群_linux_19


自定义Deployment,添加端口映射,下滑点击创建

为啥加入rancher集群的命令是curl而不是docker rancher管理现有集群_linux_20


等待一会,发现均为Ready,成功