kubeadm说cni config使用weave对节点进行了未初始化

时间:2017-05-31 18:31:06

标签: vagrant kubernetes kubeadm

我正在尝试使用kubeadm 1.6设置kubernetes。使用Vagrant和Ubuntu 16.04框创建主节点和节点。我按照所有说明进行操作,无法解决这个问题。

流浪文件:

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. Init kubeadm

    sudo kubeadm init --apiserver-advertise-address = 192.168.50.2

  2. 运行提供的命令

    sudo cp /etc/kubernetes/admin.conf $ HOME / sudo chown $(id -u):$(id -g)$ HOME / admin.conf 导出KUBECONFIG = $ HOME / admin.conf

  3. 设置编织

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

  4. 验证主模式是否就绪并且dns pod正在运行。

  5. 加入节点没有错误。

    kubeadm join --token 2f17fd.c5f6abcccdfa8c7a 192.168.50.2:6443

  6. 节点出现在主节点上,但从未进入Ready状态。运行kubectl describe node node1会显示以下错误:

    KubeletNotReady运行时网络尚未就绪:NetworkReady = false原因:NetworkPluginNotReady消息:docker:网络插件尚未就绪:cni config uninitialized

  7. 为什么我收到此错误?我尝试安装kubeadm 1.5.6并得到同样的错误。

    请帮忙。

    更新 在此处找到解决方案:How to get kube-dns working in Vagrant cluster using kubeadm and Weave

    首先,通过在master上运行以下命令来查找公共IP。

    kubectl get svc
    NAME         CLUSTER-IP   EXTERNAL-IP   PORT(S)   AGE
    kubernetes   10.96.0.1    <none>        443/TCP   1h
    

    在每个节点中,确保使用10.96.0.1(在我的情况下)的任何进程都路由到10.30.3.41上的master。

    因此,在每个节点上(您可以跳过主节点)使用route来设置重定向。

    route add 10.96.0.1 gw 10.30.3.41
    

2 个答案:

答案 0 :(得分:1)

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

  • 取消配置当前配置&#39; kubeadm reset&#39;
  • 安装kubernets 1.6.4
  • 删除默认路由&#39; ip route delete默认通过10.0.2.2&#39;
  • 添加prod网络默认路由&#39; ip route add default via 192.168.50.1&#39;
  • 配置kubeadm&#39; kubeadm init --apiserver-advertise-address = 192.168.50.2&#39;
  • 安装wave rbac和wave kube

希望这有帮助。

答案 1 :(得分: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

之后,节点将处于Ready状态。