大旗号
科技 娱乐 汽车 财经 数码 时尚 旅游 美文 美食 其它

智汇华云 | ArSDN CNI 之容器和虚拟机的通信

互联网科技 2022-01-19

应用集群组件由于其特性,会部署到容器、虚拟机中,那么组件间的通信就会跨多平台。虚拟机是通过ArStack管理维护,K8s则由AKE组件管理维护,两者属于不同的平台。当虚拟机和容器需要相互“交谈”的时候,我们需要以某种方式实现两个独立集群之间的通信。本文将介绍通过ArSDN如何实现容器和虚拟机的互通。


实现思路



单个可用区中部署ArSDN组件,可用区中的AKE、ArStack都接入ArSDN,由ArSDN接管网络平台的控制和数据面流量转发。


当数据面统一由ArSDN接管后,则可以将容器、虚拟机统一到一个平台来管理,可以借助虚拟网络的隔离实现集群间的隔离,通过三层路由器、策略等功能实现跨集群间的通信。


可以自由控制容器、虚拟机和裸机的流量。


容器和虚拟机互通的实现方式



容器集群通过CNI插件实现容器的网络功能。CNI插件的实现有很多种,本文介绍的是华云数据自研的ArSDN CNI。


在容器集群接入ArSDN时,ArSDN CNI会在ArSDN执行一些初始化的操作,比如为每个容器集群创建一个Pod网络和一个Service网络、创建安全策略、网络策略等等,容器的IP地址分配以及安全策略都由ArSDN来管理。

 

Pod创建流程:


CNI组件watch到有新的Pod创建,会在Pod网络中创建对应的网卡并分配IP地址

Pod在调度完成后,kubelet会调用CNI插件创建Pod网卡

CNI插件调用ArSDN组件获取Pod网卡信息并完成网卡的创建

 

容器集群内部通信存在几种场景:


Pod和ApiServer通信:类似coredns这类Pod需要访问k8s apiserver获取对应的资源并生成域名信息

容器节点和Pod通信:部分组件会通过域名来访问Service,最终访问pod

Pod访问外网:Pod部分页面需要访问公网资源,有出外网的需求。可以通过将pod网络加入路由器来实现

CNI如何获取pod网卡信息:cni插件获取容器网卡信息用来创建虚拟网卡


 

下面我们通过区分部署模式来具体介绍每个场景的实现方式


嵌套部署


容器集群如果部署到ArStack的虚拟机中我们称为嵌套部署场景。嵌套场景中ArSDN本身会负责虚拟机的流量,还需要负责转发虚拟机内部的容器流量。


在vrouter组件中会为每个容器网卡创建一个独立的子接口(sub interface),对应的父接口是虚拟机的网卡。通过这种实现,我们可以将容器网卡和虚拟机网卡抽象到同一个平面来管理,他们在数据库中都对应一个virtual-machine-interface只是其中的sub-interface属性值不同

 

Pod和ApiServer通信


Pod访问ApiServer是通过访问K8S对应的Service IP来实现的,Service的后端对应集群的管理节点IP。嵌套场景中虚拟机有两种网络:管理网、数据网,且都是虚拟网络。我们通过networkpolicy或者路由器将这两个虚拟网络打通,实现三层通信。这样Pod在访问k8s service IP时,流量会转发到管理ip,此时由于管理网和pod网络已经三层打通,可以直接通信。

 

节点和Pod通信


节点访问Pod实际是从管理网访问Pod网络,类似上面的做法,管理网和pod网络都是虚拟网络且已经三层打通,可以直接通信

 

CNI如何获取Pod网卡信息


由于cni获取Pod网卡信息的时候,Pod已经完成了调度,也就是说CNI可以直接访问当前节点的Vrouter组件获取网卡信息。嵌套场景中CNI是在虚拟机内部的,需要通过某种方式来访问物理节点上的Vrouter服务。


这里我们通过link-local来实现流量转发,在访问某个固定IP和端口的时候,流量在到达物理节点时直接转换成访问当前节点IP+端口。这里也就是直接访问127.0.0.1:9096


非嵌套部署



容器集群部署到ArStack外部虚拟机或者物理裸机中我们称为非嵌套部署场景。非嵌套场景中容器节点类似一个计算节点,会在上面运行Vrouter组件实现跨节点的数据通信。

 

Pod和ApiServer通信


非嵌套场景中管理网络正常都是物理网络,我们无法通过networkpolicy或者路由器将它和Pod网路打通。在pod访问k8s service ip时,流量转换成访问管理IP,但是由于pod网络是一个私有网络,和物理网络是隔离的。这里通过link-local将访问的数据包执行snat,使得源地址改成Vhost0 IP。此时只需要在物理设备里将数据网络和管理网打通,就可以通过vhost0 IP来访问apiserver了

 

节点和Pod通信


节点访问pod网络,默认情况下pod网络是私有网络,从节点来访问根据节点上的路由规则,会走默认路由到外部网络中,是无法通信的。这里我们通过将pod网络开启ip-fabric功能,在物理节点上会动态创建访问pod网络的路由规则,使得在访问pod网络时流量转到vhost0中

 

CNI如何获取Pod网卡信息


由于在裸机上会直接部署Vrouter,所以CNI可以直接访问当前节点的Vrouter。相对于嵌套模式不需要进行流量转发。

 

K8S有自己的网络模型,有service/ingress实现四层和七层负载均衡功能,通过networkpolicy实现安全功能,还有其他的qos、端口转发等。ArSDN CNI则将K8S资源模型转换成ArSDN资源模型。

 

容器和ArStack资源模型对比:



总结


ArSDN cni将k8s资源模型和ArSDN资源进行转换,打通了两者之间的架构差异。


虚拟机通过加入Pod虚拟网络可以实现和容器的二层通信。通过路由器可以实现和容器的三层通信。容器集群间也可以通过网络策略或者路由器打通,为多集群网络通信提供支持。










京东春晚大手笔,有何深意?
出品| 大力财经文 | 魏力摘要: 京东再度登场春晚,1亿份一分钱实物奖品、百台汽车等背后的商业策略揭秘!一年又一年,春晚又要来了,每年春晚的赞助商归属都是一个重磅的商业话题,毕竟春晚的流量在那里摆着呢,最著名的莫过于当年的红包大战,让两大平台狠

2024-02-08

创业再启航,锤子科技001号朱萧木开拓“减龄咖啡”赛道市场
文 发布 | 大力财经在创业的道路上,朱萧木从未停止过探索与创新的脚步。朱萧木,这位锤子科技的 001 号员工,一路走来,见证了企业的兴衰起伏,也完成了从产品经理到创业者的华丽转身。如今,他怀揣着一颗永不服输的心,毅然踏上了新的创业之旅——减龄咖啡

2024-02-08

字节跳动公益平台“公益聚力计划”上线
为更好地联合社会多方力量参与社会公益,字节跳动公益平台于近日正式推出“公益聚力计划”(以下简称“计划”)。“计划”支持公益项目的策划与筛选、公益机构撮合,以及多种定制化的产品功能,如定制版公益证书、爱心回礼、爱心留言等,可多样化满足高粉创作

2024-02-08

时代里的SHEIN卖家:在出海的浪头里追赶,创新,爆发
对于2020年就在跨境电商SHEIN上抓住出海商机、做成第一个创业项目的陈乔而言,这几年国内鼓励企业出海的政策指引是他人生翻身的“财神爷”,而海外广袤的消费市场就是他的“福地”了。陈乔原是就职在世界500强外企公司的一位部门中层。金领做了十几年,陈乔觉

2024-02-05

大小姐驾到!高德地图联合《王者荣耀》推出孙尚香导航语音包
“大小姐驾到!统统闪开!”如果你是一个手游爱好者,多半会对这句话耳熟能详,来自于国内手游界顶流《王者荣耀》中的高人气角色——孙尚香,并成为一代玩家们的记忆。如今,随着高德地图与《王者荣耀》达成合作,这句话又有了后半句:“大小姐驾到!统统闪开

2024-02-04

司机家宴、游园会、火车票礼包,滴滴陪司机师傅一起过大年
图为:上海滴滴司机师傅参与“写福字”活动  2024年春运已经开始,有司机师傅踏上了返乡之路,也有不少司机师傅仍然奔波在接送乘客的路上。为向辛勤出车的司机师傅致敬,也为返乡的司机师傅提供便利,滴滴在春节期间推出了返乡火车票购票奖励、司机家宴、游

2024-02-02

美团启动架构调整:聚力核心本地商业,提升科技与境外业务优先级
2月2日,美团CEO王兴发布内部邮件宣布新的组织架构调整。邮件显示,美团对核心本地商业相关多项业务进行了整合,并进一步提升了科技与国际化相关业务的优先级。在核心本地商业上,美团对过去相对独立的事业群进行了整合。主要调整包括:对到家事业群、到店事

2024-02-02

从异乡门到故乡门,百度地图车道级导航全程护航
2024春运已然开启,根据相关部门预测,今年春运自驾出行将备受青睐,预计80%的人次将选择自驾车出行。面对春运期间的大流量车流与极端雨雪天气的双重挑战,百度地图加速升级,将城市车道级导航覆盖范围从100城迅速扩至200城,让春节自驾之旅实现从异乡门到故

2024-02-02