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

容器网络硬核技术内幕 (10) 胜利之桥

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

《桥》是人们熟悉的南斯拉夫影片,讲述的是二战时期,英勇的南斯拉夫人民为了歼灭侵略军,炸毁了敌军逃亡路线上的桥梁的故事。

二战胜利后,以中国人民为代表,世界上被帝国主义压迫的国家纷纷举起了独立自由的旗帜,并展开了壮丽的工业化建设画卷。

南京长江大桥就是我国劳动人民敢于否定专家脱离实际的方案,利用简单直接的方案,实现了跨长江的互联互通。

在K8S网络中,也有这么一种简单直接的方案——网络桥接。 这种方案叫做bridge。

在bridge方案中,每个宿主机上的pod都通过veth pair连接到网桥。(什么是veth pair? 请戳这里)

如图,每个node上的组网如下图:

这个图太经典了,以后我们会经常回顾。

将它放大,钻到每个pod内部和Node内部,看到的是这样的——

如图,我们看到,bridge的veth11,veth12和veth13,跟3个pod的veth101, veth102, veth103互通。而veth0连接到物理网卡eth0上。

(实际上,在node的Linux操作系统看来,这些veth接口是属于自己控制下,分属于不同namespace而已)

在有多个node的时候,bridge可以将各个node上的不同pod连接起来,实现最简单直接的互联互通。

一个配置文件的样例如下:

{

"cniVersion": "0.3.1",

"name": "mynet",

"type": "bridge",

"bridge": "mynet0",

"ipam": {}

}

其中,cniVersion字段标识的是CNI插件版本,name字段表示的是网络名称。type强制要求为“bridge”。

bridge需要一个名称,我们给它起名为“mynet0”。

由于bridge处于纯二层模式,不感知IP地址,因此ipam(IP Address Management)字段不需要填写。

这样,bridge就虚拟出了一个纯二层交换机(俗称傻交换)。

如图所示,这样配置bridge以后,172.17.10.0/24这个网段(英文缩写:CIDR,Classless Inter-Domain Route,无类域间路由)的6个pod,在两个不同的node上运行。有了bridge以后,就可以利用这个插件让它们互联互通了。

但是,让我们思考一个问题:

如果有两个应用,分属不同的CIDR,而这两个应用又在不同的node上运行,能不能利用bridge让它们互联互通呢?

如图,假设有三组pod,分别运行nginx, tomcat和mysql,

它们分别使用CIDR:172.17.11.0/24,172.17.12.0/24和172.17.13.0/24。

实际上,这三组pod每组内部也是可以互通的。

但是,这样一来,会造成两个问题:

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

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

怎么样才能解决这两个问题呢?

请看下回分解。

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

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

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

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

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
专用宿主机
专用宿主机(CVM Dedicated Host,CDH)提供用户独享的物理服务器资源,满足您资源独享、资源物理隔离、安全、合规需求。专用宿主机搭载了腾讯云虚拟化系统,购买之后,您可在其上灵活创建、管理多个自定义规格的云服务器实例,自主规划物理资源的使用。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档