前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >容器网络硬核技术内幕 (13) 美丽的法兰绒(中)

容器网络硬核技术内幕 (13) 美丽的法兰绒(中)

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

在上一期《美丽的法兰绒 (上)》中,我们遗留了两个问题:

  1. 一个bridge没有学到网络中其他pod的MAC地址的时候,bridge对于未知MAC数据包的处理是什么样的?
  2. pod如果需要跨网段互访,flannel将如何实现?

今天,让我们来揭晓这两个问题的谜底——

原来,在容器的世界中,大家都难以摆脱背后的神秘势力……

正如英国作家乔治奥威尔在《1984》中描述的,看似自由的社会,实际上由资本这个看不见的“老大哥”在幕后掌控一切那样,在容器与云原生的世界里,也有一个“老大哥”在看着你——

这个老大哥就是鼎鼎有名的分布式数据库etcd。

etcd是2013年由coreos发起的开源分布式键值(key-value)数据库项目。它采用了经典的raft算法保证各个分布式节点数据的一致性,由于它是一个轻量级、安全、使用简单的分布式数据库,并且能够在每个节点(实例)上支持2K+的读操作,在云原生领域成为了不可或缺的中间件。大量分布式中间件都会调用etcd来实现分布式数据同步,避免重复开发轮子。

======关于etcd,可以写一本书,容方老师赚到一个亿再说======

当然,flannel作为经典的云原生网络插件,也采用了etcd作为轻量级分布式数据库。

如下图所示:

图中,flanneld会与etcd互动,存储全局数据,同时要求bridge按照自身意图转发数据包。

flanneld会将以下数据储存在etcd中:

网络配置信息,包括IP地址、子网掩码、默认网关等信息…

当一个pod上线时,它的IP地址、MAC地址、子网掩码、上线的bridge上的虚拟以太网接口(veth)ID等……都会在etcd中储存。

我们知道,etcd是一个全局数据同步的分布式数据库,无论在任何一个加入etcd集群的节点,都可以读取到etcd中存储的全部数据。

这样一来,前面两个问题就都迎刃而解了。

问题1:一个bridge没有学到网络中其他pod的MAC地址的时候,bridge对于未知MAC数据包的处理是什么样的?

答案如下图:

如图,一个Pod需要和另一个node上的pod通信,它发送了一个以太网数据包。由于bridge不知道这个数据包应当发送到本node上的其他pod,它会通过flanneld向etcd查询。

由于任意一个pod连接到网络时,都会从etcd分配地址,并将自己的MAC地址、bridge上的虚拟端口信息等在etcd中登记在案,所以,etcd拥有全局所有Pod的信息,并可以回应任意bridge的查询。

bridge如果查询到目的Pod在其他node,将封装VXLAN隧道并发送到目的node。如果查询到目的pod在本node则直接执行二层转发。

问题2:pod如果需要跨网段互访,flannel将如何实现?

这个问题的答案类似问题1,flanneld会向etcd查询对端pod所拥有的IP地址对应的MAC地址、所在node等信息,让bridge进行VXLAN封装,用类似VXLAN三层转发的机制实现互通。

这样一来,flannel就可以利用etcd作为控制平面实现VXLAN overlay了。

大家思考一个问题:

flannel使用的这种控制平面机制,有没有什么问题和缺陷呢?

下期我们来分析一下。

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

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

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

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

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
TDSQL MySQL 版
TDSQL MySQL 版(TDSQL for MySQL)是腾讯打造的一款分布式数据库产品,具备强一致高可用、全球部署架构、分布式水平扩展、高性能、企业级安全等特性,同时提供智能 DBA、自动化运营、监控告警等配套设施,为客户提供完整的分布式数据库解决方案。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档