k8s中为什么需要br_netfilter与net.bridge.bridge-nf-call-iptables=1

br_netfilter模块的意义

br_netfiler作用:br_netfilter模块可以使 iptables 规则可以在 Linux Bridges 上面工作,用于将桥接的流量转发至iptables链

没有br_netfilter模块有什么影响

在基本使用过程中,如果没有加载br_netfilter模块,那么并不会影响不同node上的pod之间的通信,但是会影响同node内的pod之间通过service来通信

比如:

一个pod通过一个service访问其后端的pod,而这个service后端的pod刚好与这个发起请求的pod
在一个node上,那么此时如果没有br_netfilter模块,那么流量是不通的

为什么没有br_netfilter模块会影响service将流量转发给同一node上的pod

因为iptables是在三层的,而linux bridge是在二层的。当pod发出的流量经过service来转发后是到同一个node上的pod,那么此时两个pod都是桥接在cni网桥上的,那么就会直接通过网桥来传递流量,但是此时流量的处理就不会up call到三层的iptables规则,从而导致转发异常

net.bridge.bridge-nf-call-iptables=1的作用

启用 bridge-nf-call-iptables 这个内核参数 (置为 1),表示 bridge 设备在二层转发时也去调用 iptables 配置的三层规则 (包含 conntrack)

为什么需要net.bridge.bridge-nf-call-iptables=1

1、每个 Pod 的网卡都是 veth 设备,veth pair 的另一端连上宿主机上的网桥。
2、由于网桥是虚拟的二层设备,同节点的 Pod 之间通信直接走二层转发,跨节点通信才会经过宿主机 eth0。

Service 同节点通信问题:

不管是 iptables 还是 ipvs 转发模式,Kubernetes 中访问 Service 都会进行 DNAT,将原本访问 ClusterIP:Port 的数据包 DNAT 成 Service 的某个 Endpoint (PodIP:Port),然后内核将连接信息插入 conntrack 表以记录连接,目的端回包的时候内核从 conntrack 表匹配连接并反向 NAT,这样原路返回形成一个完整的连接链路:但是 Linux 网桥是一个虚拟的二层转发设备,而 iptables conntrack 是在三层上,所以如果直接访问同一网桥内的地址,就会直接走二层转发,不经过 conntrack:

此时导致问题:

1、Pod 访问 Service,目的 IP 是 Cluster IP,不是网桥内的地址,走三层转发,会被 DNAT 成 PodIP:Port。
2、如果 DNAT 后是转发到了同节点上的 Pod,目的 Pod 回包时发现目的 IP 在同一网桥上,就直接走二层转发了,没有调用 conntrack,导致回包时没有原路返回

由于没有原路返回,客户端与服务端的通信就不在一个 “频道” 上,不认为处在同一个连接,也就无法正常通信。常见的问题现象就是偶现 DNS 解析失败,当 coredns 所在节点上的 pod 解析 dns 时,dns 请求落到当前节点的 coredns pod 上时,就可能发生这个问题。

如何诊断br_netfiler与net.bridge.bridge-nf-call-iptables缺失的问题

1、检查br_netfilter是否挂载

lsmod | grep br_netfilter

2、检查net.bridge.bridge-nf-call-iptables

# 检查 bridge netfilter 是否开启
sysctl net.bridge.bridge-nf-call-iptables# 0 表示未开启
net.bridge.bridge-nf-call-iptables = 0

如何修复br_netfiler与net.bridge.bridge-nf-call-iptables缺失的问题

1、修复br_netfiler缺失

echo "br_netfilter" >> /etc/modules-load.d/modules.conf

2、修复net.bridge.bridge-nf-call-iptables缺失

sysctl -w net.bridge.bridge-nf-call-iptables=1
echo net.bridge.bridge-nf-call-iptables=1 >> /etc/sysconf.d/10-bridge-nf-call-iptables.conf
sysctl -p

【博客515】k8s中为什么需要br_netfilter与net.bridge.bridge-nf-call-iptables=1相关推荐

  1. [转载]如何让上传到新浪博客和相册中的照片更大更清晰_我是亲民_新浪博客

    原文地址:如何让上传到新浪博客和相册中的照片更大更清晰作者:李永宏 如何让上传到新浪博客和相册中的照片更大更清晰 图.文 李永宏 以前有朋友问我,怎么你上传到博客里的照片看起来不是很清晰,你用什么相机 ...

  2. 如何在CSDN博客自定义栏目中添加“给我写信”

    在"自定义栏目"中添加"连接"(将自己的微博,QQ空间和CSDN博客关联起来)很多人都做过.但是添加"给我写信"这个功能,用的好像不太多.此 ...

  3. 寫博客過程中遇到的問題

    科技還不夠方便,即便是現在,互聯網發展這麼多年了,寫個博客,非常不順手. 1.漢字跟代碼混排,此時中英文標點符號切換頻繁,如何應付? 2.漢字跟英文混排,選用哪個字體最好?漢字我鐘愛PMingLiu, ...

  4. 源码:我的关于NLP的博客(持续更新中...)

    决定上传我平时写的部分源码,不过暂时只打算上传有关NLP的部分,之后随着博客的不断更新,我也会不断更新这篇博客,你可以将这片博客放在你的收藏夹里,这样方便你的浏览 1.关于NLPIR的部分 20160 ...

  5. 如何在博客等文章中添加带有滚动条的文本框

    在博客中添加带滚动条的文本框能大大提高文章的可读性. 1. 以csdn博客为例 我们在csdn发布博客的时候会在编辑区看到一个源代码的工具. 注:各类博客产品是不一样的,有的可能是个复选框 2. 我们 ...

  6. GitHub 优秀的 Android 开源项目 淘宝技术牛p博客整理开发中最常用的GitHub上 优秀的 Android 开源项目整理(精品)...

    原文地址为http://www.trinea.cn/android/android-open-source-projects-view/,作者Trinea 主要介绍那些不错个性化的View,包括Lis ...

  7. 使用Markdown语言在博客的文章中添加视频

    注:此博文来自转载, 在此对原作者表示感谢. 不论你是用的是什么博客系统,WP也好,Typecho也罢,甚至是静态博客,就像我的博客,绕不开的是两种书写语言,一种称之为富文本,一种叫做Markdown ...

  8. 【[第一次写博客]Uda课程中的P控制器实现说明】

    文章目录 前言 一.博客目的? 二.Uda课程中PID控制算法的Python实现 1.引入库 2.class和运行 总结 前言 提示:这里可以添加本文要记录的大概内容: 面试官如果正在面我,请让我过吧 ...

  9. iOS遇到的开发框架和优质博客,不断更新中

    少年,既然你打开了,你往下翻,中间优质博客你看了肯定会收藏的,历年来收藏的点点滴滴 非常牛B的iOS实现源码点击打开链接 1.iRate   评分的弹窗    https://github.com/n ...

最新文章

  1. 记录一次maven jar包冲突的排查过程
  2. H3C无线 AC网关式部署无线开局(WEB版)
  3. Readyfor4GB帮你的32位Win7用4G内存
  4. 使用JS动态生成表格数据和分页显示
  5. 推荐系统炼丹笔记:大规模推荐Deep Retrieval
  6. 九十三、Python使用百度云接口API实现截图,文字识别和语音合成
  7. Xamarin Live Player Preview 2: 连续运行和调试应用程序
  8. Java Socket编程----通信是这样炼成的
  9. SQL预编译防注入小测试
  10. Java枚举的内容可以使用map的方式
  11. 软考信息安全必备考点
  12. jdk1.8源码Thread与Runnable区别
  13. 和我一起学Windows Workflow Foundation(1)-----创建和调试一个WF实例
  14. 高等数学 常用数学公式
  15. js 实现图片上传
  16. 在文档中怎么画横线实线_怎样在一个word文档中添加一根实线,用作分开不同
  17. 关于使用Kmeans函数RuntimeWarning: Explicit initial center position passed: performing only one init in KMe
  18. 如何把公共WiFi据为己有,修改别人的路由器WiFi密码,作者只支持技术,不支持后果
  19. 【伪大数据】对QQ空间指定好友2017年说说数据的分析
  20. 知识图谱是什么,知识图谱有什么特点?

热门文章

  1. 创意在 2021 年巴黎时装周上亮相
  2. C++OpenGL画一个3d火柴人
  3. node中使用superagent、cheerio进行爬虫
  4. 视频剪辑培训班要学多久 视频剪辑的培训班有用吗
  5. 《机器人操作系统ROS原理与应用》——1.3 智能机器人的分类
  6. 看看自媒体的真实收入,太难了,辞职做自媒体可以月入10W吗?
  7. 使用Docker运行Nginx
  8. 什么时候你可以学一下Haskell
  9. spring data rest 不隐藏主键id
  10. swagger2接口参数排序/position失效的问题