前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >为什么 kubernetes 环境要求开启 bridge-nf-call-iptables ?

为什么 kubernetes 环境要求开启 bridge-nf-call-iptables ?

原创
作者头像
imroc
发布于 2021-05-24 12:50:49
发布于 2021-05-24 12:50:49
3.8K0
举报

本文摘自 kubernetes 学习笔记

背景

Kubernetes 环境中,很多时候都要求节点内核参数开启 bridge-nf-call-iptables:

代码语言:txt
AI代码解释
复制
sysctl -w net.bridge.bridge-nf-call-iptables=1

参考官方文档 Network Plugin Requirements

如果不开启或中途因某些操作导致参数被关闭了,就可能造成一些奇奇怪怪的网络问题,排查起来非常麻烦。

为什么要开启呢?本文就来跟你详细掰扯下。

基于网桥的容器网络

Kubernetes 集群网络有很多种实现,有很大一部分都用到了 Linux 网桥:

  • 每个 Pod 的网卡都是 veth 设备,veth pair 的另一端连上宿主机上的网桥。
  • 由于网桥是虚拟的二层设备,同节点的 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 上时,就可能发生这个问题。

开启 bridge-nf-call-iptables

如果 Kubernetes 环境的网络链路中走了 bridge 就可能遇到上述 Service 同节点通信问题,而 Kubernetes 很多网络实现都用到了 bridge。

启用 bridge-nf-call-iptables 这个内核参数 (置为 1),表示 bridge 设备在二层转发时也去调用 iptables 配置的三层规则 (包含 conntrack),所以开启这个参数就能够解决上述 Service 同节点通信问题,这也是为什么在 Kubernetes 环境中,大多都要求开启 bridge-nf-call-iptables 的原因。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
暂无评论
推荐阅读
如何在虚拟机上安装win10系统_虚拟机安装系统的步骤
有些用户为了在自己的win10系统上检测一些软件,通常情况会给自己安装一个xp系统虚拟机,这样也能避免测试程序对于主系统的损害,可是win10安装xp虚拟机怎么做呢?接下来小编就带大家来了解一下win10安装xp虚拟机详细步骤。
全栈程序员站长
2022/09/22
2K0
如何在虚拟机上安装win10系统_虚拟机安装系统的步骤
vmware中安装win10_虚拟机安装win10教程
因为我们这是在虚拟机中创建,所以我们选择第二项,“为另一台电脑创建安装介质(U盘,DVD或ISO文件)”
全栈程序员站长
2022/11/14
1K0
vmware中安装win10_虚拟机安装win10教程
EVE-NG模拟器教程(二)——模拟器安装
上一篇文章已经介绍了 如何获取 EVE-NG 模拟器安装包,同时我们知道 EVS-NG 提供两种类型的安装包,一种是 OVF 包 (导入虚拟化平台使用,个人学习用),另一种是 ISO 镜像文件 (直接安装在物理机上使用,性能高),我们可以根据不同需要选择不同类型的安装包,这里我们已经把最新的两种类型的安装包都准备好了,如下,EVE-COMM-VM-112为 OVF包,EVE-20171007为 ISO镜像文件:
全栈程序员站长
2022/09/02
4.9K1
vmware虚拟机安装windows10_虚拟机15安装教程win7
1.去下载win7原装镜像,推荐去官方网站下载:https://msdn.itellyou.cn/
全栈程序员站长
2022/11/10
1.1K0
vmware虚拟机安装windows10_虚拟机15安装教程win7
VMware虚拟机安装黑苹果MacOS Mojave系统详细教程
最近遇到一个H5页面的 iPhone X 刘海兼容问题。查到一个 XCode 编辑器,可以模拟 iPhone X 环境运行。 然后发现,XCode 是专门为苹果的 MacOS 系统设计的一款开发工具。没办法,只能安装一个黑苹果 MacOS 系统,先试试效果了。
德顺
2019/11/13
15K3
VMware虚拟机安装黑苹果MacOS Mojave系统详细教程
vm虚拟机安装win11_虚拟机15.5安装教程win7
发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/170713.html原文链接:https://javaforall.cn
全栈程序员站长
2022/09/22
9630
vm虚拟机安装win11_虚拟机15.5安装教程win7
如何在win10上安装ubuntu虚拟机-图文详细教程「建议收藏」
本文将在win10上安装ubuntu虚拟机的步骤一步步记录了下来~希望对大家有帮助 方法大概是先装一个虚拟化软件(virtualbox),然后在这个软件上新增一台虚拟电脑机,这样我们就等于有了一台没有装系统的电脑。然后再将我们已经下载好的iso结尾的镜像文件(ubuntu)作为启动盘,给这个虚拟电脑装上系统,就完事了~
全栈程序员站长
2022/07/22
4.2K0
如何在win10上安装ubuntu虚拟机-图文详细教程「建议收藏」
如何在vSphere Client的虚拟机上安装Centos6.7操作系统
前几天给小伙伴们介绍了Centos对应版本的下载教程以及如何在vSphere Client上如何创建虚拟机,感兴趣的童鞋们可以点击进去看看~~
Python进阶者
2021/08/24
1.4K0
Linux笔记(一):CentOS-7安装
(一)   安装环境 VMware® Workstation 12 Pro,安装到物理机的话还需要做个U盘启动盘 (二)   下载 https://www.centos.org/download/
free赖权华
2018/07/04
1.4K0
虚拟机安装xp要多久_虚拟机怎样安装系统
本文将对虚拟机上安装XP操作系统进行详细的图文解说,并对安装过程遇到的一些问题进行解答。希望能达到举一反三的目的。
全栈程序员站长
2022/09/22
2.1K0
虚拟机安装xp要多久_虚拟机怎样安装系统
在虚拟机安装ubuntu步骤(安装虚拟机的步骤)
VMware Workstation15 官方下载地址: https://www.vmware.com/cn/products/workstation-pro/workstation-pro-evaluation.html Ubuntu18.04LTS镜像 官方下载地址:https://ubuntu.com/download/desktop
全栈程序员站长
2022/07/28
2.5K0
在虚拟机安装ubuntu步骤(安装虚拟机的步骤)
【虚拟机】windows下虚拟机及虚拟机上ubuntu系统的安装
然后,再双击里面的“VMware-player-15.5.1-15018445.exe”,如上图所示,进行vmware workstation的安装,出现如下界面:
SarPro
2024/06/14
4780
【虚拟机】windows下虚拟机及虚拟机上ubuntu系统的安装
我就是要在Win10中运行Win7!!!
很多时候我们使用的软件很“矫情”,有的只支持Windows10,有的对Windows7兼容性最好,尤其是课代表这种喜欢折腾,经常和各种软件打交道的人来说,只有一个系统往往会有一定的局限性,装双系统甚至是多系统又麻烦又容易出问题,而且也总不能来回关机开机对吧?
课代表
2018/11/23
3.4K0
Linux系统安装,教你安装一个属于自己的Linux系统
肯定有人和我一样,很早就听说过Linux的这个词,但是又没接触过。然后随手百度一下看着满满的命令惊呆了,不知道从哪里开始学习。这种状况一直维持到我面试的时候,我不怕跟你们说,我拿着写着“熟悉Linux的系统”的简历去面试,其实当时的我都没有了解Linux的到底是什么!我相信大家肯定都用过的Windows系统,或者也用过的mac系统,其实Linux也是和这些在Windows,Mac一样,都是系统,只是不同的形式呈现出来给用户体验。这样说大家都了解吧,就是个系统。
全栈程序员站长
2022/09/05
2.5K0
Linux系统安装,教你安装一个属于自己的Linux系统
vmware虚拟机上安装win7系统_window10 虚拟机
最近需要搞windows系统兼容测试,根据数据显示,目前市面上占比TOP3的系统如下:
全栈程序员站长
2022/09/22
2.1K1
vmware虚拟机上安装win7系统_window10 虚拟机
vmware虚拟机怎么安装系统_虚拟机装系统
xp已经被win7、win10等系统逐渐取代,不过在很多特殊情况下还需要到XP系统中进行测试。那么这个时候就可以通过安装虚拟机系统来解决问题。常用的虚拟机工具有VMware
全栈程序员站长
2022/09/22
3.1K0
vmware虚拟机怎么安装系统_虚拟机装系统
学习记录——虚拟机VMware Workstation Pro16安装 ubuntu和windows10系统
http://www.zhanshaoyi.com/15261.html 安装上方链接内容下载即可,安装完以后打开exe,然后点击“创建新的虚拟机按钮”
MrLi001
2022/01/17
1.1K1
win10安装虚拟机win7全部教程_服务器与虚拟服务器
现在很多的电脑都是预装的win10系统了,尽管win10系统是现在主流的操作系统,但是不少网友还是对xp念念不忘。这种情况下我们可以不需要安装双系统,在WINDOWS 10安装XP系统虚拟机即可。下面小编就教下大家win10系统自带的虚拟机安装xp系统教程。
全栈程序员站长
2022/09/22
5.7K0
win10安装虚拟机win7全部教程_服务器与虚拟服务器
【VMware】win 10:VMware 15 虚拟机安装 win 7 系统[通俗易懂]
(6)设置硬盘大小,一般按照默认设置来,也可以加大一点,看个人的需求,下面的选择第二个,方便我们等会分区,然后点击下一步:
全栈程序员站长
2022/09/10
3.1K0
【VMware】win 10:VMware 15 虚拟机安装 win 7 系统[通俗易懂]
布衣之路(一):VMware虚拟机+CentOS系统安装
前言:布衣博主乃苦逼的Java程序猿一枚,虽然工作中不会涉及系统运维,但是开发的项目总还是要部署到服务器做一些负载均衡、系统兼容性测试、系统集成等等骚操作,而这些测试性的操作不可能直接SSH远程运维的服务器任我行般瞎搞一通的,所以在个人的开发机上虚拟机一套Linux系统做为测试服务器也就成了程序猿的必备生存技能。本来想一篇博文讲完虚拟机安装和各种环境的搭建的,但博主仔细的捋一捋发现,从虚拟系统到JDK环境再到数据库服务等等东西还不少,而且搭建过程中还有很多问题也是需要好好絮叨一番的,讲的太简略了,作为小白
用户1615728
2018/04/17
1.2K0
布衣之路(一):VMware虚拟机+CentOS系统安装
推荐阅读
相关推荐
如何在虚拟机上安装win10系统_虚拟机安装系统的步骤
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档