容器网络硬核技术内幕 (17) 生命的火花

2022-07-28 08:57:14 浏览数 (2)

在《为人民服务重于泰山》中,我们提到,容器只有向外界提供服务,才有存在的价值,像泰山一样重,否则则像鸿毛一样轻。

那么,让我们回顾前面几期的内容:CNI提供了容器pod接入容器网络的规范,bridge, flannel, seerengine等CNI插件则实现了pod之间的互联互通,但是,如何从容器网络外部访问一个pod呢?

我们知道,在OpenStack中,Neutron为虚拟机和Bare Metal提供了vswitch, vrouter, FWaaS和LBaaS四类资源,分别提供虚拟机之间同子网互通,虚拟机之间跨子网互通,虚拟防火墙和虚拟LB业务。

从这张经典的图中可以看出,LBaaS(vLB)可以实现对外发布VIP (Virtual IP),让这个VPC承载的业务以一个IP地址的形式对外提供服务。无论是来自企业内网的用户,还是互联网的用户,都可以访问这个VIP,LBaaS会将指向VIP的请求转发到对应的web虚机,并将web虚机的回应转发给用户。

类似地,在容器编排平台kubernetes中也有这么一种机制,叫做Service。

实际上,容器编排平台对Service的依赖,更甚于OpenStack/Neutron对LBaaS的需要。这是为什么呢?

苏轼在《赤壁赋》中写道:“寄蜉蝣于天地,渺沧海之一粟。哀吾生之须臾,羡长江之无穷……”

蜉蝣,是一种朝生暮死的动物,其成虫阶段的生命周期以小时计。而容器,正如云计算世界中的蜉蝣,其生命周期是短暂的。

由于容器本身的IP地址分配依赖于容器编排平台,因此,当一个容器集群中,部分容器被销毁,再拉起部分容器的时候,新的容器的IP地址和旧的容器无法保证相同。那么,需要访问这些容器的客户端(可能包括最终用户,或云中的其他容器/虚拟机/裸金属机等),如何跟踪容器地址的变化呢?

答案就是:使用Service。

容器的一生是短暂的。只有将有限的生命,投入到无限的为人民服务(Service)之中,才能让生命的火花放射出光芒。

让我们将时间线拉回到1919年的一个周六,莫斯科的铁路工人们利用周六时间义务劳动,抢修好了一列火车,火车向与帝国主义斗争的前线运送的物资帮助红军赢得了为人类解放而进行的战争。

列宁发现,将具有相同的标签(共青团员和共产党员)的工人们集合起来,共同为人民服务,就能够克服困难,稳定地提高劳动生产率,为社会创造更多的价值。从此,苏联兴起的星期六义务劳动运动成为了社会主义劳动竞赛的开端,它的成果属于整个苏维埃和人民,也为人类的工业化进程做出了卓著的贡献。相比之下,资本主义社会某些企业向劳工贩卖的“奋斗者”等概念,本质上目的是击败竞争对手,是出于极少数人的私利,应当受到社会的谴责。

Kubernetes的开发者们,借鉴了列宁的思想,给具有相同标签的Pod赋予一个共同的名字,对外统一提供稳定的服务,这就是kubernetes的service概念。

有了Service,容器生命的火花才能在为人民服务中放射出光芒。

在下一期中,我们将详解Service的机制。

请注意:现实中认识我的人请勿打赏

0 人点赞