1.选择原因
在K8s选型的时候对比过 KubeOperator,OpenShift,Rancher,裸金属等
- 裸金属 搭建比较费劲,维护比较费劲
- OpenShift 比较重
- KubeOperator 给百度交了广告费 ,感觉不靠谱 (不喜勿喷,就这么随意)
- Rancher 安装和使用很简单
让我这半吊子运维觉得安装和使用都很简单,我很难拒绝这一部分,就选择它了。
2. Rancher介绍
Run Kubernetes Everywhere
From datacenter to cloud to edge, Rancher lets you deliver Kubernetes-as-a-Service.
有兴趣可以去官网看看介绍,我懒得复制粘贴了。
3. 安装Rancher2.0
这是一台K8s集群管理机器,建议找一台不要加入集群的机器,当然你也可以不采纳我的建议,这台机器配置无需太高,推荐4C8G的机器,条件不允许的话也可以更低
$ sudo docker run -d --restart=unless-stopped -p 80:80 -p 443:443 rancher/rancher
对的,你没看错,就这么一句话。
等这个运行好了就直接进入 https://NodeIP 就可以安装指引配置管理员账号和密码啥的。
这里要注意的就是在填写IP的时候一定要填写正确
4.构建K8s集群
你可以导入一个已有的集群,也可以创建下面的任意托管集群,或者自定义集群,这里我是自己的机器所以选的自定义。
你也可以看着下面的参数去进行配置,没啥需要注意的按照中文走就完事了。
这里的高级选项的话授权集群访问地址选择禁用,你可以按照你的需要去勾选。端口地址这里不建议修改,因为要开防火墙的端口,搞起来比较麻烦。
我这里这里填写一个名字就完事了,然后点击下一步。
注意:这里的高级选项要点开,去配置内网地址和节点名称,不然会出现稀奇古怪的问题
这里有三个主机角色 Etcd,Control,Worker
Etcd 是负责存储的
Control 是控制器
Worker 是工作节点
这里Rancher官网的HA部署建议是任意一台加入集群的机器都勾选三个角色,但是我不接受他的建议
裸金属搭建K8s的经验告诉我,Master就是Etcd,Control,Node就是Worker 所以我选择 Etcd,Control放在一起,Worker单独放。我这里这里小集群的话Etcd和Control放在一台机器上面。建议将稳定性高的机器做为Master因为这台机器只要求稳定性,Pod调度默认也不会调度到这台机器上,对性能要求没有Worker高。有钱的话忽略这一段。
注意:在将机器加入集群之前先将端口号开放才行,不然集群不会正常运行
Rancher-Server(也就是你装Rancher那台机器)
firewall-cmd --zone=public --add-port=80/tcp --permanent
firewall-cmd --zone=public --add-port=443/tcp --permanent
firewall-cmd --zone=public --add-port=6443/tcp --permanent
# 如果你的22没有开放的话也是需要开放的
# firewall-cmd --zone=public --add-port=22/tcp --permanent
Etcd
firewall-cmd --zone=public --add-port=2079-2380/tcp --permanent
firewall-cmd --zone=public --add-port=10250/tcp --permanent
firewall-cmd --zone=public --add-port=443/tcp --permanent
firewall-cmd --zone=public --add-port=6443/tcp --permanent
firewall-cmd --zone=public --add-port=8472/udp --permanent #注意这里是udp的
firewall-cmd --reload
Control
firewall-cmd --zone=public --add-port=2079-2380/tcp --permanent
firewall-cmd --zone=public --add-port=10250/tcp --permanent
firewall-cmd --zone=public --add-port=443/tcp --permanent
firewall-cmd --zone=public --add-port=6443/tcp --permanent
firewall-cmd --zone=public --add-port=8472/udp --permanent #注意这里是udp的
firewall-cmd --zone=public --add-port=80/tcp --permanent
firewall-cmd --zone=public --add-port=30000-32767/tcp --permanent
firewall-cmd --reload
Worker
firewall-cmd --zone=public --add-port=10250/tcp --permanent
firewall-cmd --zone=public --add-port=443/tcp --permanent
firewall-cmd --zone=public --add-port=6443/tcp --permanent
firewall-cmd --zone=public --add-port=8472/udp --permanent
firewall-cmd --zone=public --add-port=80/tcp --permanent
firewall-cmd --zone=public --add-port=6379/tcp --permanent
firewall-cmd --zone=public --add-port=30000-49999/tcp --permanent
firewall-cmd --zone=public --add-port=9099/tcp --permanent
firewall-cmd --zone=public --add-port=10254/tcp --permanent
firewall-cmd --zone=public --add-port=19796/tcp --permanent
firewall-cmd --zone=public --add-port=9796/tcp --permanent
firewall-cmd --zone=public --add-port=4789/udp --permanent
firewall-cmd --zone=public --add-port=6783-6784/udp --permanent
firewall-cmd --zone=public --add-port=2376/tcp --permanent
firewall-cmd --zone=public --add-port=2379-2380/tcp --permanent
firewall-cmd --zone=public --add-port=6783/tcp --permanent
firewall-cmd --zone=public --add-masquerade --permanent # 没有这个内部会无法通信
firewall-cmd --reload
端口开放后再执行加入命令就完事了
这里要注意先加入Master再加入Worker(虽然不知道是为啥,但是反正就是要这样做)。
执行完毕后应该会启动一个代理的镜像
这个镜像等下集群启动起来后会自动删除的,不用在意。如果你想查看进度就可以执行下面的代码查看日志
$ docker logs 314ee0d78cdb
全部机器执行完毕后就等就好了,这个镜像有一个多G,慢慢等吧。
等机器的机器起来后就应该可以看到这样的界面
然后你的Rancher集群就搭建完毕了。