安装 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集群
- 第1步,使用浏览器访问 rancher 控制台 https://192.168.31.101:8443 ,设置 admin 新的密码,比如:Admin_147258
- 第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







