Kubernetes Pod 网络与 Service 网络全解析

文章目录

Kubernetes Pod 网络与 Service 网络全解析

一、前言:

很久没有写博客了。过去这一段时间里,忙于工作和生活的各种琐事,写作这件事被我无意间搁置了。如今重新打开编辑器,熟悉的界面让我有些感慨。是时候重新开始记录、思考、分享了。

很多同学在使用 Kubernetes 时,常常会对网络机制产生疑惑:

为什么每个 Pod 都有独立 IP?不同节点的 Pod 是如何互通的?Service 又是如何实现流量转发与负载均衡的?今天这篇文章就来聊聊这部分"老生常谈但又绕不开"的内容------

Kubernetes 中 Pod 与 Service 的网络分配与配置原理,带你理清其中的逻辑与实现方式。

二、结构图

三、Pod 网络详解

如上图所示:集群网络配置了Cluster_CIDR: 10.244.0.0/18,在集群中他是如何展开的呢?

首先了解所配置的网络可用 IP 数,如图:

可分配的子网数量

  • 为什么是 (32-18)?

    一个 IPv4 地址共有 32 位(二进制位),例如:

    ini 复制代码
    192.168.0.1 = 11000000.10101000.00000000.00000001

    IP 地址通常用 "网络位 + 主机位" 来区分:

    • 网络位(Network bits):用于标识子网。
    • 主机位(Host bits):用于标识该子网中的具体主机(如 Pod、VM 等)。
  • /18 是什么意思?

    ini 复制代码
    10.244.0.0/18

    这表示:

    • 前 18 位用于「网络标识」。
    • 剩下的 32 - 18 = 14 位用于「主机标识」。

也就是说,这个网段里可以分配的 IP 数量,取决于这 14 位能组合出多少种不同的主机地址。由此可见可以使用 16384总地址数量。

可以支持的节点数量

算式:

ini 复制代码
{2}^{(32-24)}=256 -> 每个子网的地址数量(每个节点可分配的 IP 数)

疑惑:其中的24又是哪里来的?

解惑:整体概览中的 Kube-Controller-Manager的参数:--node-cidr-mask-size init32 (群集中节点cidr的掩码大小。 IPv4的默认值为24,IPv6的默认值为64),所以使用的24就是这么来的。每个节点上的 CNI(例如 Flannel、Calico 等)会为自己分配一个 小网段,例如:

ini 复制代码
10.244.0.0/24
10.244.1.0/24
10.244.2.0/24
......

每个 /24 子网包含:

复制代码
2^(32 - 24) = 2^8 = 256 个 IP

那么根据计算结果得出,该集群最大支持 64 个节点,换句话说就是:

  • 整个集群的 Pod 地址池是 /18。
  • 每个节点分配一个 /24 子网。
  • 理论上最多可以容纳 64 (10.244.0.0/24--10.244.63.0/24)个节点(每节点最多 256 个 Pod IP)。

POD IP 如何分配

经过以上的分析已经知道么个节点可以在下列中分配一个网段:

ini 复制代码
10.244.0.0/24
10.244.1.0/24
10.244.2.0/24
......

那么Node节点上的Pod IP为什么是10.244.xx.0/26的?接下来咱们一起看下!

POD CICD已经分配的情况下,会通过Kube-Calico-Manager接口负责为每个Pod生成IP,该组件的默认配置--CALICO_IPV4POOL_BLOCK_SIZE String决定了默认的子网掩码(默认:26),所以生成的 Pod IPS10.244.xx.0/26

POD跨节点通信管理

如图展示,在每个 Node 节点分配了 10.244.(0-63).0/24的池子,又通过 Kube-Calico-Manager 生成了 POD IPS 的更小池子,当 POD 启动并且分配了 IP 时会在 Node 节点生成路由规则(通过BGP 广播

或IP-in-IP 隧道),例如:

ini 复制代码
10.244.xx.xx/26 <下一跳node-ip-address> <出口设备> <路由协议> onlink
10.244.xx.xx/26 <下一跳node-ip-address> <出口设备> <路由协议> onlink
10.244.xx.xx/26 <下一跳node-ip-address> <出口设备> <路由协议> onlink

根据路由规则就实现了跨节点的 POD 通信。

四、总结

本文全面介绍了 KubernetesPod 网络的生成、配置、分发与通信机制。

通过对网络位划分、Block 分配、节点 Pod 容量等细节的讲解,相信大家对 Pod 网络已经有了系统性的认知。

下一篇文章将重点解析 Service 网络的规则与实现原理,敬请关注。

相关推荐
念恒123061 小时前
网络基础
linux·网络·c++
白山云北诗1 小时前
漏洞扫描+渗透测试:从资产摸底到风险验证,完成二次安全收口
网络·安全·web安全·渗透测试·漏洞扫描·ddos防护·cc防护
爱研究的小梁1 小时前
乾元通聚合路由及管理平台支持全面适配信创
网络·人工智能·信息与通信
KaMeidebaby2 小时前
卡梅德生物技术快报|bli亲和力检测gst:告别批量跑胶:BLI实时酶切监测技术加速GST融合蛋白下游流程优化
前端·网络·数据库·人工智能·算法
千维百策6662 小时前
运用 SRE 原则降低生产事故影响:CRE 实战经验与可靠性优化方法
网络·数据库·人工智能
三川6982 小时前
深入浅出SSD 08:PCIe的介绍
网络
2601_963282772 小时前
极寒专网技术拆解:黑龙江零下 40℃场景数字对讲组网全方案|黑龙江移远科技寒地通信底层技术解析
运维·网络·人工智能·科技
易连EDI—EasyLink3 小时前
电动汽车供应链协同新范式:蔚来(NIO)企业级EDI平台建设实践
网络·人工智能·edi·nio·as2
鸢尾掠地平4 小时前
STP、RSTP、MSTP的详细讲解
网络