2017-05-31 37 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)。您的解決方案與上面使用的解決方案一樣,是暫時的,當您重新啓動主服務器時必須重新應用。 –