2017-05-31 33 views
0

我想设置kubernetes使用kubeadm 1.6。主站和节点是使用Vagrant和Ubuntu 16.04框创建的。我遵循了所有的指示,无法弄清楚。kubeadm说cni配置未初始化节点使用编织

流浪文件:

Vagrant.configure("2") do |config| 
    config.vm.box = "bento/ubuntu-16.04" 
    config.vm.box_check_update = false 

    config.vm.provider "virtualbox" do |vb| 
    vb.cpus = 2 
    vb.memory = "1024" 
    end 

    config.vm.provision "shell", path: "provision.sh" 

    config.vm.define "master" do |c| 
     c.vm.hostname = "master" 
     c.vm.network "private_network", ip: "192.168.50.2", netmask: "255.255.255.0", auto_config: true, virtualbox__intnet: "k8s-net" 
     c.vm.provision :shell, inline: "sed 's/127\.0\.0\.1.*master.*/192\.168\.50\.2 master/' -i /etc/hosts" 

    end 

    config.vm.define "node1" do |c| 
     c.vm.hostname = "node1" 
     c.vm.network "private_network", ip: "192.168.50.3", netmask: "255.255.255.0", auto_config: true, virtualbox__intnet: "k8s-net" 
     c.vm.provision :shell, inline: "sed 's/127\.0\.0\.1.*node1.*/192\.168\.50\.3 node1/' -i /etc/hosts" 
    end 

    config.vm.define "node2" do |c| 
     c.vm.hostname = "node2" 
     c.vm.network "private_network", ip: "192.168.50.4", netmask: "255.255.255.0", auto_config: true, virtualbox__intnet: "k8s-net" 
     c.vm.provision :shell, inline: "sed 's/127\.0\.0\.1.*node2.*/192\.168\.50\.4 node2/' -i /etc/hosts" 
    end 

end 
  1. 初始化kubeadm

    须藤kubeadm INIT --apiserver-通告地址= 192.168.50.2

  2. 执行提供的命令

    sudo cp /etc/kubernetes/admin.conf $ HOME/ s UDO CHOWN $(ID -u):$(ID -g)$ HOME/admin.conf中 出口KUBECONFIG = $ HOME/admin.conf中

  3. 设置编织

    kubectl申请--filename https://git.io/weave-kube-1.6

  4. 确认主模式已准备好,并且该dns窗格正在运行。

  5. 加入节点没有错误。

    kubeadm加入--token 2f17fd.c5f6abcccdfa8c7a 192.168.50.2:6443

  6. 节点出现在主,但从来没有进入就绪状态。运行kubectl描述节点节点1显示了这个错误:

    KubeletNotReady运行网络没有准备好:NetworkReady =虚假理由:NetworkPluginNotReady消息:泊坞窗:网络插件还没有准备好:CNI配置初始化

为什么我收到这个错误?我尝试安装kubeadm 1.5.6,并得到相同的错误。

请帮忙。

更新 找到了解决办法在这里:How to get kube-dns working in Vagrant cluster using kubeadm and Weave

首先,找到通过运行在主以下的公网IP。

在每个节点上,确保使用10.96.0.1(对我来说)的任何进程被路由到主那是10.30.3.41。

所以在每个节点(你可以跳过主)使用路由来设置重定向。

route add 10.96.0.1 gw 10.30.3.41 

回答

0

为了让网络覆盖在Kubernetes 1.6中工作,您需要启用RBAC规则。

来源:https://github.com/weaveworks/weave/issues/2777

kind: ClusterRole 
apiVersion: rbac.authorization.k8s.io/v1beta1 
metadata: 
    name: weave-net 
rules: 
- apiGroups: 
    - "" 
    resources: 
    - pods 
    - namespaces 
    - nodes 
    verbs: 
    - get 
    - list 
    - watch 
- apiGroups: 
    - extensions 
    resources: 
    - networkpolicies 
    verbs: 
    - get 
    - list 
    - watch 
--- 
apiVersion: v1 
kind: ServiceAccount 
metadata: 
    name: weave-net 
    namespace: kube-system 
--- 
kind: ClusterRoleBinding 
apiVersion: rbac.authorization.k8s.io/v1beta1 
metadata: 
    name: weave-net 
roleRef: 
    apiGroup: rbac.authorization.k8s.io 
    kind: ClusterRole 
    name: weave-net 
subjects: 
- kind: ServiceAccount 
    name: weave-net 
    namespace: kube-system 

之后,节点将处于就绪状态。

+0

如果我没有弄错这些规则存在于编织yaml https://git.io/weave-kube-1.6的1.6版本中。 –

1

你的问题是机器中的默认路由。需要纠正默认路由拳头。

  • 未配置当前配置 'kubeadm重置'
  • 安装kubernets 1.6.4
  • 删除默认路由的IP路由通过删除默认10.0.2.2“
  • 添加督促网络默认路由的IP路线通过192.168.50.1' 添加默认
  • 配置kubeadm 'kubeadm初始化--apiserver-通告地址= 192.168.50.2'
  • 安装波RBAC和波KUBE

希望这会有所帮助。

+0

谢谢。我认为这个更大的问题在这里讨论(https://github.com/mitchellh/vagrant/issues/436)。您的解决方案与上面使用的解决方案一样,是暂时的,当您重新启动主服务器时必须重新应用。 –