Rancher Server + Kubernets搭建云原生集群平台

发布于:2025-07-03 ⋅ 阅读:(25) ⋅ 点赞:(0)

目录

Rancher Server + Kubernets搭建云原生集群平台

Rancher 是一款开源的企业级容器管理平台,专注于简化 Kubernetes 集群的部署、运维及多环境管理,助力企业在混合云、多云及边缘计算场景中实现高效容器化应用交付。

Rancher 凭借图形化界面、跨平台兼容性及开箱即用的监控/日志功能,大幅降低了 Kubernetes 的使用门槛。其开源特性允许企业深度定制,而活跃的社区生态则持续提供功能迭代与问题支持。对于需要统一管理复杂容器环境的企业,Rancher 是实现高效运维与数字化转型的理想选择。

【Rancher官方文档】

一、环境准备

1、软件准备

序号 环境名称 说明 版本号
1 Rancher Server k8s运维平台 v2.5.7

2、环境规划

序号 IP HostName 操作系统 K8s角色 说明
1 192.168.255.141 rancher Anolis OS 8.9 x86 64位 Rancher服务 Kubernetes 管理平台
2 192.168.255.142 master Anolis OS 8.9 x86 64位 控制节点 Kubernetes Master
3 192.168.255.143 worker01 Anolis OS 8.9 x86 64位 工作节点 Kubernetes Master高可用节点,如果不需要高可用,可不部署此服务器
4 192.168.255.144 worker02 Anolis OS 8.9 x86 64位 工作节点 Kubernetes Worker

3、挂载数据盘

** 注意: **

  • 1、该步骤不是必须的,如果需要将【系统盘】与【数据盘】进行分离,并且【数据盘】是独立的一块磁盘的话,是需要执行该步骤进行挂载到系统中的;(非必要执行)
  • 2、下面的命令需要在 [192.168.255.141][192.168.255.142][192.168.255.143][192.168.255.144] 4台服务器上都执行

(1)、分区
对新磁盘【/dev/sdb】(根据lsblk命令输出得知新磁盘目录的)进行执行分区

[root@localhost ~]# lsblk
[root@localhost ~]# df -h
[root@localhost ~]# fdisk /dev/sdb

输入命令符

n # 创建新分区
p # 选择主分区
# 选择分区号(如果提示)
# 指定起始位置
# 指定分区大小
w # 保存并退出fdisk

(2)、格式化
对新磁盘【/dev/sdb1】(根据lsblk命令输出得知新磁盘目录的)进行执行格式化

[root@localhost ~]# mkfs.ext4 /dev/sdb1
[root@localhost ~]# mkdir /data

在这里插入图片描述

(3)、挂载
临时挂载,立即生效,但是系统重启后会失效,重启系统后需要重新执行命令或【永久挂载】方式修改配置文件

[root@localhost ~]# mount /dev/sdb1 /data

永久挂载,系统每次重启后会读取配置文件/etc/fstab中的配置

[root@localhost ~]# vim /etc/fstab

/dev/sdb1 /data ext4 defaults 0 2

二、虚拟机初始化基础配置(所有节点都需要操作)

1、执行时间服务器脚本(包括配置hostName主机名)

(1)、创建init文件夹

[root@rancher ~]# mkdir init
[root@rancher ~]# cd init

(2)、创建文件传输,上传后,为文件添加执行权限后执行

[root@rancher init]# vim init.sh

init.sh文件内容

#配置主机名和host文件
 
echo "正在配置你的主机名..."
 
echo
        read -p "请输入你的主机名:" host 
 
        hostname(){
                hostnamectl set-hostname $host
        }
        hostname host && echo -e "主机名设置成功!!"
 
#echo "正在配置你的hosts文件..."
#        ip=$(ip a | grep ens33 |grep inet |awk '{print $2}' | awk -F"/" '{print $1}')
#       echo "$ip $host" >> /etc/hosts
#        echo  "hosts配置完成!!!"

# 防火墙设置
 
echo "关闭防火墙和selinux中...."
 
echo
        systemctl stop firewalld && systemctl disable firewalld &> /dev/null && setenforce 0 &&  sed -i '/^SELINUX/s/enforcing/disabled/' /etc/selinux/config
 
        if [ $? -eq 0 ];then
                echo "防火墙和selinux已经成功关闭....."
        else
                echo "防火墙和selnux关闭失败,请手动关闭!!!"
        fi
echo
 
#外网检测
echo "正在检测网络是否能上外网......"
 
echo
 
        ping -c 2 www.baidu.com &> /dev/null
 
        if [ $? -eq 0 ];then
                echo "网络正常"
        else
                echo "网络不可达!"
        fi
echo
 
# 配置yum源-这里选用阿里源
#echo
#	echo "修改为国内yum源"
#	mkdir /etc/yum.repos.d/bak
#	mv /etc/yum.repos.d/* /etc/yum.repos.d/bak
#	wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo
#	wget -O /etc/yum.repos.d/epel.repo http://mirrors.aliyun.com/repo/epel-7.repo
#	yum clean all && yum makecache 
 

# 修改时区
        echo "修改时区中......"
        timedatectl set-timezone Asia/Shanghai
        ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime
        echo "修改时区成功......"


# 时间同步
echo
        echo "时间同步中……"
        yum install -y ntpdate &> /dev/null
        ntpdate 172.26.251.1 &> /dev/null
        file=$(who | head -1 | cut -d" " -f1)
        echo "* */1 * * * /usr/sbin/ntpdate  172.26.251.1" > /var/spool/cron/$file
        if [ $? -eq 0 ];then
                echo "时间同步成功!!!"
                echo "unset MAILCHECK" >> /etc/profile
                source /etc/profile &> /dev/null
        else
                echo "时间同步失败!!!"
        fi
# 修改字符编码
echo
	echo "修改字符编码中……"
	echo 'LANG="en_US.UTF-8"' > /etc/locale.conf
	echo "修改字符成功......"


	echo "----配置ssh禁用反向解析----"
	echo 'UseDNS=no' >> /etc/ssh/sshd_config
 
	echo "----允许通过密码ssh远程登录----"
	echo 'PermitRootLogin yes' >> /etc/ssh/sshd_config
	systemctl restart sshd
 
	echo "----设置ssh,20分钟登录无操作自动退出,服务器每120秒心跳包测试客户端,三次不成功断开----"
	echo 'export TMOUT=1200' >> /etc/profile
	source /etc/profile

	echo "----查看历史操作记录,并加时间戳----"
	echo 'export HISTTIMEFORMAT="%F %T `whoami` "' >> /etc/profile
	source /etc/profile

#内核优化
echo "----内核优化----"
grep 'net.ipv6.conf.all.disable_ipv6' /etc/sysctl.conf  > /dev/null 2>&1
if [ $? -ne 0 ];then
# 关闭ipv6
	echo 'net.ipv6.conf.all.disable_ipv6 = 1' >> /etc/sysctl.conf
	echo 'net.ipv6.conf.default.disable_ipv6 = 1' >> /etc/sysctl.conf

#允许系统打开的端口范围,不建议从1024开始,因为某些端口会存在10000以内。一般情况下已够用。
	echo 'net.ipv4.ip_local_port_range = 10000    65000' >> /etc/sysctl.conf

	echo 'net.core.somaxconn = 32768 >> /etc/sysctl.conf'
fi

在这里插入图片描述

(3)、执行初始化

#为文件添加执行权限
[root@rancher init]# chmod +x ./init.sh 
[root@rancher init]# ./init.sh 

正在配置你的主机名...

请输入你的主机名:

在这里插入图片描述

(4)、执行完后重启系统

[root@rancher init]# reboot

2、配置hosts文件

[root@rancher ~]# vim /etc/hosts

打开hosts文件点击键盘i进行插入,下面配置copy到hosts

192.168.255.141 rancher
192.168.255.142 master
192.168.255.143 worker01
192.168.255.144 worker02

在这里插入图片描述

3、配置各节点免密登录

#rancher
#生成ssh密钥
[root@rancher init]# ssh-keygen

输入后 敲击3下enter键盘 即可生成成功
在这里插入图片描述

访问连接各节点ssh

#复制密钥到其他节点(每个节点都要执行)
[root@rancher]#  ssh-copy-id root@rancher
[root@rancher]#  ssh-copy-id root@master
[root@rancher]#  ssh-copy-id root@worker01
[root@rancher]#  ssh-copy-id root@worker02

三、在每个节点安装docker

1、配置docker-ce国内yum源(阿里云)

yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo

在这里插入图片描述

2、安装docker依赖包

yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo

在这里插入图片描述

3、安装docker-ce

 yum install docker-ce -y

在这里插入图片描述

** 备注:**

  • 如果出现 【try to add ‘–allowerasing’ to command line to replace conflicting packages or ‘–skip-broken’ to skip uninstallable packages or ‘–nobest’ to use not only best candidate packages】,则执行下面命令
yum install docker-ce -y --allowerasing

在这里插入图片描述

4、启动docker服务并设置开机自启

systemctl start docker && systemctl enable docker

5、查看docker运行状态

systemctl status docker

在这里插入图片描述

6、查看docker版本信息

docker version

7、开启包转发功能和修改内核参数

modprobe br_netfilter
cat > /etc/sysctl.d/docker.conf <<EOF
net.bridge.bridge-nf-call-ip6tables = 1
net.bridge.bridge-nf-call-iptables = 1
net.ipv4.ip_forward = 1
EOF

8、加载并应用 /etc/sysctl.d/docker.conf 文件中的配置

sysctl -p /etc/sysctl.d/docker.conf

在这里插入图片描述

9、配置阿里云镜像

创建 /etc/docker 目录

sudo mkdir -p /etc/docker

创建docker镜像配置文件

sudo tee /etc/docker/daemon.json <<-'EOF'
 {
 "registry-mirrors": [

    "https://ox288s4f.mirror.aliyuncs.com",
    "https://registry.docker-cn.com",
    "http://hub-mirror.c.163.com",
    "https://mirror.ccs.tencentyun.com",
    "https://docker.hpcloud.cloud",
	"https://docker.m.daocloud.io",
	"https://docker.unsee.tech",
	"https://docker.1panel.live",
	"http://mirrors.ustc.edu.cn",
	"https://docker.chenby.cn",
	"http://mirror.azure.cn",
	"https://dockerpu11.org",
	"https://dockerhub.icu",
	"https://hub.rat.dev",
	"https://proxy.1panel.live",
	"https://docker.1panel.top",
	"https://docker.m.daocloud.io",
	"https://docker.1ms.run",
	"https://docker.ketches.cn"
 ]
}
EOF

10、重启docker

立即生效

sudo systemctl daemon-reload

重启docker

sudo systemctl restart docker

四、部署rancher

1、在rancher节点下载rancher镜像

[root@rancher ~]# docker pull rancher/rancher:v2.5.7

在这里插入图片描述

2、通过docker运行rancher服务器的容器

命令描述

-d: 在后台(detached mode)运行容器,即使终端关闭也保持运行。

--restart=unless-stopped: 容器退出时,除非明确停止,否则会自动重启。这个选项确保 Rancher 服务在意外关闭后能够自动恢复运行。

-p 80:80 -p 443:443: 将容器内部的端口映射到宿主机上,使得宿主机的 80 端口和 443 端口可以访问 Rancher 服务器提供的服务。例如,可以通过 `http://宿主机IP``https://宿主机IP` 访问 Rancher Web UI。

--privileged: 赋予容器全部的 Linux capabilities,这在某些情况下可能是必要的,例如需要访问设备或执行特权操作时。

--name rancher: 指定容器的名称为 `rancher`,这样可以通过该名称管理和操作这个容器。

rancher/rancher:v2.5.7: 指定要运行的 Docker 镜像,这里是 Rancher 服务器的镜像版本为 `v2.5.7`

(1)、创建rancher数据挂载文件夹

mkdir -p /data/d/rancher/data

(2)、启动rancher容器

[root@rancher ~]# docker run -d --restart=always -p 80:80 -p 443:443 -v /etc/localtime:/etc/localtime -v /etc/timezone:/etc/timezone -v /data/d/rancher/data:/var/lib/rancher --privileged=true --user=root --name rancher rancher/rancher:v2.5.7

(3)、查看rancher容器信息

docker ps -a|grep rancher

在这里插入图片描述

五、登录Rancher平台

1、再浏览器访问Rancher节点IP ,由于未使用授信证书,会有报警,忽略即可

2、设置密码

在这里插入图片描述

3、至此Rancher安装完成

在这里插入图片描述

4、登录后可点击右下角语言选项选择中文

在这里插入图片描述

5、设置Rancher默认镜像仓库

把系统设置里面的 ”system-default-registry” value设置为

registry.cn-hangzhou.aliyuncs.com

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

六、创建集群

1、点击全局选择添加集群

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

2、填写集群名称,选择kubernetes版本点击保存

在这里插入图片描述

3、勾选Etcd、control,复制此命令,在每个master节点执行命令

在这里插入图片描述

sudo docker run -d --privileged --restart=unless-stopped --net=host -v /etc/kubernetes:/etc/kubernetes -v /var/run:/var/run  registry.cn-hangzhou.aliyuncs.com/rancher/rancher-agent:v2.5.7 --server https://192.168.255.141 --token ndkzstpnht7z5lvftkhmbc7wvgsgrxlq6s2r64ttqk9gxjgrnmjp75 --ca-checksum b5cb4d97b8be287df94db3736d7b7b58f8b2cfcb2758d91fb06c78afbf7b5bcd --etcd --controlplane

4、勾选worker复制此命令在每个worker节点执行命令

在这里插入图片描述

sudo docker run -d --privileged --restart=unless-stopped --net=host -v /etc/kubernetes:/etc/kubernetes -v /var/run:/var/run  registry.cn-hangzhou.aliyuncs.com/rancher/rancher-agent:v2.5.7 --server https://192.168.255.141 --token ndkzstpnht7z5lvftkhmbc7wvgsgrxlq6s2r64ttqk9gxjgrnmjp75 --ca-checksum b5cb4d97b8be287df94db3736d7b7b58f8b2cfcb2758d91fb06c78afbf7b5bcd --worker

备注:

  • worker命令在主机worker01和worker02上执行

5、等待服务安装完成

此过程将耗时较长时间(拉取镜像时间较长),本文3台节点初始化完成用了近3个小时

在这里插入图片描述

点击主机查看监控

在这里插入图片描述

七、部署nginx服务

1、配置nginx点击进入集群tyzwkj-cloud选择Default

在这里插入图片描述

(1)、点击部署服务
在这里插入图片描述
(2)、拉取nginx镜像,填写配置;点击启动
在这里插入图片描述

(3)、等待nginx启动
在这里插入图片描述
在这里插入图片描述

2、配置负载均衡

(1)、进入【负载均衡】画面
在这里插入图片描述

(2)、新增ingress映射,点击保存
在这里插入图片描述
(3)、设置完成后会生成一个域名
在这里插入图片描述
(4)、验证nginx服务
在这里插入图片描述

点击nginx-ingress地址(上图中80/http)

在这里插入图片描述

备注:


如果点击nginx-ingress地址无法解析域名时,需要修改一下本地hosts文件,将xip.io域名解析到master节点ip

  • 本例中master节点的ip是192.168.255.142,下面是在hosts文件中添加的配置
192.168.255.142 xip.io

(5)、验证负载均衡

点击上图nginx进入点击pods查看日志

【第一步】进入第一个nginx容器,查看第一个nginx容器的日志

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

【第二步】进入第二个nginx容器画面,查看第一个nginx容器的日志

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

【第三步】每访问一次

在这里插入图片描述

八、kubectl 命令行工具设置

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

(1)、 kubectl 配置命令自动补全

yum install -y bash-completion
echo 'source /usr/share/bash-completion/bash_completion' >> ~/.bashrc
echo 'source  <(kubectl completion bash)' >> ~/.bashrc
source ~/.bashrc

(2)、搜索根目录文件名为 kubectl 的文件或目录是否存在,不存在则自己创建

find / -name kubectl
mkdir kubectl

(3)、查看/var/lib/rancher/下的文件获取要创建链接的源文件或目录

cd /var/lib/rancher/
执行下面命令查看是否可以获取到pod列表
v1.25.12-rke2r1-15557ace5a8f/bin/kubectl get pod -A

(4)、然后替换掉v1.25.12-rke2r1-15557ace5a8f/bin/kubectl换成自己的版本;执行然后执行下面软链接的命令
/usr/bin/kubectl为目标路径,来访问实际的 kubectl 可执行文件

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

2、从rancher页面获取Kubectl工具连接k8s集群所需的配置文件kubeconfig,如下图所示

在这里插入图片描述

(1)、创建目录

mkdir ${HOME}/.kube/

(2)、把下载的kubeConfig上传到服务器.重命名为config放到 ${HOME}/.kube/目录下
查看安装的版本

kubectl version

九、监控配置

在这里插入图片描述

1、进入监控配置画面

在这里插入图片描述

2、启用监控

点击【启用监控】按钮
在这里插入图片描述

3、部署监控服务

进入【集群】->System画面后,会发现新增了加【cattle-prometheus】命名空间及相关服务,这就是监控服务,只需等待一段时间就会自动部署好

在这里插入图片描述

4、验证

待上一步【cattle-prometheus】命名空间下的所有服务全部部署完成并状态为【Active】后,即可进入【集群】画面后,会看到下图所示的监控面板

在这里插入图片描述

点击上图Grafana按钮就会进入对应监控画面,如下图所示

在这里插入图片描述

十、重新安装

说明:
执行重复安装,需要清除所有记录再执行安装

docker stop $(docker ps -aq)

docker system prune -f

docker volume rm $(docker volume ls -q)

docker image rm $(docker image ls -q)

rm -rf /etc/ceph \

   /etc/cni \

   /etc/kubernetes \

   /opt/cni \

   /opt/rke \

   /run/secrets/kubernetes.io \

   /run/calico \

   /run/flannel \

   /var/lib/calico \

   /var/lib/etcd \

   /var/lib/cni \

   /var/lib/kubelet \

   /var/lib/rancher/rke/log \

   /var/log/containers \

   /var/log/pods \

   /var/run/calico

结束,以上就是通过RancherServer搭建k8s的全部内容。


网站公告

今日签到

点亮在社区的每一天
去签到