基于Kubeadm安装Kubernetes时自定义IP范围的方法

秋涛姑娘_1691

秋涛姑娘_1691

2026-08-26

643人浏览

原创

kubeadm init不能仅靠--pod-network-cidr指定网段,必须通过配置文件显式定义networking.podsubnet和servicesubnet,且需与所选cni插件(如calico、flannel)的配置严格一致,否则导致网络插件初始化失败或集群异常。

基于kubeadm安装kubernetes时自定义ip范围的方法

不能直接在 kubeadm init 命令行里指定 Pod 或 Service 网段,必须通过配置文件传入 podSubnet 和 serviceSubnet —— 否则默认用 10.96.0.0/12(Service)和 10.244.0.0/16(Flannel 默认),但这两个值不通用,且与 Calico、Cilium 等 CNI 插件的期望常有冲突。

networking 字段必须显式写进 ClusterConfiguration

很多人误以为加个 --pod-network-cidr 参数就够了,其实从 kubeadm v1.19+ 开始,该参数仅用于向 kube-controller-manager 透传,**不会影响 etcd 中存储的集群网络配置**,也不被 CNI 插件读取。真正起效的是配置文件中 networking 下的字段:

  • podSubnet:供 CNI 插件(如 Calico、Flannel)初始化时对齐 IPAM,必须和你后续部署的 CNI 配置一致
  • serviceSubnet:决定 ClusterIP 分配范围,修改后会影响所有 Service 的 VIP 地址空间
  • dnsDomain:通常保持 cluster.local,改了需同步更新 CoreDNS ConfigMap

示例片段(kubeadm-config.yaml):

networking:
  podSubnet: 172.16.0.0/12
  serviceSubnet: 10.103.0.0/16
  dnsDomain: cluster.local

注意:podSubnet 值必须和你选用的 CNI 插件 YAML 中的 cidr 或 ipam.subnet 完全一致,否则节点上 calico-node 或 flanneld 启动失败,报错类似 failed to configure default pool: invalid CIDR。

不同 CNI 对 podSubnet 的解析逻辑差异很大

不是所有 CNI 都无条件信任 kubeadm 配置里的 podSubnet,它们加载方式不同:

Kubernetes Network Policy Generator
Kubernetes Network Policy Generator

使用加权评分卡在12项标准上评估和比较隐私解决方案供应商。适用于选择隐私管理软件、比较数据保护方案等场景。

下载
  • Flannel:只认自己 YAML 里的 net-conf.json 中的 Network 字段,kubeadm 的 podSubnet 仅作校验,不覆盖
  • Calico:会读取 kubeadm 配置生成 installation CR,自动注入 spec.calicoNetwork.ipPools[0].cidr,前提是使用官方 manifest(如 tigera-operator)
  • Cilium:完全忽略 kubeadm 的 podSubnet,必须在 Helm values 或 CiliumClusterwideNetworkPolicy 中显式设 ipam.mode=cluster-pool + clusterPoolIPv4CIDR

所以别指望写一次 podSubnet 就全局生效。部署前务必查清你选的 CNI 文档里“如何指定 Pod 网段”那一节,再反推 kubeadm 配置要不要写、怎么写。

kubeadm init 失败后改 subnet 不能只改配置文件

如果 kubeadm init 已执行过但失败(比如因网段冲突卡在 etcd 启动),不能简单改完配置重跑 —— 因为 /etc/kubernetes/manifests/etcd.yaml 里已经固化了初始 --advertise-client-urls 和数据目录,且 etcd 数据库中存有旧的 network config。

  • 必须先运行 kubeadm reset -f 清理残留(包括 /var/lib/etcd)
  • 确认 swapoff -a、iptables -P FORWARD ACCEPT 等前置项仍有效(重置后可能恢复)
  • 若之前手动改过 /etc/cni/net.d/ 下的配置,要一并删掉,否则 CNI 初始化时会跳过自动生成逻辑

常见症状:节点 Ready 但 kubectl get nodes 显示 NotReady,kubectl describe node 报 NetworkPluginNotReady: cni plugin not initialized,大概率是 CNI 配置和 kubeadm 声明的网段对不上,或 etcd 里残留旧状态。

最易被忽略的一点:kubeadm 不验证 podSubnet 和 serviceSubnet 是否重叠。如果你填了 podSubnet: 10.0.0.0/8 和 serviceSubnet: 10.96.0.0/12,它们实际包含关系,Kubernetes 不报错,但 CoreDNS、kube-proxy 的 iptables 规则会混乱,导致 DNS 解析失败或 ClusterIP 访问异常。务必人工校验两个 CIDR 无交集。

相关文章

PHP速学视频免费教程(入门到精通)
PHP速学视频免费教程(入门到精通)

PHP怎么学习?PHP怎么入门?PHP在哪学?PHP怎么学才快?不用担心,这里为大家提供了PHP速学教程(入门到精通),有需要的小伙伴保存下载就能学习啦!

下载

本站声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

相关专题

更多
Golang云原生微服务Kubernetes_Golang怎么集成Kubernetes开发云原生服务
Golang云原生微服务Kubernetes_Golang怎么集成Kubernetes开发云原生服务

Golang云原生微服务Kubernetes (K8s) 是指 使用 Go 语言(Golang)编写的云原生微服务,并利用 Kubernetes 平台进行容器化部署、自动化管理、弹性伸缩和高效编排的一整套现代应用架构方案。

2025.12.22

116

5

Go云原生应用与Kubernetes服务部署实战
Go云原生应用与Kubernetes服务部署实战

本专题围绕 Go 语言在云原生环境中的应用展开,讲解容器化部署、Kubernetes 编排、服务发现、健康检查与弹性扩缩容机制。通过真实云端案例,帮助开发者构建可扩展的云原生微服务架构。

2026.06.29

168

19

FrankenPHP集成Laravel详细教程
FrankenPHP集成Laravel详细教程

本专题提供FrankenPHP集成Laravel的详细配置指南,全面解析运行原理、开发环境搭建、Caddyfile配置、Octane工作模式、数据库连接、队列任务、定时任务和生产环境优化,解决部署过程中常见的报错与兼容性问题。

2026.10.08

40

20

LLVM自定义Pass怎么写
LLVM自定义Pass怎么写

本专题聚焦LLVM自定义Pass开发,整理Pass类结构、run()方法、PreservedAnalyses、CMake构建、插件注册、-load-pass-plugin加载和测试用例编写流程。

2026.09.30

140

10

LLVM RISC-V参数配置教程
LLVM RISC-V参数配置教程

本专题介绍LLVM对RISC-V基础ISA和扩展的支持方式,涵盖RV32、RV64、标准扩展、实验性扩展、厂商扩展、-menable-experimental-extensions和版本差异。

2026.09.30

140

14

LLVM IR中间表示入门指南
LLVM IR中间表示入门指南

本专题整理LLVM IR的核心概念,包括中间表示作用、模块结构、函数、基本块、SSA形式、类型系统和常见语法,帮助新手理解LLVM编译流程中的关键层。

2026.09.30

100

12

PDF转图片方法
PDF转图片方法

需要把 PDF 页面用于上传、预览、分享或图片归档时,PDF 转图片方法专题整理 JPG/PNG 格式选择、逐页导出、清晰度设置、批量下载和结果检查等流程,帮助用户稳定完成 PDF 图片化处理。

2026.09.30

100

26

PixTV AI视频生成与无限画布创作
PixTV AI视频生成与无限画布创作

PixTV专题整理AI视频与视觉内容创作相关功能使用教程,涵盖AI生图、视频生成、无限画布、多模型创作、素材管理、声音音乐及视频剪辑等功能,帮助用户快速掌握PixTV从创意到成片的完整制作方法。

2026.09.29

120

15

Buffalo框架数据库开发全教程
Buffalo框架数据库开发全教程

本专题围绕Buffalo框架数据库开发,讲解database.yml多环境配置、soda与fizz迁移生成回滚、模型结构体标签、增删改查与条件查询、一对多与多对多关联、数据校验、回调钩子、事务处理及原生SQL执行能力。

2026.09.23

320

15

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
Kubernetes官方教程手册
Kubernetes官方教程手册

共0课时 | 0人学习

Kubernetes官方中文文档
Kubernetes官方中文文档

共0课时 | 0人学习