前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >容器网络硬核技术内幕 (11) 西直门桥的传说

容器网络硬核技术内幕 (11) 西直门桥的传说

作者头像
用户8289326
发布2022-07-28 08:54:16
4220
发布2022-07-28 08:54:16
举报
文章被收录于专栏:帅云霓的技术小屋

上回我们说到,bridge插件在kubernetes的node之间,为pod的互联互通架起了简单直接的一座大桥,像南京长江大桥一样实现了天堑变通途。

随着历史的车轮转动,当一位老人在祖国的南海边画下那个圈的时候,一座神奇的桥,在北京拔地而起,这就是——西直门立交桥。

上错图了,应该放这个:

还是不对,应该是这个:

为什么要修建如此复杂的立交桥呢?

当然,是因为简单的桥梁无法满足复杂交通的需求。

类似市政交通的世界里那样,在容器的世界里,使用bridge插件,作为kubernetes的网络实现,虽然简单而直接,但有两个问题:

一、bridge这种互通方式,本质上是将所有pod放在一个二层域内,没有任何子网之间的隔离,任何BUM数据包都会被复制到所有pod。当pod数超过500,BUM泛洪数量是不可接受的。

二、bridge这种互通方式,缺少“网关”(gateway),这会让各个子网之间无法通信,也就是说,nginx的pod无法访问tomcat的pod!

这两个问题实际上是有解的。

对于第一个问题,bridge是支持VLAN的。在配置文件中,有一个VLAN选项,通过这个选项,可以让bridge配置VLAN access和VLAN trunk:

如图所示,我们可以为nginx, tomcat和mysql分配三个VLAN,对应它们各自的CIDR。这样,通过VLAN将广播域划分开,第一个问题就得以解决了。

第二个问题也是可以解决的。

bridge除了二层工作方式,还有三层工作方式。

它的三层工作方式配置文件如下:

{

"cniVersion": "0.3.1",

"name": "mynet",

"type": "bridge",

"bridge": "mynet0",

"isDefaultGateway": true,

"forceAddress": false,

"ipMasq": true,

"hairpinMode": false,

"ipam": {

"type": "host-local",

"subnet": "172.17.11.0/24"

}

}

和前面的配置文件相比,多了一些配置,但最核心的是这个地方:

isDefaultGateway:设置为true以后,bridge就可以工作在三层模式,具有三层转发的能力;

ipam字段配置了子网172.17.11.0/24,这样能够为VLAN内的pod分配地址。

需要注意一个细节:hairpinmode,如果打开这个开关,会导致bridge本身不做任何数据包交换转发,而是将数据包全部送到TOR交换机处理。这个问题将来再阐述。

通过这种方式,可以实现如下的组网——

如图,左边的node上运行了3个pod,每个pod均运行nginx,而右边的node上运行了3个pod,每个pod均运行tomcat。

但是,我们知道,实际上,为了让每个宿主机上的资源得以充分利用,容器编排平台会倾向于将不同的应用放在同一个node,让同一个node上运行着内存密集型、CPU密集型和磁盘I/O密集型的Pod,将宿主机上的资源压榨到极限。这时候,无论是使用bridge的二层模式,还是三层模式,都有无法满足pod之间互通需求的地方。

因此,人们开发了一个新的CNI插件——flannel。

请看下回分解。

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2020-05-30,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 帅云霓的技术小屋 微信公众号,前往查看

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

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
容器服务
腾讯云容器服务(Tencent Kubernetes Engine, TKE)基于原生 kubernetes 提供以容器为核心的、高度可扩展的高性能容器管理服务,覆盖 Serverless、边缘计算、分布式云等多种业务部署场景,业内首创单个集群兼容多种计算节点的容器资源管理模式。同时产品作为云原生 Finops 领先布道者,主导开源项目Crane,全面助力客户实现资源优化、成本控制。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档