我建立了一个多主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...
答案 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.16
与docker-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 是您的节点名称,而不是显示的名称。