[自问自答]如何通过另外一台电脑部署三个节点
来源:4-3 用kubespray一键部署生产级k8s集群

feng哥
2021-06-22
用了好几个小时,终于完成了使用kubespray的k8s部署。自问自答,把踩过的坑和大家分享一下。
我的情况是这样的:我从本地机运行ansible来部署。因为本地机已经安装了可以访问外网的工具,所以觉得说可能省事一些。集群由三台阿里云的虚拟机ECS组成。操作系统为CentOs。我自己习惯用pipenv设立一个虚拟环境来执行ansible,python的版本为3.9.5,从我自己的电脑MacOs运行了老师提供的kubespray版本,没什么问题。有几个小坑:
1。 阿里云的虚拟机买小了,需要2个CPU 和 1.5G以上的内存,我只有1G内存,所以临时升级到了2CPU 2G的虚拟机。playbook 报错的问题解决。
2。给IPS(declare -a IPS=(10.155.19.223 10.155.19.64 10.155.19.147))赋值的时候,我用了公网IP, 其实后面会遇到问题。我下意识用公网IP,因为觉得说从我自己电脑上执行ansible, 用私有IP连服务器都找不到。虽然这个逻辑没啥问题,但后面出了一些奇奇怪怪的问题,感觉还是需要给出私有IP的信息。最终结果是 (hosts.yml):
all:
hosts:
ali-1:
ansible_host: 47.xx.xx.84 (公网IP)
ip: 172.xx.xx…30 (私有IP)
ali-2:
ansible_host: 47.xx.xx.121
ip: 172.xx.xx.29
ali-3:
ansible_host: 47.xx.xx.231
ip: 172.xx.xx.28
access_ip被删除了,因为不删除etcd集群的安装会有问题。删了以后发现也一切正常运行,没啥影响。
3。中间还有过containerd无法启动的问题,看了这个答案,问题解决。
总的来说老师准备的课件比较详细。顺序的话按照老师文档的执行顺序正合适。具体来说就是:
- 先把二进制文件解压到各个节点的/tmp/releases
- 执行cluster.yml (如果像我一样是从自己本机执行ansible 别忘了改host.yml)
- 当cluster.yml报错说images下载超时以后,运行curl https://gitee.com/pa/pub-doc/raw/master/kubespray-v2.15.0-images.sh|bash -x 来从国内下载images。
因为有了步骤1和3,整个cluser.yml运行时间不是很长,在我这里只用不到10分钟。
PS,kubespray这个项目ansible代码质量不错,支持反复执行,不会出错,大家可以放心反复执行。
3回答
-
weixin_慕仔4521018
2021-09-09
"access_ip被删除了,因为不删除etcd集群的安装会有问题"
这里我也尝试了,但看etcd的日志还是在用ip进行健康检查,最后通不过
9月 09 15:18:51 m2 etcd[32540]: health check for peer 6153b5236ede818f could not connect: dial tcp 10.0.4.8:2380: i/o timeout
9月 09 15:18:51 m2 etcd[32540]: health check for peer 67e0cd25511becf6 could not connect: dial tcp 10.0.4.12:2380: i/o timeout
我猜你的三台主机内网IP是通的,但我的不是,所以这种方法行不通
00 -
慕侠0397330
2021-08-06
我总觉得顺序是1 3 2.为什么不把1 3先做了再跑cluster.yml有点疑惑,请求指教
012021-08-07 -
刘果国
2021-06-23
总结的非常赞!666
00
相似问题