HelloCoder HelloCoder
首页
《Java小白求职之路》
《小白学Java》
计算机毕设
  • 一些免费计算机资源
  • 脚手架工具
  • 《从0到1学习Java多线程》
  • 《从0到1搭建服务器》
  • 《可观测和监控》
  • 《k8s学习心得》
随笔
关于作者
首页
《Java小白求职之路》
《小白学Java》
计算机毕设
  • 一些免费计算机资源
  • 脚手架工具
  • 《从0到1学习Java多线程》
  • 《从0到1搭建服务器》
  • 《可观测和监控》
  • 《k8s学习心得》
随笔
关于作者
  • 《从0到1学习Java多线程》

  • 《从0到1搭建服务器》

  • 可观测和监控

  • 玩转IDEA

  • 03-RPC

  • 04-Spring源码

  • 05-《Java日志框架》

  • Flyme公有云平台建设
  • k8s

    • (一)线程是什么
    • 常见疑问
    • 运行一个k8s部署的应用
    • 网络组件
    • docker compose和k8s deployment文件
    • dokcer的网卡
    • k8s-master初始化网段
    • Kubernetes API Service
    • k8s的DNS
    • 什么是 Sandbox
    • 如何访问pod
    • 常见命令
  • 专栏
  • k8s
#ks-master #初始化网段
HaC
2026-06-13
目录

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 集群时,以下三个网段绝对不能有任何交集,否则会导致严重的路由冲突,流量直接在内核里“鬼打墙”:

  1. Node 物理网段(你虚拟机的真实 IP 段,比如 192.168.1.0/24)
  2. Pod 虚拟网段(--pod-network-cidr)
  3. 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,导致网络彻底断开。所以生产环境一般会选一个公司绝对没人用的冷门私有网段。

阅读全文
×

(为防止恶意爬虫)
扫码或搜索:HelloCoder
发送:290992
即可永久解锁本站全部文章

解锁
#ks-master#初始化网段
上次更新: 2026-06-13 17:29:54
最近更新
01
(一)线程是什么
06-14
02
MySQL支持的锁有哪些
06-13
03
HTTP 是不保存状态的协议, 如何保存用户状态
06-13
更多文章>
Theme by Vdoing | Copyright © 2020-2026 HaC
  • 跟随系统
  • 浅色模式
  • 深色模式
  • 阅读模式