Kubernetes中的 iptables 规则介绍
#作者:邓伟
文章目录
- 一、Kubernetes 网络模型概述
- 二、iptables 基础知识
- 三、Kubernetes 中的 iptables 应用
- 四、查看和调试 iptables 规则
- 五、总结
在 Kubernetes 集群中,iptables 是一个核心组件, 用于实现服务发现和网络策略。iptables 通过一系列规则来控制数据包在网络中的流向,确保集群内部的服务能够正确地路由到相应的 Pods。本文将深入探讨 Kubernetes 中 iptables 的工作原理、配置方式及其重要性。
一、Kubernetes 网络模型概述
在 Kubernetes 中,每个 Pod 都被分配了一个独立的 IP 地址,并且这些 Pod 可以直接相互通信,而不需要进行 NAT 转换。为了支持这一模型,Kubernetes 使用了多种网络插件(如 Calico、Flannel 等)来管理网络,同时利用 iptables 来实现服务发现和服务负载均衡。
如 calico架构图:

二、iptables 基础知识
iptables 是 Linux 内核提供的一个用户空间工具,用于设置、维护和检查 IP 包过滤规则表。它主要包括以下几条链:
a.INPUT:处理目标是本机的数据包。
b.OUTPUT:处理从本机发出的数据包。
c.FORWARD:处理需要经过本机转发的数据包。
d.PREROUTING:在路由之前处理数据包。
e.POSTROUTING:在路由之后处理数据包。
每条链都包含若干规则,当数据包到达时会依次匹配这些规则。如果某条规则匹配成功,则执行该规则指定的动作(如 ACCEPT、DROP、REDIRECT 等)。
如图:

三、Kubernetes 中的 iptables 应用
- Service 和 ClusterIP
Kubernetes 中的 Service 提供了一种简单的方式来访问一组提供相同服务的 Pods。ClusterIP 类型的 Service 为后端 Pods 分配了一个虚拟 IP 地址(VIP),并使用 iptables 规则将流量导向实际的 Pods。
例如,假设有一个名为 my-service 的 Service,其 VIP 是 10.96.0.1,则会在节点上添加如下类似的 iptables 规则:
-A KUBE-SERVICES -d 10.96.0.1/32 -p tcp -m comment --comment "default/my-service: cluster IP" -m tcp --dport 80 -j KUBE-SVC-NWV5X2332I4OT4T3
这条规则表示所有发往 10.96.0.1:80 的 TCP 流量都会被重定向到 KUBE-SVC-NWV5X2332I4OT4T3 这个自定义链中进一步处理。实际场景如图:

- Endpoint 和 DNAT
接下来,在对应的 KUBE-SVC-NWV5X2332I4OT4T3 链中,iptables 会根据权重随机选择一个 Endpoint(即具体的 Pod IP),并通过 DNAT(Destination Network Address Translation)将其转换为目标 Pod 的 IP 地址:
-A KUBE-SVC-NWV5X2332I4OT4T3 -m statistic --mode random --probability 0.5000000000 -j KUBE-SEP-WNBA2IHDGP2BOBGZ
-A KUBE-SVC-NWV5X2332I4OT4T3 -j KUBE-SEP-X3P2623AGDHZCBTG
这里,KUBE-SEP-WNBA2IHDGP2BOBGZ 和 KUBE-SEP-X3P2623AGDHZCBTG 分别代表两个不同的 Endpoint,iptables 会以 50% 的概率选择其中一个作为目标地址。
- NodePort 和 ExternalTrafficPolicy
对于 NodePort 类型的 Service,除了上述 ClusterIP 的规则外,还会增加额外的规则以便从外部访问。此外,如果设置了 ExternalTrafficPolicy: Local,iptables 将只允许本地运行的 Pods 接收来自外部的流量,避免跨节点转发带来的性能损耗。
四、查看和调试 iptables 规则
你可以使用以下命令查看当前节点上的 iptables 规则:
iptables-save | grep KUBE
或者针对特定链进行查看:
iptables -t nat -L KUBE-SERVICES
若遇到问题,可以借助 tcpdump 等工具抓包分析,结合 iptables 日志(需开启相关选项)定位故障原因。
五、总结
iptables 在 Kubernetes 中扮演着至关重要的角色,它不仅实现了基本的服务发现功能,还支持复杂的网络策略控制。理解 iptables 的工作机制有助于我们更好地管理和优化 Kubernetes 集群的网络环境。随着 Kubernetes 不断演进,CNI 插件和其他网络解决方案也在不断改进,但 iptables 依然是理解和操作 Kubernetes 网络不可或缺的知识点。
相关文章:
Kubernetes中的 iptables 规则介绍
#作者:邓伟 文章目录 一、Kubernetes 网络模型概述二、iptables 基础知识三、Kubernetes 中的 iptables 应用四、查看和调试 iptables 规则五、总结 在 Kubernetes 集群中,iptables 是一个核心组件, 用于实现服务发现和网络策略。iptables 通…...
标量、向量、矩阵与张量:从维度理解数据结构的层次
在数学和计算机科学中,维度描述了数据结构的复杂性,而标量、向量、矩阵、张量则是不同维度的数据表示形式。它们的关系可以理解为从简单到复杂的扩展,以下是详细解析: 1. 标量(Scalar):0维数据 定义:单个数值,没有方向,只有大小。 维度:0维(无索引)。 示例: 温度…...
OpenCV 颜色空间:原理与操作指南
颜色空间原理 RGB 颜色空间 RGB(Red, Green, Blue)是最常见的颜色空间,它通过红、绿、蓝三种颜色通道的不同强度组合来表示颜色。在 OpenCV 中,RGB 图像的每个像素由三个 8 位无符号整数(0 - 255)分别表示…...
Windows 11下Git Bash执行cURL脚本400问题、CMD/PowerShell不能执行多行文本等问题记录及解决方案
问题 在Postman里可成功执行的POST请求: 找到Postman的Code 因为cURL基本上算是行业标准,所以Postman默认选中cURL,支持切换不同的开发语言: 点击上图右上角的复制按钮,得到cURL脚本。 Windows 11家庭版ÿ…...
Mysql配置文件My.cnf(my.ini)配置参数说明
一、my.cnf 配置文件路径:/etc/my.cnf,在调整了该文件内容后,需要重启mysql才可生效。 1、主要参数 basedir path # 使用给定目录作为根目录(安装目录)。 datadir path # 从给定目录读取数据库文件。 pid-file filename # 为mysq…...
利用LLMs准确预测旋转机械(如轴承)的剩余使用寿命(RUL)
研究背景 研究问题:如何准确预测旋转机械(如轴承)的剩余使用寿命(RUL),这对于设备可靠性和减少工业系统中的意外故障至关重要。研究难点:该问题的研究难点包括:训练和测试阶段数据分布不一致、长期RUL预测的泛化能力有限。相关工作:现有工作主要包括基于模型的方法、数…...
【RAG】RAG 系统的基本搭建流程(ES关键词检索示例)
RAG 系统的基本搭建流程 搭建过程: 文档加载,并按一定条件切割成片段将切割的文本片段灌入检索引擎封装检索接口构建调用流程:Query -> 检索 -> Prompt -> LLM -> 回复 1. 文档的加载与切割 # !pip install --upgrade openai…...
记录小白使用 Cursor 开发第一个微信小程序(二):创建项目、编译、预览、发布(250308)
文章目录 记录小白使用 Cursor 开发第一个微信小程序(二):创建项目、编译、预览、发布(250308)一、创建项目1.1 生成提示词1.2 生成代码 二、编译预览2.1 导入项目2.2 编译预览 三、发布3.1 在微信开发者工具进行上传3…...
游戏引擎学习第146天
音高变化使得对齐读取变得不可能,我们可以支持循环声音了。 我们今天的目标是完成之前一段时间所做的音频代码。这个项目并不依赖任何引擎或库,而是一个教育项目,目的是展示从头到尾运行一个游戏所需要的全部代码。无论你对什么方面感兴趣&a…...
nodejs关于后端服务开发的探究
前提 在当前的环境中关于web server的主流开发基本上都是java、php之类的,其中java spring系列基本上占了大头,而python之流也在奋起直追,但别忘了nodejs也是可以做这个服务的,只是位置有点尴尬,现在就来探究下nodejs…...
Java 大视界 -- Java 大数据在智能体育赛事运动员表现分析与训练优化中的应用(122)
💖亲爱的朋友们,热烈欢迎来到 青云交的博客!能与诸位在此相逢,我倍感荣幸。在这飞速更迭的时代,我们都渴望一方心灵净土,而 我的博客 正是这样温暖的所在。这里为你呈上趣味与实用兼具的知识,也…...
线性代数之矩阵特征值与特征向量的数值求解方法
文章目录 前言1. 幂迭代法(Power Iteration)幂法与反幂法求解矩阵特征值幂法求最大特征值编程实现补充说明 2. 逆幂迭代法(Inverse Iteration)移位反幂法 3. QR 算法(QR Algorithm)——稠密矩阵理论推导编程…...
SparkAi系统体验
DeepSeek-R1-671B大模型满血版私有化部署高可用教程-SparkAi系统集成图文教程 一、SparkAI是什么二、功能模块介绍系统快速体验 三、系统功能模块3.1 AI全模型支持/插件系统3.2 AI智能体应用3.3 AI专业绘画3.4 AI视频生成3.5 Dall-E2/E3/E4绘画3.6 智能思维导图生成3.7 AI绘画广…...
软件工程---构件
在软件工程中,构件是一个独立的、可复用的软件单元,它具有明确的功能、接口和行为,并且可以在不同的环境中加以集成和复用。构件的概念是软件架构和组件化开发的核心思想之一,其目的是促进软件系统的模块化、可维护性和可扩展性。…...
视频录像机视频通道是指什么
视频录像机的视频通道是指摄像机在监控矩阵或硬盘录像机设备上的视频输入的物理位置。 与摄像头数量关系:在视频监控系统中,有多少个摄像头就需要多少路视频通道,通道数量决定了视频录像机可接入摄像头的数量,一般硬盘录像机有4路…...
【Unity】 HTFramework框架(六十一)Project窗口文件夹锁定器
更新日期:2025年3月7日。 Github源码:[点我获取源码] Gitee源码:[点我获取源码] 索引 Project窗口文件夹锁定器框架文件夹锁定自定义文件夹锁定限制条件 Project窗口文件夹锁定器 在Project窗口中,文件夹锁定器能够为任何文件夹加…...
INFINI Labs 产品更新 | Easysearch 增加异步搜索等新特性
INFINI Labs 产品更新发布!此次更新,Easysearch 增加了新的功能和数据类型,包括 wildcard 数据类型、Point in time 搜索 API、异步搜索 API、数值和日期字段的 doc-values 搜索支持,Console 新增了日志查询功能。 INFINI Easyse…...
3.6c语言
#define _CRT_SECURE_NO_WARNINGS #include <math.h> #include <stdio.h> int main() {int sum 0,i,j;for (j 1; j < 1000; j){sum 0;for (i 1; i < j; i){if (j % i 0){sum i;} }if (sum j){printf("%d是完数\n", j);}}return 0; }#de…...
基于Kubernetes部署MySQL主从集群
以下是一个基于Kubernetes部署MySQL主从集群的详细YAML示例,包含StatefulSet、Service、ConfigMap和Secret等关键配置。MySQL主从集群需要至少1个主节点和多个从节点,这里使用 StatefulSet 初始化脚本 实现主从自动配置。 1. 创建 Namespace (可选) ap…...
Docker基础篇——Ubuntu下Docker安装
大家好我是木木,在当今快速发展的云计算与云原生时代,容器化技术蓬勃兴起,Docker 作为实现容器化的主流工具之一,为开发者和运维人员带来了极大的便捷 。下面我们一起进行Docker安装。 Docker的官方Ubuntu安装文档,如…...
postman接口请求中的 Raw是什么
前言 在现代的网络开发中,API 的使用已经成为数据交换的核心方式之一。然而,在与 API 打交道时,关于如何发送请求体(body)内容类型的问题常常困扰着开发者们,尤其是“raw”和“json”这两个术语之间的区别…...
物联网设备接入系统后如何查看硬件实时数据?
要在软件中实时查看硬件设备的信息,通常需要结合前后端技术来实现。以下是设计思路和实现步骤: 1. 系统架构设计 实时查看硬件设备信息的系统通常采用以下架构: 数据采集层: 硬件设备通过传感器采集数据,发送到InfluxDB。数据存…...
最新版本TOMCAT+IntelliJ IDEA+MAVEN项目创建(JAVAWEB)
前期所需: 1.apache-tomcat-10.1.18-windows-x64(tomcat 10.1.8版本或者差不多新的版本都可以) 2.IntelliJ idea 24年版本 或更高版本 3.已经配置好MAVEN了(一定先配置MAVEN再搞TOMCAT会事半功倍很多) 如果有没配置…...
《生成对抗网络:当AI学会自我博弈的艺术》
2023年DALLE 2生成的《太空歌剧院》斩获艺术比赛大奖时,我在画作前驻足了整整十分钟——那些光影的渐变、笔触的韵律,竟来自两个神经网络的博弈游戏。这让我想起AlphaGo自我对弈突破人类棋谱局限的往事,生成对抗网络(GANÿ…...
【Linux学习笔记】Linux基本指令分析和权限的概念
【Linux学习笔记】Linux基本指令分析和权限的概念 🔥个人主页:大白的编程日记 🔥专栏:Linux学习笔记 文章目录 【Linux学习笔记】Linux基本指令分析和权限的概念前言一. 指令的分析1.1 alias 指令1.2 grep 指令1.3 zip/unzip 指…...
PHP之常用函数
在你有别的编程语言的基础下,你想学习PHP,可能要了解的一些关于常用函数的信息。 获取时间 //获取时间 后面跟自定义时间格式 echo date("Y-m-d H:i:s");删除变量 unset($a);判断变量是否存在 var_dump(isset($a));判断变量是否为null va…...
Leetcode 刷题记录 05 —— 普通数组
本系列为笔者的 Leetcode 刷题记录,顺序为 Hot 100 题官方顺序,根据标签命名,记录笔者总结的做题思路,附部分代码解释和疑问解答。 目录 01 最大子数组和 方法一:动态规划(卡达尼算法) 方法…...
【LLM】kimi 1.5模型架构和训练流程
note 推出两个多模态模型,深度思考模型 long-CoT 对标 o1,通用模型 short-CoT 模型对标 gpt-4o。 文章目录 note一、kimi 1.5模型训练流程预训练SFT训练long-CoT SFTRL训练long2short 小结Reference 一、kimi 1.5模型训练流程 推出两个多模态模型&…...
deepseek在pycharm中的配置和简单应用
对于最常用的调试python脚本开发环境pycharm,如何接入deepseek是我们窥探ai代码编写的第一步,熟悉起来总没坏处。 1、官网安装pycharm社区版(免费),如果需要安装专业版,需要另外找破解码。 2、安装Ollama…...
第二十四天 学习分布式数据管理,了解如何在多个设备间共享数据
HarmonyOS分布式数据管理实战:轻松实现多设备数据共享 一、为什么需要分布式数据管理? 在万物互联的时代,我们的智能设备数量正在快速增长。根据IDC最新报告,2023年平均每个用户拥有6.2台智能设备。HarmonyOS的分布式能力正是为…...
