安装 rancher v2.7.1

[TOC]

前期准备

  • 以下测试环境配置了3台虚拟机,信息如下:
ip地址 机器名称 角色 操作系统 配置
192.168.31.101 k8s-node101 master、rancher CentOS 7.9 4C-8G-60G
192.168.31.102 k8s-node102 worker CentOS 7.9 4C-4G-60G
192.168.31.103 k8s-node103 worker CentOS 7.9 4C-4G-60G
  • 系统初始化
#.1.修改机器名
newhost=`ifconfig -a|grep inet|grep 192.168.31|awk '{print $2}'|tail -1|awk -F'.' '{print "k8s-node"$4}'`
hostnamectl set-hostname $newhost

#.2.配置hosts文件
cat /etc/hosts | grep "192.168.31.101" > /dev/null || echo "192.168.31.101 k8s-node101" >> /etc/hosts
cat /etc/hosts | grep "192.168.31.102" > /dev/null || echo "192.168.31.102 k8s-node102" >> /etc/hosts
cat /etc/hosts | grep "192.168.31.103" > /dev/null || echo "192.168.31.103 k8s-node103" >> /etc/hosts
cat /etc/hosts | grep "k8s"

#.3.配置dns并安装基础软件
sed -i 's/^nameserver.*/nameserver 223.5.5.5/g' /etc/resolv.conf
cat /etc/resolv.conf | grep "^nameserver" > /dev/null || echo "nameserver 223.5.5.5" > /etc/resolv.conf
yum install -y -q curl wget ntp ntpdate lrzsz telnet zip unzip net-tools

#.4.配置ntp时间同步,时间不同步会导致证书错误和集群不稳定
timedatectl set-timezone Asia/Shanghai
/usr/sbin/ntpdate -u ntp.aliyun.com

#.5.建议禁用firewalld否则重启后需要iptable -F清除防火墙策略
/usr/sbin/iptables -F
systemctl stop firewalld.service
systemctl disable firewalld.service
systemctl status firewalld.service

#.6.建议关闭selinux否则会限制服务
sed -i 's/^SELINUX=.*/SELINUX=disabled/' /etc/selinux/config
setenforce 0

#.7.设置ssh端口为1618
sed -i "s/#Port/Port/" /etc/ssh/sshd_config
sed -i '/^Port/c Port 1618' /etc/ssh/sshd_config
grep "^Port" /etc/ssh/sshd_config
systemctl restart sshd.service

#.8.启用rc.local开机启动
chmod +x /etc/rc.d/rc.local
systemctl enable -q rc-local.service
systemctl start rc-local
systemctl status rc-local | grep Active
  • 安装 docker 24.0.1

注:针对 rancher 2.7.1 不要安装过新的 docker 版本,否则 k8s 初始化会报错 [ERROR] Failed to set up SSH tunneling for host [192.168.31.101]: Can't retrieve Docker Info: Error response from daemon: client version 1.41 is too old. Minimum supported API version is 1.44, please upgrade your client to a newer version

curl -sL 'http://iso.sqlfans.cn/docker/install_docker_2401.sh' | bash
docker --version
  • 注:确认docker默认目录,若最大分区为 /data 则需要修改docker路径为 /data/docker/lib
#.请参考:curl http://iso.sqlfans.cn/docker/docker-change-rootdir.txt
docker info | grep Root
  • 配置 docker 加速
mkdir -p /etc/docker
curl http://iso.sqlfans.cn/config/docker/daemon.202504.json > /etc/docker/daemon.json
systemctl daemon-reload
systemctl restart docker

安装rancher

1.安装rancher v2.7.1

  • 登录 rancher 节点(示例 192.168.31.101),安装 rancher v2.7.1
mkdir -p /data/{images,docker}
docker pull rancher/rancher:v2.7.1
docker run --name rancher -d --privileged --restart=unless-stopped -p 80:80 -p 8443:443 -v /etc/localtime:/etc/localtime:ro -v /data/docker/rancher:/var/lib/rancher/ rancher/rancher:v2.7.1
docker exec -it rancher /bin/bash -c '/usr/bin/rancher --version'

2.登录rancher控制台,配置k8s集群

  • 第2步,初始密码可在rancher节点执行 docker logs rancher 2>&1 | grep Password 来获取,比如:
[root@k8s-node101 ~]# sleep 10 && docker logs rancher 2>&1 | grep Password
2023/04/04 09:37:56 [INFO] Bootstrap Password: r4b6b49twljrv2xq96264jwswp8n2b596nk6vb9lpj9vdkt2tvh8fj
  • 第3步,设置新的控制台 admin 登录密码

  • 第4步,在欢迎页,点 Create 创建集群

  • 第5步,选择 Custom,即:使用现有节点并使用 RKE 创建集群

  • 第6步,输入集群名称,比如 k8s

  • 第7步,关于角色选择,若 Master 请勾选 Etcd + Control,若 Worker 请勾选 Worker,若 Master 也充当 Worker 则请全选。示例:k8s-node101 全选,k8s-node102 和 k8s-node103 只勾选 Worker

  • 第8步,复制上一步的命令去相应节点的SSH终端运行,示例如下:
[root@k8s-node101 ~]# sudo docker run -d --privileged --restart=unless-stopped --net=host -v /etc/kubernetes:/etc/kubernetes -v /var/run:/var/run  rancher/rancher-agent:v2.7.1 --server https://192.168.31.101:8443 --token ****** --ca-checksum ****** --etcd --controlplane --worker
[root@k8s-node102 ~]# sudo docker run -d --privileged --restart=unless-stopped --net=host -v /etc/kubernetes:/etc/kubernetes -v /var/run:/var/run  rancher/rancher-agent:v2.7.1 --server https://192.168.31.101:8443 --token ****** --ca-checksum ****** --worker
[root@k8s-node103 ~]# sudo docker run -d --privileged --restart=unless-stopped --net=host -v /etc/kubernetes:/etc/kubernetes -v /var/run:/var/run  rancher/rancher-agent:v2.7.1 --server https://192.168.31.101:8443 --token ****** --ca-checksum ****** --worker

注:所有节点执行完之后,上一步的页面下面会提示 3 new nodes have registered.

3.集群初始化

  • 待复制上一步的命令并去对应节点运行之后,再点最下面的 Done,然后等待集群初始化 ......

4.确认k8s集群信息

  • 登录 rancher 节点(示例 192.168.31.101),确认 k8s 版本为 v1.24.10
docker exec -it rancher /bin/bash -c '/usr/bin/kubectl version --short'
docker exec -it rancher /bin/bash -c '/usr/bin/kubectl get componentstatuses'
docker exec -it rancher /bin/bash -c '/usr/bin/kubectl get nodes'
  • 刷新 rancher 控制台,查看集群- Nodes 查看节点状态

后期优化

  • 登录 rancher 节点(示例 192.168.31.101),安装 kubectl v1.26.3
curl -L http://iso.sqlfans.cn/k8s/kubectl.v1.26.3 -o /usr/bin/kubectl
chmod +x /usr/bin/kubectl
kubectl version --short
  • 将 kubectl 关联k8s资源
mkdir ~/.kube
touch ~/.kube/config
#.集群首页右上角,点击 Copy KubeConfig to Clipboard,并将内容覆盖到~/.kube/config
kubectl get nodes

附录

  • 如果为了测试,需要铲掉重来的话,可以参考如下脚本:
#.如果一切可以重来
docker stop $(docker ps -a -q)
docker rm $(docker ps -a -q)
docker volume rm $(docker volume ls -q)
docker rmi -f $(docker images | awk '{print $3}')
rm -rf /data/docker/rancher
rm -rf /etc/ceph /etc/cni /etc/kubernetes /opt/cni /opt/rke /run/secrets/kubernetes.io /run/calico /run/flannel 
rm -rf /var/run/calico /var/log/containers /var/log/pods /var/lib/calico /var/lib/etcd /var/lib/cni /var/lib/kubelet /var/lib/rancher/rke/log
Copyright © www.sqlfans.cn 2021 - 2026 All Right Reserved更新时间: 2026-06-08 15:15:31

results matching ""

    No results matching ""