前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >云计算网络技术内幕 (14) 柏林危机的时间窗

云计算网络技术内幕 (14) 柏林危机的时间窗

作者头像
用户8289326
发布2023-09-06 11:55:32
1530
发布2023-09-06 11:55:32
举报
文章被收录于专栏:帅云霓的技术小屋

上期我们说到,101在发动辽沈战役之前,在中革军委的催促下,经过深思熟虑反复调整部署,最终取得了胜利。消灭了白匪帮,最终统一了除台湾、澎湖、金门和马祖外的全中国。为什么中革军委要反复催促101下战役决心呢?

原来,这是因为远在半个地球以外的一场危机。

斯大林格勒战役后,纳粹德国在苏联发动的十次突击下风雨飘摇。为防止整个欧洲落入苏联的手中,盟军在1944年6月6日实施诺曼底登陆并开辟第二战场。在盟军与苏军的两面夹击下,1945年4月30日,苏军解放柏林,希特勒兵败自戕,纳粹德国被迫投降,并被分为苏、美、英、法四个占领区。而孤悬于柏林西区的飞地——西柏林,成为了全球瞩目的焦点。

1948年6月,美、英、法三个占领区合并,而苏联对西方阵营该行为提出抗议,全面切断西方阵营占领区与西柏林之间的水陆交通和货运,柏林危机正式爆发,美军只能通过空运为西柏林提供物资补给。

柏林危机拉开了冷战的序幕,东西方阵营剑拔弩张,这一形势直到1949年5月才有所缓和。在柏林危机期间,美国无暇关注在东方发生的一切,中国人民解放军完成了三大战役,横渡长江,粉碎了国民党军大部分有生力量,中国革命的胜利已经不可逆转。正是中革军委高瞻远瞩的判断,抓住了柏林危机的时间窗口,才有了强大的新中国。

在柏林危机中,由于苏联切断了西占区(上图中绿色、蓝色和棕色区域)和西柏林(上图中白色区域)的通道,美国在一年中执行了27.7万次空运,将211万吨物资提供给西柏林驻军及居民,史称“柏林空运”,成为了美国展示其国力的重要事件。

工程师们在解决容器通过网络互通时,也借鉴了这一思路。

在docker容器体系中,每个容器实质上是操作系统中的一个进程。docker等容器运行时引擎的作用,实际上是在创建容器的时候,为该容器进程赋予一个namespace。同时,为了让该容器能够与外部网络通信,还可以为该容器增加一个veth。

什么是veth呢?它是Linux网络实现的一部分。从字面上可以看出,veth是一个虚拟化的以太网借口。在Linux中,veth是可以成对创建的,如veth0和veth1配对后,向veth0发送的数据包,另一个虚拟组件可以在veth1原封不动地收到。

如图,在veth0和veth1上绑定IP地址后,两个APP可以通过调用socket api,socket api中指定veth对应的IP地址进行通信。

我们可以将veth绑定给一个容器,其对端的veth绑定给另一个容器,如下图所示:

这样一来,两个容器之间就可以通过veth pair进行通信了。

但是,显然地,这样的点对点的容器网络是无法满足业务正常访问的要求的。我们首先要实现容器能够被容器工作节点之外访问。

docker为解决这一问题,在工作节点上增加了一个组件:docker0。

docker0实际上是一个网桥,可以绑定veth pair中的一个veth。将多个容器接入docker0网桥,就可以实现多个容器的互联互通:

Docker 0 也可以连接到工作节点对外通信的网卡:

我们给这三个容器分配IP和监听端口:

如图,三个容器的IP地址分别是172.17.10.161,172.17.10.162和172.17.10.163,而这三个容器的进程都监听80端口。运行这三个容器的工作节点 (host)上的IP地址是172.16.112.10。我们如果期望三个容器都可以从外部访问到,应该让外部访问哪个IP地址的哪个端口呢?

docker0给出的方案是进行地址转换,也就是NAT:

如:将172.16.112.10:51223映射到172.17.10.161:80,也就是进行所谓的目的地址转换 (DNAT)。

类似地,容器对外发起访问时则做源地址转换 (SNAT)。

对于跨工作节点的容器互访,docker0也贴心地提供了一种机制,叫做overlay隧道:

如图,container A和container B在两个不同的工作节点上运行,可以通过docker0为端点的VXLAN隧道互通。

那么,这样是不是可以解决所有的容器互通问题,以及容器对外提供访问的需求呢?

事情并没有这么简单……

请看下期分解。

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

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

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

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

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