千家信息网

k8s-service中iptable node port实现原理是什么

发表于:2025-12-03 作者:千家信息网编辑
千家信息网最后更新 2025年12月03日,本篇文章给大家分享的是有关k8s-service中iptable node port实现原理是什么,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来
千家信息网最后更新 2025年12月03日k8s-service中iptable node port实现原理是什么

本篇文章给大家分享的是有关k8s-service中iptable node port实现原理是什么,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。

在这里我们主要介绍node port的实现原理,当然我们这里的k8s容器网络还是基于iptable的,不是基于ipvs的。

部署的nginx-ingress-controller的service我们可以看到:

  • 这个service为node prot类型

  • cluster ip为10.254.188.128

  • 这个cluster ip关联了1个endpoints:10.1.27.2

  • host的8080端口映射到了cluster ip的80端口和pod的80端口

  • host的8443端口映射到了cluster ip的443端口和pod的443端口


kubectl describe service service-nginx-ingress -n kube-system

对node port类型的service来说,访问host的port就访问到了这个服务。所以从host网络角度来看,当host收到数据包的时候应该是进入host network namespace的PREROUTING chain中,我们查看host network namespace的PREROUTING chain。


iptables -nvL -t nat


根据规则,对于PREROUTING chain中,所有的流量都走到了KUBE-SERVICES这个target中。

查看KUBE-SERVICES target:


iptables -nvL -t nat | grep KUBE-SVC

在KUBE-SERVICES target中我们可以看到当访问nginx-ingress-controller-service在host上的8080或者8443port的时候,根据规则匹配到了KUBE-NODEPORTS这个target。

查看KUBE-NODEPORTS target:


iptables -nvL -t nat

在KUBE-NODEPORTS target中我们可以看到当访问8080和8443时:

  • KUBE-MARK-MASQ均会匹配

  • KUBE-SVC-QY5PTWKILTPBPDCE匹配8080端口访问

  • KUBE-SVC-SQYXO6PN7K55YEZU匹配8443端口访问

查看KUBE-MARK-MASQ target:

这里只是做了一下标记,并没有nat target。


iptables -nvL -t nat

查看KUBE-SVC-QY5PTWKILTPBPDCE和KUBE-SVC-SQYXO6PN7K55YEZU两个target:


iptables -nvL -t nat

我们可以看到

  • KUBE-SVC-QY5PTWKILTPBPDCE匹配进入KUBE-SEP-WM2TRROMQQXWNW4W

  • KUBE-SVC-SQYXO6PN7K55YEZU匹配进入KUBE-SEP-7XLQX5JZL77UC7RY

  • 看到这里细心的同学是不是觉得很熟悉,没错,这和上一篇文章里cluster ip类型的service在ipable里如出一辙。唯一不同的是上一篇文章里的例子nginx-application-service有2个endpoints,这里nginx-ingress-controller-service只有一个endpoint。所以会匹配到一个KUBE-SEP-XXX,如果有多个endpoints,那么一定会leverage内核随机模块random按百分比来均匀的匹配,从而实现对pord的访问负载均衡。

查看KUBE-SEP-WM2TRROMQQXWNW4W和KUBE-SEP-7XLQX5JZL77UC7RY两个target:


iptables -nvL -t nat

我们可以看到

  • 做了MASQ操作,当然这个应该是出站engress流量(限定了source ip),不是我们的入站ingress流量。

  • 做了DNAT操作,把原来的cluster ip给DANT转换成了pod的ip 10.1.27.2,把原来的port转换成了80或者443 port。

  • 根据iptable,经过PREROUTING chain发现DNAT之后的10.1.27.2不是本地的ip(肯定不是,因为这个ip是pod的ip,当然不会在host的network namespace里)。所以就走到了Forwarding chain中,根据host network namespace的路由表来决定下一跳地址。

所以综合上面的例子,对于ipable方式的k8s集群内node port类型的service总结为:

  • 在host netwok namespace的PREROUTING chain中会匹配KUBE-SERVICES target。

  • 在KUBE-SERVICES target会匹配KUBE-NODEPORTS target

  • 在KUBE-NODEPORTS target会根据prot来匹配KUBE-SVC-XXX target

以上就是k8s-service中iptable node port实现原理是什么,小编相信有部分知识点可能是我们日常工作会见到或用到的。希望你能通过这篇文章学到更多知识。更多详情敬请关注行业资讯频道。

端口 篇文章 类型 原理 流量 两个 例子 时候 更多 知识 网络 规则 上一 不同 实用 细心 均衡 如出一辙 内核 只是 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 紫光数通是做数据库的吗 幻塔服务器未准备好无法传送 神都夜行录没有服务器列表 曙光服务器怎么安全模式 pyqt 软件开发 node 图片服务器 派先生网络技术厦门有限公司 通达信片怎么加外部数据库 北京北信源软件开发怎么样 javaMC服务器有哪些 iPhone怎么关闭网络安全警告 利用java尝试连接数据库 广东软件开发企业排行榜 根跟服务器 网络安全工作机构和责任人 云管理服务器系统软件 公务员网络安全和信息化的区别 cf一进去就连不上服务器 金山区创新软件开发活动方案 直销式app软件开发多少钱 中文期刊数据库和期刊的关系 网络安全企业需要的资质 我的世界离线登录创建服务器 网络技术专业的就业情况 利用java尝试连接数据库 网络安全工作机构和责任人 海南金财网络技术有限公司中标 英雄联盟云顶手游服务器错误 宣汉县财政局网络安全与信息化 bim软件开发培训班
0