问题现象
使用 kubeadm 安装的 kubernetes 集群, 再添加多个的 master 时, flannel
无法启动, 日志出现错误提示 pod cidr not assgned
问题原因
kube-controller-manager
没有给新加入的节点分配IP段.
解决方案
方案1
编辑 master 机器上的 /etc/kubernetes/manifests/kube-controller-manager.yaml
注意: 如果有多个 master 需要修改所有 master
- 在命令行添加
--allocate-node-cidrs=true
- 重启
kubelet
- 执行
kubectl delete {...}
删除问题节点, 重新执行 kubeadm join 即可
注意: 如果删除的节点是用 kubeadm 创建的 master, 删除节点之后还需手动删除对应的 etcd 节点.
方案2
手动给节点分配IP段, 需要在 master 节点执行 kubectl edit node {...}
, 然后手动给 spec
节添加 podCIRD
字段
注意: 添加 CIRD 段时建议查看一下其他节点使用哪些 CIRD 段, 避免和已有节点冲突.
apiVersion: v1
kind: Node
metadata:
name: kube-master1
spec:
podCIDR: 10.244.0.0/24