一种拉通物理机网络和容器网络的方法与流程

文档序号:37763318发布日期:2024-04-25 10:50阅读:4来源:国知局
一种拉通物理机网络和容器网络的方法与流程

本发明涉及kubernetes云平台,尤其是涉及一种拉通物理机网络和容器网络的方法。


背景技术:

1、容器管理平台kubernetes通过容器网络接口(containernetworkinterface,cni)将容器网络方案实现与kubernetes解耦,kubernetes可对接不同容器网络方案,以满足不同场景需求,目前常用容器网络方案,大致分为两类:overlay和underlay容器网络方案,overlay容器网络方案是在现有网络基础上,构建一层覆盖网络,如flannel的vxlan模式使用veth、bridge和vxlan等技术构建二层覆盖网络,overlay网络插件对本地网络侵入性小,具备良好通用性,但存在一定网络开销,underlay网络插件,例如aws提供的vpc-cni,这类插件基于现有网络基础设施构建容器网络,容器网络和现有网络同平面,往往能提供更好的性能,但由于直接使用现有网络基础设施,通用性较差,kubernetespod(容器组)是最小调度单元,一个pod里面装载一个或多个容器,这些容器共用一个网络栈,pod创建时,kubelet服务会创建该pod的网络命名空间等资源,并使用cni协议调用容器网络插件,后者会在该网络命名空间内配置网络栈,实现容器互通等目标。

2、上述中的现有技术方案存在以下缺陷:kubernetes容器平台对于一些存量系统,受到现有架构制约可能无法全部容器化,导致部分组件部署于主机,部分组件则运行于容器平台,理想情况下,容器外服务通过api网关或负载均衡等方式访问容器内服务。但有时候对于存量系统,需打通容器网络和主机网络让主机服务能直接访问容器服务,例如一套复杂系统,组件基于注册中心做服务注册和发现,在其做容器化演化过程中,存在部分组件部署在主机部分运行于容器这种场景,甚至有些组件无法或不适合做容器化,在不改变系统架构的情况下,若主机部署的服务需通过注册中心获取容器部署的服务并发起访问,此时便需要主机网络和容器网络打通,否则主机服务无法直接访问容器服务注册的地址,公有云平台大多提供满足这类网络打通需求的underlay容器网络插件,但对于物理机部署场景,目前并不存在相关容器网络方案。


技术实现思路

1、本发明的目的是提供一种适用于物理机部署环境,基于本地主机网络能拉通主机网络的容器网络构建方法。

2、为实现上述目的,本发明提供了如下技术方案:

3、一种拉通物理机网络和容器网络的方法,包括以下步骤:

4、步骤一:部署和初始化;

5、步骤二:启动主机ip管理系统;

6、步骤三:通过cni插件准备容器网络栈。

7、作为本发明所述一种拉通物理机网络和容器网络的方法的一种优选方案,其中:所述步骤一中的部署和初始化,具体还包括以下子步骤:

8、s1.1:cni配置文件准备,该配置文件指定使用cni插件;

9、s1.2:cni插件准备,将所述cni插件复制到cni目录;

10、s1.3:配置器部署,通过daemonset方式部署配置器;

11、s1.4:ip管理系统部署,通过deployment部署,以主备方式提供服务。

12、作为本发明所述一种拉通物理机网络和容器网络的方法的一种优选方案,其中:所述步骤s1.3中配置器部署,具体还包括以下子步骤:

13、s1.3.1:配置器根据提供的物理网卡名,创建一个名为mac0的macvlan虚拟网卡,用于容器和宿主机间网络打通;

14、s1.3.2:订阅本地pod资源变化,维护本地用于容器和宿主机网络打通的路由。

15、作为本发明所述一种拉通物理机网络和容器网络的方法的一种优选方案,其中:所述步骤二中的启动主机ip管理系统,具体还包括以下子步骤:

16、s2.1:环境管理员申请主机ip地址(ip段或单个ip)并录入管理系统,外层交换机需认可这些ip并放通流量,这些主机ip以自定义资源machineip保存于etcd;

17、s2.2:主机ip管理系统提供接口用于申请及释放ip;

18、s2.3:管理主机ip生命周期:pod删除时,可能由于网络抖动等原因导致machineip的status.state未被更新为unuse,但此时pod已删除。为确保ip资源的正确性,ip管理系统会定时检查ip绑定的pod状态,若pod不存在则更新machineip资源状态为unuse。

19、作为本发明所述一种拉通物理机网络和容器网络的方法的一种优选方案,其中:所述步骤s2.2中主机ip管理系统提供接口用于申请及释放ip,具体还包括以下子步骤:

20、s2.2.1:machineip定义包括ip、gateway、cidr、routes、status、bind等字段,state字段表明ip状态,包含使用中inuse、未使用idle、无效invalid三种状态;bind字段表明该ip被哪个namespace的哪个pod使用;routes字段为需额外配置的跨网段路由,如下所示:

21、

22、s2.2.2:管理系统主实例订阅etcd相关资源变动情况,并维护本地缓存,以快速获取空闲ip及pod关联ip;当发生修改操作时,提交到etcd并更新本地缓存,以保持数据一致性;

23、s2.2.3:固定ip支持:支持statefulset和单个pod使用固定ip,若pod带有标签machine.ip.fixed=true,则为其绑定的machineip添加标签machine.ip.fixed.type和machine.ip.fixed.id,type值为使用固定ip的编排对象类型,支持statefulset和pod,id则唯一识别编排对象,通过这种标签匹配方式,返回相同ip给cni插件,从而实现固定ip。

24、作为本发明所述一种拉通物理机网络和容器网络的方法的一种优选方案,其中:所述步骤三中通过cni插件准备容器网络栈,具体包括以下子步骤:

25、s3.1:kubelet准备好容器网络命名空间等参数后,调用cni插件,执行cmdadd方法配置容器网络栈;

26、s3.2:cni插件调用主机ip管理系统,获取一个可用machineip资源;

27、s3.3:cni插件配置容器网络栈;

28、s3.4:cni插件返回配置容器网络栈结果给kubelet,继续pod创建流程;

29、s3.5:cni插件删除容器网络栈(cmddel)和检查容器网络栈(cmdcheck)方法实现类似。

30、作为本发明所述一种拉通物理机网络和容器网络的方法的一种优选方案,其中:所述步骤s3.3中cni插件配置容器网络栈,具体还包括以下子步骤:

31、s3.3.1:检查并调整宿主机配置参数,如ip_forward、rp_filter、arp_filter、arp_ignore等内核参数;

32、s3.3.2:基于物理网卡创建macvlan虚拟网卡,绑定ip并加入容器网络命名空间;

33、s3.3.3:容器网络命名空间侧,配置默认路由、网段路由及跨网段路由,并主动发送arp广播,通知该ip的mac地址;

34、s3.3.4:宿主机网络命名空间侧,配置该容器ip访问路由,均通过mac0设备转发,以打通容器和宿主机通信,这类路由后续由配置器维护。

35、作为本发明所述一种拉通物理机网络和容器网络的方法的一种优选方案,其中:所述cni插件,具体包括:

36、实现cni协议,作为一个可执行文件,与kubernetes对接,该插件提供准备容器网络栈(cmdadd)、删除容器网络栈(cmddel)和检查容器网络栈(cmdcheck)能力,容器网络栈基于macvlan虚拟网卡实现。

37、作为本发明所述一种拉通物理机网络和容器网络的方法的一种优选方案,其中:所述主机ip管理系统,具体包括:

38、提供ip录入、ip申请及ip释放功能,通过维护pod和ip关系以提供固定ip能力,数据以kubernetes自定义资源(customresource,cr)方式存储于etcd。

39、作为本发明所述一种拉通物理机网络和容器网络的方法的一种优选方案,其中:所述配置器,具体包括:

40、负责macvlan网卡mac0创建,维护宿主机相关路由,调整系统参数配置等。

41、综上,本发明的有益技术效果为:

42、1.本发明以满足特定场景下主机和容器网络打通需求,业务容器化是一个持续过程,存量应用早期设计可能阻碍其进行彻底容器化,其对容器网络往往有额外要求,例如网络打通和固定ip等,目前并不存在不依赖特定网络产品且适用于物理机部署容器平台,可打通容器网络和主机网络的cni容器插件,本发明以一种相对权衡的方式提供解决方案以实现物理机部署场景主机和容器网络打通需求,便于传统存量应用容器化,丰富容器平台使用场景,减少容器平台落地难度,提升产品竞争力,具有显著实用性;

43、2.本发明提出一个基于etcd的中心化主机ip管理系统,负责主机ip管理,使用者仅需提前准备主机ip并录入该系统,容器便可使用主机ip,通过该系统可实现固定ip,容器网络和主机网络通过macvlan技术打通,集群外主机服务无需通过api网关或负载均衡便能直接访问容器服务;

44、3.本发明使用物理网卡macvlan方式拉通主机网络和容器网络,主机服务可直接访问容器ip,网络性能损耗极小。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1