【问题标题】:Is there a way to assign pod-network-cidr in kubeadm after initialization?初始化后有没有办法在 kubeadm 中分配 pod-network-cidr?
【发布时间】:2020-07-11 09:44:48
【问题描述】:

我使用kubeadm 来初始化我的K8 master。但是,我错过了与法兰绒一起使用的--pod-network-cidr=10.244.0.0/16 标志。有没有办法(或配置文件)我可以修改以反映这个子网而无需再次执行重新初始化过程?

【问题讨论】:

  • 编辑生成的 CNI 配置文件?

标签: kubernetes kubeadm flannel


【解决方案1】:

覆盖所有 k8s 节点资源上的 PodCIDR 参数,IP 源范围为10.244.0.0/16

$ kubectl edit nodes nodename

将相关 Flannel ConfigMap 中 net-conf.json 标头下的“网络”字段替换为新的网络 IP 范围:

$ kubectl edit cm kube-flannel-cfg -n kube-system
net-conf.json: | { "Network": "10.244.0.0/16", "Backend": { "Type": "vxlan" } }

擦除旧网络池中剩余的当前 CNI 网络接口:

$ sudo ip link del cni0; sudo ip link del flannel.1

分别重新生成 Flannel 和 CoreDNS pod:

$ kubectl delete pod --selector=app=flannel -n kube-system
$ kubectl delete pod --selector=k8s-app=kube-dns -n kube-system

等到 CoreDNS pod 从新的网络池中获取 IP 地址。请记住,您的自定义 Pod 仍会在容器中保留旧 IP 地址,除非您也手动重新创建它们

【讨论】:

  • 尝试覆盖podCIDR参数会导致错误:# nodes "(the node name)" was not valid: # * spec.podCIDRs: Forbidden: node updates may not change podCIDR except from "" to valid
  • 很好的答案。谢谢你。就我而言,不需要替换“网络”字段。它已经正确设置了。
  • 当我运行 kubectl edit nodes 时,网络部分在 Kubernetes 1.21.8 中不可用。
猜你喜欢
  • 2011-04-15
  • 1970-01-01
  • 1970-01-01
  • 2018-11-06
  • 2016-11-13
  • 1970-01-01
  • 2015-04-05
  • 2021-06-12
相关资源
最近更新 更多