Rancher2.0在virtualbox虚拟机上安装K8S集群时踩的坑

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容器了,就把他们全部干掉,命令是
docker ps -aq | xargs sh -c "docker stop {}; docker rm {}",或者 docker stop $(docker ps -aq) && docker rm $(docker ps -aq),然后在重复上一步骤

成功之后的亚子

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