前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >云计算网络技术内幕 (16) 勃列日涅夫破灭的野望

云计算网络技术内幕 (16) 勃列日涅夫破灭的野望

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

在上期,我们提到,在Kubernetes时代,由于容器的创建往往是k8s平台自动实现的,用户期望在计算机在自动创建容器的时候,能够自动实现网络的配置,包括容器的网络接入、IP地址赋予、容器互通等。

由于容器及Kubernetes技术的发明本身是为了屏蔽IaaS差异,快速部署应用,也就是说,Kubernetes的工作节点有可能是通过物理交换机互联互通的物理服务器,也有可能是通过虚拟化网络互联互通的虚拟机。

Kubernetes还有一种可能性是在虚拟机上部署,如下图所示:

这两种部署方式,对容器网络的实现需求就有一定差异。这个问题我们会在后面展开介绍。

那么,怎么样能够让Kubernetes在部署的时候,用户按需求来选择不同方式实现的容器网络呢?

工程师们为了解决这一问题,想到了一个故事:

1964年,在中国大西北伴随着蘑菇云升起的一声巨响,成为了修正主义分子赫鲁晓夫政治生命结束的礼炮。勃列日涅夫发动政变夺取苏联政权后,变本加厉地推行沙文主义,继1968年侵略捷克后,又在1969年挑起中苏冲突。在珍宝岛的战斗中,英勇的解放军战士击败了沙文主义侵略者,但T-62(下图,陈列在中国人民革命军事博物馆地下一楼入口处的战利品)在战斗中的表现,也给了人民解放军很深的印象。

由于当时国内的56式火箭筒无法击穿T62的正面装甲,人民解放军急需能够战胜T62坦克的装备。

话分两头。1957年,一位青年军官离开家乡,到苏联炮兵军事工程学院深造。在那里,他接触到了苏联最新的反坦克武器RPG-7,并被其深深吸引。在苏联的日子里,他一有时间就研究RPG-7的设计,直至将其图纸及装卸工艺的每一个环节都熟记在心中。回国后,这位青年军官将自己所学都分享给了战友们。

很快,新中国军工战线的同志们借鉴了RPG-7的设计,研制成功了新一代反坦克武器69式火箭筒(又称为40火),大批量生产装备部队后也批量出口到第三世界国家,成为了全世界被剥削被压迫人民反抗霸权主义的象征之一。勃列日涅夫的野望可耻地破灭了。13年后,勃列日涅夫带着沙文主义路线破产的耻辱,去往了另一个世界,向马克思和列宁等革命家们谢罪。

30多年以后,当初的青年已白发苍苍,而肩上也换上了闪耀的将星。他的名言“宁可台湾不长草,也要解放台湾岛”掷地有声,至今威慑着宵小之辈不敢独走,而他凭记忆复刻RPG-7的故事也成为了军工史上的一代传奇。

设计Kubernetes的工程师们的思路与中国军工复刻RPG-7的思路类似,那就是,借鉴Openstack的思想,将网络实现插件化!

我们知道,Openstack的Neutron本身并没有实现如何转发处理虚拟机之间互通的数据包,而是使用了各类插件 (如ml2插件,lbaas和fwaas插件等)。在Kubernetes中,引入了类似的机制,其中负责网络互联互通的插件叫做CNI (Container Network Interface,容器网络接口)。

顾名思义,CNI所需要实现的就是容器网络的接口,它与Kubernetes的交互时序如下:

在上图中,Kubernetes在创建Pod后,Kubelet会调用CNI配置容器网络,为其分配IP地址并返回给Kubernetes。在CNI中,这属于命令字cmdAdd的功能。

那么,Kubernetes在销毁一个Pod时,就需要将这个Pod从网络中摘除,收回这个Pod所占用的IP地址,并且从全局的转发表中删除这一条记录,避免其他指向该Pod的网络数据包错误转发,也避免其他Pod再占用这个IP地址的时候,出现数据错误。这个命令字叫做cmdDel。

在CNI中,第三个命令字叫做cmdCheck。这个命令是用于确认cmdAdd分配的网络资源是否成功的,实际上也可以不实现直接返回成功(尽量不要这么做)。

在开源社区,最常见的网络插件有flannel,calico,而在近年来又出现了kube-ovn,cilium等。除此之外,公有云也会有自己的网络插件实现。

从下期起,我们将为大家介绍这些插件,也引导大家做更多的思考。

请看下回分解。

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

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

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

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

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