k8s-master初始化网段
kubeadm init \
--apiserver-advertise-address=192.168.1.50 \
--image-repository=registry.cn-hangzhou.aliyuncs.com/google_containers \
--kubernetes-version=v1.28.2 \
--service-cidr=10.96.0.0/12 \
--pod-network-cidr=10.244.0.0/16
# 🔍 核心拆解:这两个虚拟网段到底是什么?
在 K8s 的世界里,有两套并行的虚拟网络:Pod 网络(给蚕茧用的)和 Service 网络(给快递驿站用的)。
# 1. --pod-network-cidr=10.244.0.0/16(Pod 虚拟网段)
- 这是什么: 这是你集群里所有 Pod(容器)实际被分配到的 IP 地址池。比如你的 HR 助手跑起来后,它拿到的真实内网 IP 可能是
10.244.1.5,技术助手拿到的是10.244.2.12。 - 为什么要用
10.244.0.0/16? 因为我们后续要部署的 Flannel 网络插件,其官方默认的硬编码配置就是这个网段。 - 能自定义吗? 可以。 比如你改成
10.100.0.0/16,但如果你改了,等一下部署 Flannel 网络插件的kube-flannel.yml文件时,你就必须进去把里面的10.244.0.0/16也改成10.100.0.0/16,两边必须对齐,否则 Pod 无法正常分配网络。
# 2. --service-cidr=10.96.0.0/12(Service 虚拟网段 / 簇 IP)
- 这是什么: 这是 K8s 内部的 Service(服务负载均衡) 对象的 IP 范围。
- 它有什么用? 生产环境中,Pod 的生命周期很短(随时可能死掉换新 IP)。为了让外界稳定访问,K8s 引入了 Service。当你给一组 Pod 创建一个 Service 时,K8s 会在这个
10.96.x.x网段里分一个固定 IP(比如10.96.0.10)给这个 Service。 - 致命细节: 这个网段的 IP 是完全虚拟的,宿主机的网络根本ping不通它! 它纯粹是靠每个节点上的
kube-proxy组件通过修改 iptables/IPVS 规则,在内核层做的一层“幻觉(NAT 转发)”。 - 能自定义吗? 可以。 你只要保证它跟 Pod 网段不冲突,改成任何私有网段(如
172.16.0.0/16)都行。
# 🗺️ 形象比喻:K8s 里的“寄件人”与“驿站”
如果把你的 K8s 集群比作一个大型科技园区:
- 宿主机物理内网(你的虚拟机 IP): 是园区里每栋实体办公楼的门牌号(如 A 栋、B 栋)。
- Pod 网段(
10.244.0.0/16): 是办公楼里面每一个具体的工位号。每个工位都有一个独立、真实的电话(IP),工位之间(Pod 之间)可以直接互相打电话通气。 - Service 网段(
10.96.0.0/12): 是办公楼一楼的综合前台/寄件驿站。这个前台只存在于楼层向导上,外面的人找不到这个“工位”,但只要你找前台(访问 Service IP),前台就会自动把你的请求分发给坐在后面工位上的某个员工(Pod)。
# 网络网段划分原则
# 原则一:三网绝对互斥(不能重叠)
在设计 K8s 集群时,以下三个网段绝对不能有任何交集,否则会导致严重的路由冲突,流量直接在内核里“鬼打墙”:
- Node 物理网段(你虚拟机的真实 IP 段,比如
192.168.1.0/24) - Pod 虚拟网段(
--pod-network-cidr) - Service 虚拟网段(
--service-cidr)
# 原则二:根据业务体量算好掩码(CIDR)
- 为什么 Service 默认给的是
/12,而 Pod 给的是/16? - 面试加分回答: “
/16意味着可以容纳 $2^{16}-2 = 65534$ 个 IP 地址。在 Flannel 网络模型中,它会为每个加入集群的 Worker 节点默认切分一个/24的子网(即每个子节点最多能跑 254 个 Pod)。我们在规划生产环境时,会根据预期加入的最大节点数和单节点 Pod 密度,来倒推并自定义--pod-network-cidr的掩码大小,防止未来业务扩容时 IP 地址枯竭。”
# 原则三:禁止与公司现有内网冲突
如果你把 K8s 的 Pod 网段自定义成了 192.168.0.0/16,而你们公司办公区的 Wi-Fi 刚好也是 192.168.x.x,那就会导致你的 K8s 容器在试图访问公司内部系统时,误以为是访问集群内部的 Pod,导致网络彻底断开。所以生产环境一般会选一个公司绝对没人用的冷门私有网段。
上次更新: 2026-06-13 17:29:54