You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

无需重建节点,如何更新Kubernetes单节点集群的podCIDR

无需重建集群更新单节点Kubernetes的PodCIDR方案

针对你遇到的单节点集群PodCIDR过小导致无法创建更多Pod的问题,确实不用删除节点重建集群,按以下步骤操作即可:

  1. 隔离节点并驱逐现有Pod

    • 先标记节点为不可调度,防止新Pod在操作过程中调度上来:
      kubectl cordon <你的节点名称>
      
    • 驱逐节点上的普通Pod(kube-system中的静态Pod如kube-apiserver等会由kubelet自动重启,无需手动处理):
      kubectl drain <你的节点名称> --ignore-daemonsets --delete-emptydir-data
      
  2. 更新节点的PodCIDR配置

    • 编辑节点对象,修改spec.podCIDR字段为更大的网段(比如10.244.0.0/16,可提供65534个可用IP,完全满足需求):
      kubectl edit node <你的节点名称>
      

    在编辑器中找到spec.podCIDR行,替换为新的网段后保存退出。

  3. 调整kube-controller-manager的集群CIDR配置
    kube-controller-manager负责PodCIDR的分配,需要确保其--cluster-cidr参数与新网段一致:

    • 如果是kubeadm部署的集群,kube-controller-manager是静态Pod,配置文件位于/etc/kubernetes/manifests/kube-controller-manager.yaml,编辑该文件:
      vi /etc/kubernetes/manifests/kube-controller-manager.yaml
      

    找到command数组中的--cluster-cidr项,修改为新的网段(比如--cluster-cidr=10.244.0.0/16),保存后kubelet会自动重启kube-controller-manager Pod。

  4. 更新CNI插件的网络配置
    以常用的Flannel为例,需要同步修改其ConfigMap中的网段配置:

    • 编辑Flannel的ConfigMap:
      kubectl edit configmap kube-flannel-cfg -n kube-system
      

    找到Network字段,替换为新的网段(比如"Network": "10.244.0.0/16"),保存退出。

    • 重启Flannel Pod使配置生效:
      kubectl delete pod -n kube-system -l app=flannel
      
  5. 恢复节点可调度状态
    操作完成后,将节点重新标记为可调度:

    kubectl uncordon <你的节点名称>
    
  6. 验证配置

    • 检查节点的PodCIDR是否更新:
      kubectl get node <你的节点名称> -o jsonpath='{.spec.podCIDR}'
      
    • 部署一批测试Pod,确认能正常获取新网段的IP,且数量超过255后仍可创建。

注意事项

  • 原有Pod重启后会获取新网段的IP,若业务存在依赖Pod固定IP的场景,需提前做好兼容处理。
  • 操作过程中kube-apiserver等核心组件可能短暂重启,建议在业务低峰期执行。

内容的提问来源于stack exchange,提问作者flyingfox

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.18 19:04:56