Rancher集群搭建

news/2024/7/7 20:36:23

前言

随着容器的普及和Kubernetes 的日渐成熟,企业内部运行多个Kubernetes 集群已变得颇为常见,然而部署kubernetes集群的方式也多样化,二进制部署、rancher、kubeadm、minikube等。然而本篇文章主要讲解的是如何使用rancher快速部署一个k8s集群。Rancher是一个开源的企业级容器管理平台。通过Rancher,我们不必再使用一系列的开源软件去从头搭建容器服务平台。Rancher提供了在生产环境中使用的管理Docker和Kubernetes的全栈化容器部署与管理平台。

 机器清单:

主机名IP地址版本备注
rancher-master192.168.56.201CentOS Linux release 7.9.2009 (Core)部署rancher和k8s集群管理节点
worker-node01192.168.56.202CentOS Linux release 7.9.2009 (Core)部署worker节点
worker-node02192.168.56.203CentOS Linux release 7.9.2009 (Core)部署worker节点

环境初始化(以下三台服务器都需要执行)

  • 修改 /etc/sysctl.conf,将桥接的IPv4流量传递到iptables的链。
# vim /etc/sysctl.conf
cat > /etc/sysctl.conf << EFO
net.ipv4.ip_forward = 1
net.bridge.bridge-nf-call-ip6tables = 1
net.bridge.bridge-nf-call-iptables = 1
EFO

生效
sysctl -p /etc/sysctl.conf
  • 关闭防火墙关闭swap
# 关闭防火墙
systemctl stop firewalld && systemctl disable firewalld

# 关闭selinux

sed -i 's/enforcing/disabled/' /etc/selinux/config && setenforce 0  # 永久
看/etc/selinux/config文件中SELINUX=disabled 即可

## 关闭swap
swapoff -a && sed -ri 's/.*swap.*/#&/' /etc/fstab
  • 时间同步
# 时间同步
yum install ntpdate -y
ntpdate time.windows.com

修改主机名

三台服务器分别执行:
hostnamectl set-hostname rancher-master
hostnamectl set-hostname worker-node01
hostnamectl set-hostname worker-node02

重启

reboot

docker容器安装

此部分跳过,参考之前文档。

安装rancher

下载并启动rancher

docker run -d --restart=unless-stopped --privileged --name rancher -p 80:80 -p 443:443 rancher/rancher:v2.5.13

查看运行状态

[root@localhost ~]# docker ps | grep rancher:v2.5.13
15dde4c69524   rancher/rancher:v2.5.13                            "entrypoint.sh"           5 hours ago   Up 5 hours   0.0.0.0:80->80/tcp, :::80->80/tcp, 0.0.0.0:443->443/tcp, :::443->443/tcp   rancher

Web界面登录

https://192.168.56.201/login

使用默认的url即可。

切换简体中文

 集群添加

 

 

 添加master节点,在rancher-master机器上执行,下图黑色框内容。

The cluster needs to have at least one node with each role in order for Rancher to finish provisioning.意思就是最少一个具备etcd、plane、worker. 

分别worker-node01和worker-node02服务器上添加work节点:

 以上添加master和work节点时间可能比较长,请耐心等待。

执行过程中可以通过docker logs -f dockername 来查看执行人日志。

问题记录:

time="2023-06-27T03:50:13Z" level=info msg="Waiting for node to register. Either cluster is not ready for registering, cluster is currently provisioning, or etcd, controlplane and worker node have to be registered"  参考文档

是由于服务器时间没有同步。

如果上面步骤安装失败,可以通过命令清空重新执行。

VC='
kubelet
kube-scheduler
kube-proxy
kube-controller-manager
kube-apiserver
'
for kube_svc in ${KUBE_SVC};
do
  # 停止服务
  if [[ `systemctl is-active ${kube_svc}` == 'active' ]]; then
    systemctl stop ${kube_svc}
  fi
  # 禁止服务开机启动
  if [[ `systemctl is-enabled ${kube_svc}` == 'enabled' ]]; then
    systemctl disable ${kube_svc}
  fi
done
# 停止所有容器
docker stop $(docker ps -aq)
# 删除所有容器
docker rm -f $(docker ps -qa)
# 删除所有容器卷
docker volume rm $(docker volume ls -q)
# 卸载mount目录
for mount in $(mount | grep tmpfs | grep '/var/lib/kubelet' | awk '{ print $3 }') /var/lib/kubelet /var/lib/rancher;
do
  umount $mount;
done
# 备份目录
mv /etc/kubernetes /etc/kubernetes-bak-$(date +"%Y%m%d%H%M")
mv /var/lib/etcd /var/lib/etcd-bak-$(date +"%Y%m%d%H%M")
mv /var/lib/rancher /var/lib/rancher-bak-$(date +"%Y%m%d%H%M")
mv /opt/rke /opt/rke-bak-$(date +"%Y%m%d%H%M")
# 删除残留路径
rm -rf /etc/ceph \
    /etc/cni \
    /opt/cni \
    /run/secrets/kubernetes.io \
    /run/calico \
    /run/flannel \
    /var/lib/calico \
    /var/lib/cni \
    /var/lib/kubelet \
    /var/log/containers \
    /var/log/kube-audit \
    /var/log/pods \
    /var/run/calico
# 清理网络接口
no_del_net_inter='
lo
docker0
eth
ens
bond
'
network_interface=`ls /sys/class/net`
for net_inter in $network_interface;
do
  if ! echo "${no_del_net_inter}" | grep -qE ${net_inter:0:3}; then
    ip link delete $net_inter
  fi
done
# 清理残留进程
port_list='
80
443
6443
2376
2379
2380
8472
9099
10250
10254
'
for port in $port_list;
do
  pid=`netstat -atlnup | grep $port | awk '{print $7}' | awk -F '/' '{print $1}' | grep -v - | sort -rnk2 | uniq`
  if [[ -n $pid ]]; then
    kill -9 $pid
  fi
done
kube_pid=`ps -ef | grep -v grep | grep kube | awk '{print $2}'`
if [[ -n $kube_pid ]]; then
  kill -9 $kube_pid
fi
# 清理Iptables表
## 注意:如果节点Iptables有特殊配置,以下命令请谨慎操作
sudo iptables --flush
sudo iptables --flush --table nat
sudo iptables --flush --table filter
sudo iptables --table nat --delete-chain
sudo iptables --table filter --delete-chain
systemctl restart docker


http://lihuaxi.xjx100.cn/news/1284951.html

相关文章

解释索引、事务、SQL优化等相关概念,并能够应用它们来解决实际问题

当涉及数据库和SQL的面试时&#xff0c;了解和应用以下概念可以提升你作为后台开发工程师的竞争力&#xff1a; 1. 索引&#xff1a; - 索引是一种数据结构&#xff0c;用于加速数据库的查询操作。 - 索引可以根据某个列或一组列的值进行排序&#xff0c;并提供快速访问…

一文学会Python安装和基础语法-全程干货

安装Python程序 官网Python下载地址&#xff1a;Python Releases for Windows | Python.org 安装3.7版本即可&#xff0c;版本升级可能会有较小的改动&#xff0c;下面要学习的都以python3.7为例 下载安装包之后直接双击无脑安装即可 新手经常遇到的问题&#xff1a; 1.符号…

win如何使用OpenSSL生成自签名证书,使 http 升级为 https

win如何使用OpenSSL生成自签名证书&#xff0c;使 http 升级为 https 前言 HTTPS其实就是HTTP over SSL&#xff0c;也就是让HTTP连接建立在SSL安全连接之上。 创建自签名证书需要安装openssl。参考本文安装OpenSSL部分。 使用OpenSSL生成自签名证书的步骤&#xff1a;参考…

Rtree实现对带半径的点聚类

业务上碰到了需要对圆做聚类的场景 sklearn现在的聚类方法dbscan(支持自定义距离公式&#xff0c;但是性能影响巨大 kdtree(不支持自定义距离计算 google、百度无果 思考用rtree实现 参考: https://zhuanlan.zhihu.com/p/62639268 计算过程 # 数据构建 num_points 200000 c…

360手机打开USB调试+文件传输

360手机USB调试文件传输[用户版] 参考&#xff1a;360手机-360刷机360刷机包twrp、root 360刷机包360手机刷机&#xff1a;360rom.github.io 【前言】 *360手机USB调试 &#xff0c;必须提前打开“开发者模式USB调试”进行 【操作流程】 打开&#xff1a;开发者模式、USB调…

python3D绘制评估优化算法性能的测试函数,使用matplotlib.mplot3d

测试函数主要是用来评估优化算法特性的&#xff0c;这里我用python3绘制了部分测试函数的图像。具体的测试函数可以结合维基百科来了解。想要显示某个测试函数的图片把代码结尾对应的注释去掉即可&#xff0c;具体代码如下&#xff1a; import numpy as np import matplotlib.…

关于C++图论树的某些题图形提示

一、去教室的路。 猫猫大学有n条路&#xff0c;每条路都有一个数字编号&#xff0c;其中的一条路一定与另外2条路相连&#xff0c;请你打出这个学校的地图。 输入1&#xff1a; 1 2 3 4 2 3 45 4 45 1 输出1&#xff1a; 1 2 3 4 5 45 图解 &#xff1…

python实现Edge的爬虫

python实现Edge的爬虫 查看Edge的版本号 下载对应的驱动 官网驱动链接: link 根据自己的系统选择相应的驱动 解压后放在自己的python的Scripts路径&#xff0c;并改名为 MicrosoftWebDriver 安装python库 常用的爬虫库&#xff1a; from bs4 import BeautifulSoup import …