Rancher 是一个开源的项目,提供了在产品环境中对 Docker 容器进行全方位管理的平台。它提供的基础架构服务包括多主机网络、全局和局部的负载均衡、卷快照等。集成了原生 Docker 管理能力,包括:Docker Machine 和 Docker Swarm。Rancher 还提供了丰富用户体验的管理功能。

Rancher 支持多种编排系统,支持多种 IaaS 网络服务和裸机。其架构如下:

前置操作:

🍃 我的物理机硬件:i5-12400CPU、12核、16G

🍃 VMware虚拟机配置,受限于我的电脑配置瓶颈,k8snode3这个节点我可能不会用上,不过可以把k8snode3这个节点和k8sMaster节点放在同一台机器上

hostnameIP内容CPU内存硬盘
k8srancher172.16.0.128rancher8C7G40G
k8sMaster172.16.0.129master4C3G40G
k8snode1172.16.0.130node4C2G40G
k8snode2172.16.0.131node4C2G40G
k8snode3172.16.0.132node4C2G40G

🍃 虚拟机网络配置:

🍃 我将虚拟机的NET网络配置为桥接模式,在虚拟网络编辑器里将虚拟机网卡桥接至了物理机网卡,避免拉取k8s镜像时网络不稳定的情况发生

 🍃 安装rancher前的虚拟机配置,每台都要配置,不然会出现些奇奇怪怪的问题

yum install -y ntpdate #下载ntpdate
ntpdate ntp1.aliyun.com #更新系统时间
hostnamectl set-hostname k8sRancher  #依次更改系统主机名

#将以下IP和主机名信息写入每台虚拟机
cat >> /etc/hosts << EOF
172.16.0.128 k8srancher
172.16.0.129 k8sMaster
172.16.0.130 k8snode1
172.16.0.131 k8snode2
172.16.0.132 k8snode3
EOF

systemctl stop firewalld #关闭防火墙
systemctl disable firewalld #永久关闭防火墙

setenforce 0 #关闭selinux
#永久关闭selinux
sed -i "s#SELINUX=enforcing#SELINUX=disable#g" /etc/selinux/config

swapoff -a #关闭swap
sed -ri 's/.*swap.*/#&/' /etc/fstab #永久关闭swap

一、获取rancher

🍃 进入rancher官网

https://www.rancher.cn/quick-start/

二、rancher安装示意

🍃 主界面有安装方法,这里得保证机器里面都提前安装了docker

三、 启动rancher

🍃 命令执行完后Rancher容器会自己启动

🍃 查看容器,已经启动了,我这里映射了宿主机81端口

🍃 然后访问Rancher宿主机IP,进入Rancher页面

四、获取rancher初始登录密码

🍃 这一步需要获取Rancher容器的id

🍃 查询Rancher容器id,执行:

docker logs  622f2837f003  2>&1 | grep "Bootstrap Password:"

🍃 会得到如下一串密码,将密码填入上面的password框,然后下一步:

 五、自定义rancher登录密码

🍃 这一步我自定义了密码,也就是rancher后期页面登录用的密码,账号是:admin

 六、创建

🍃 上一步设置完后,就进入首页了,这里点击创建

 七、自定义集群

🍃 在现有的节点上使用RKE创建自定义集群

 八、版本选择

🍃 名字自定义,k8s版本我选的v1.18.20-rancher1-3,下一步

 九、部署master和node节点

🍃 勾选 etcd、Control Plane,复制下面的命令在master机器上运行

 🍃 在master机器执行命令,完毕确认镜像是否起来,以下是启动的master节点所有有关容器:

 🍃 出现这个其实就可以点击Done了

 

🍃 这里等待集群状态显示为Active就说明好了,关于为什么node节点还没加我就Done,是因为我的机器实在拉跨,再继续添加一个node节点,我的虚拟机cpu会疯狂飙升,rancher页面会爆炸到直接失联

 🍃 等rancher机器缓一缓,接下来可以添加node节点了

 9.1、进入集群,添加注册新的节点,复制里面的命令,注意命令最后是带worker的,这个是node节点使用的

 🍃 命令执行完成后,node节点rancher-agent容器已经运行起来了

🍃 rancher页面里面你得等它一会,它这会在干活儿,等rancher忙完新的node节点就会出现在集群节点中

🍃 比如这样,新的node节点已经出来了

🍃 k8snode3这台机器我终究还是没启用,错付了,我摊牌了,终究还是没有雨露均沾,这台要是起来,我这物理机就要变成老爷车了,卡到奔溃(这块儿真是老惨了,卡了我半小时),总结到这里还得是实验机器配置要给够,不给够的话,部署过程真就是一言难尽

十、 配置kubectl命令

🍃 下载kubeConfig

 🍃 在需要部署kubectl的机器用户家目录下创建文件夹 .kube ,在 .kube 中创建文件config

🍃 将刚刚下载的kubeConfig文件的内容复制到config文件中

🍃 然后在机器里下载kubectl命令

 curl -LO https://storage.googleapis.com/kubernetes-release/release/$(curl -s https://storage.googleapis.com/kubernetes-release/release/stable.txt)/bin/linux/amd64/kubectl

🍃确定要下载的版本,我这里的k8s版本是v1.18.20,我就下载v1.18.20版本的kubectl

curl -LO https://storage.googleapis.com/kubernetes-release/release/v1.18.20/bin/linux/amd64/kubectl

🍃下载完成后将kubectl更换位置,放入以下目录

sudo mv ./kubectl /usr/local/bin/kubectl

🍃测试kubectl是否可以使用

kubectl get nodes #获取节点信息
#这里权限不够,给个可执行权限
chmod +x /usr/local/bin/kubectl

 🍃kubectl已经可以使用了

🍃如果不想在机器安装kubectl,rancher集群管理页面命令行也可以直接使用kubectl命令

 

🍁下面总结下部署过程中遇见的报错问题:

1、如果碰见ssl相关的报错,得看看是不是虚拟机网络配置有问题,关于k8s镜像拉取,作为虚拟机默认网络设置(net),会有可能不太好使,甚至有的小伙伴还会使用内网穿透(有这么费力嘛?)

2、Websocket Disconnected
The connection to wss://172.16.0.128/v1/subscribe closed unexpectedly Fri, Sep 30 2022 12:33:59 pm. Retrying...

🍁这个问题在我这还真就是配置不够导致的,后来我重新调整了虚拟机配置,也就是文章开头表格的配置才成功避开这个提示

 3、Cluster health check failed: Failed to communicate with API server during namespace check: Get "https://172.16.0.129:6443/api/v1/namespaces/kube-system?timeout=45s": context deadline exceeded

🍁这个问题,看看是不是防火墙、selinux、swap这些没设置好导致的,也就是文章开头要求的前置配置,看看是不是有什么遗漏

🍃 展示下每个节点机器的运行的内容:

🍃 k8srancher

🍃 k8sMaster(etcd、Control Plane)

 🍃 k8snode1(worker)

🍃 k8snode2(worker)

 

Logo

开源、云原生的融合云平台

更多推荐