Rancher2.0在virtualbox虚拟机上安装K8S集群时踩的坑
-
发布时间:2019-06-14
-
作者:kelajin
-
github:https://github.com/kelajin
故事背景
众所周知,Rancher是一款很“不错”(注意双引号)的安装、部署、管理k8s集群的工具,因为工作需要,我也在本机通过docker-machine 启动了一个虚拟机集群,在这个过程中就遇到了一个很小但是很恼人的问题,往下看
问题重现
先贴一下运行环境:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 | # 其实最小化安装本地k8s集群只需要一个节点,而且Rancher可以和k8s的master装在一起 host-machine: os:linux-manjaro-18.04 cpu: 4 memory: 16Gi docker-machine-config: virtualbox: rancheros-latest guest-machine: - name: rancher role: none ip: 192.168.99.109 - name: master role: etcd,controlplane ip: 192.168.99.105 - name: node00 role: worker ip: 192.168.99.106 - name: node01 role: worker ip: 192.168.99.107 - name: node02 role: worker ip: 192.168.99.108 |
安装虚拟机集群:
参考rancheros的集群安装方式: https://www.cnrancher.com/docs/os/v1.x/cn/quick-start-guide/
安装Rancher:
在rancher机器上安装Rancher2.0:https://www.cnrancher.com/docs/rancher/v2.x/cn/installation/single-node-install/
通过Rancher安装k8s集群:
注意:这种方式是通过Rancher agent容器创建,与kubeadm等工具的安装方式不太一样
安装方法:install01.png
坑在这儿
如果你不指定网卡,Rancher就不知道你这几台机器有什么区别,会一直报错 Failed to reconcile etcd plane: Etcd plane nodes are replaced. Stopping provisioning. Please restore your cluster from backup.
原因是啥
因为在docker-machine通过virtualbox安装的虚拟机,安装了两块网卡,一个是NAT模式(与外网通信,ip是固定为10.0.2.15),一个是Host-only模式(内网通信,可以与主机还有其他虚拟机通信,一般是192.168.x.x),而Rancher自己的kubelet镜像中,默认是通过你机器上的NAT网卡通信的,所以当你通过粘贴Rancher给你的命令去注册机器时,机器上的kubelet会通过NAT网卡找到Rancher节点,然后Rancher也懵B了,因为Rancher看到所有的kubelet的ip都是10.0.2.15,这时候Rancher就会不知所措,就会被报错淹没
那么解决方案?
install02.png
在这里填写你的Host-only模式的网卡名称,一般是eth1,IP是192网段的那个,然后在粘贴到节点上,如果节点上已经有正在运行的Rancher容器了,就把他们全部干掉,命令是
成功之后的亚子
install03.png
总结
这个问题困扰了我一天,疯狂找文档,后来在Rancher官网的英文网站上的一个小角落找到了一个配置说明:
https://rancher.com/docs/rancher/v2.x/en/cluster-provisioning/custom-clusters/agent-options/#dynamic-ip-address-options
这个B网站是真的坑,正常人谁会进这么深的目录下面看文档,除了被BUG折磨的程序猿~~
所以说,用第三方的技术一定要谨慎,因为你不知道你会遇到什么狗屁问题。。。还有查文档真的很重要!!!
-
发布时间:2019-06-14
-
作者:kelajin
-
github:https://github.com/kelajin