在Kubeadm联接上不会自动为Kubernetes工作者节点分配podCidr

时间:2018-10-03 18:06:21

标签: kubernetes kubeadm flannel

我建立了一个多主Kubernetes集群,其中有一个工作节点。我用kubeadm设置了集群。在kubeadm init上,我通过了-pod-network-cidr=10.244.0.0/16(使用Flannel作为网络覆盖)。

在第一个工作程序节点上使用kubeadm join时,一切正常。由于某些原因,当尝试添加更多工作线程时,没有一个节点会自动分配有podCidr。

我使用了this文档,使用 kubectl patch node <NODE_NAME> -p '{"spec":{"podCIDR":"<SUBNET>"}}'命令,一切正常。

但这并不理想,我想知道如何解决我的设置,以便仅添加kubeadm join命令即可​​自动分配podCidr。

任何帮助将不胜感激。谢谢!

编辑:

I1003 23:08:55.920623       1 main.go:475] Determining IP address of default interface

I1003 23:08:55.920896       1 main.go:488] Using interface with name eth0 and address 

I1003 23:08:55.920915       1 main.go:505] Defaulting external address to interface address ()

I1003 23:08:55.941287       1 kube.go:131] Waiting 10m0s for node controller to sync

I1003 23:08:55.942785       1 kube.go:294] Starting kube subnet manager

I1003 23:08:56.943187       1 kube.go:138] Node controller sync successful

I1003 23:08:56.943212       1 main.go:235] Created subnet manager: 

Kubernetes子网管理器-kubernetes-worker-06

I1003 23:08:56.943219       1 main.go:238] Installing signal handlers

I1003 23:08:56.943273       1 main.go:353] Found network config - Backend type: vxlan

I1003 23:08:56.943319       1 vxlan.go:120] VXLAN config: VNI=1 Port=0 GBP=false DirectRouting=false

E1003 23:08:56.943497       1 main.go:280] Error registering network: failed to acquire lease: node "kube-worker-02" pod cidr not assigned

I1003 23:08:56.943513       1 main.go:333] Stopping shutdownHandler...

3 个答案:

答案 0 :(得分:2)

我能够解决我的问题。在我的多主服务器设置中,在我的主节点中的一个 上,kube-controller-manager.yaml(在/ etc / kubernetes / manifest中)文件缺少以下两个字段:

  • --allocate-node-cidrs=true
  • --cluster-cidr=10.244.0.0/16

将这些字段添加到Yaml后,我重置了kubelet服务,并且在尝试添加新的工作程序节点时一切正常。

这对我来说是一个错误,因为当用kubeadm init初始化我的一个主节点时,我必须忘了传递--pod-network-cidr。糟糕!

希望这可以帮助某个人!

答案 1 :(得分:0)

我将kubernetes v1.16docker-ce v17.05一起使用。问题是,我只有一个主节点,该主节点通过init选项--pod-network-cidr进行了设置。

根据/var/log/message下的kubelet日志,另一个工作节点上的法兰绒吊舱未能同步。检查此pod(使用docker logs <container-id>),结果发现node <NODE_NAME> pod cidr not assigned

根据this doc

,我通过手动将podCidr设置为工作节点来解决此问题。

尽管我还没有弄清楚为什么需要这种手动设置,因为文档指出:

  

如果使用kubeadm,则将--pod-network-cidr = 10.244.0.0 / 16传递给kubeadm init,这将确保自动为所有节点分配podCIDR。

答案 2 :(得分:0)

如果你像我一样只有几个工作节点而不是 kubeadm revert 然后传入 kubeadm init --pod-network-cidr=10.244.0.0/16 你可以在每个节点上执行以下操作,问题应该消失:

kubectl patch node node2-worker -p '{"spec":{"podCIDR":"10.244.0.0/16"}}'

其中 node2-worker 是您的节点名称,而不是显示的名称。