一种在Kubernetes中Pod设置多IP的方法技术

技术编号:24763525 阅读:25 留言:0更新日期:2020-07-04 10:58
本发明专利技术公开了一种在Kubernetes中Pod设置多IP的方法,本发明专利技术涉及云计算的技术领域,由独立的网络管理模块组成,网络服务器与网络插件使用RESTful接口进行通信,当Kubelet服务在节点上创建Pod资源时,按照CNI规范、配置调用网络插件为Pod配置多IP网络配置,由网络插件解析Kubelet传入的Pod配置,而后网络插件调用网络服务器的Add接口获取为Pod定义的多IP网络配置,当网络插件获取到Pod的多IP网络配置后,通过循环网络配置列表的方式,为Pod逐一配置指定的IP网络配置,为Pod配置的多IP分别关联到Pod所运行节点之上的不同网卡,以实现Pod中产生的不同网络流量走不同网络接口的要求,进而达到Pod网络高可用、流量分摊、兼容应用多网络部署的效果。

A method of setting multiple IP in pod in kubernetes

【技术实现步骤摘要】
一种在Kubernetes中Pod设置多IP的方法
本专利技术涉及云计算的
,具体为一种在Kubernetes中Pod设置多IP的方法。
技术介绍
Kubernetes是一个容器编排管理系统,通过使用Kubernetes技术能够简化应用部署流程、减少服务从开发到上线所花费的时间并提高运维效率。使用Kubernetes容器编排服务,能够完成基于容器的应用部署、维护和滚动升级;流量负载均衡,应用自动发现;跨节点,跨区域Pod调度;服务多实例自动扩伸缩容;支持以声明式配置文件的方式,管理容器整个生命周期等功能。由于Kubernetes作为一个通用的底层容器编排管理平台,其创建、管理的Pod实例需要部署到不同的网络环境中,以满足不同业务场景下对网络通信高可靠、高可用的要求。将部署在不同网络环境下的应用迁移到Kubernetes集群中进行部署时,需要保证通过Pod启动的容器与之前部署应用的环境具备相同的网络环境,以达到应用上Kubernetes集群时,依然能够保证网络通信可靠性的效果,并减少应用改造、网络改造、运维变更等差异带来的迁移成本较高的问题。一般情况下,在应用部署在物理机或虚拟机之上时,为满足网络通信的高可靠、高可用、高质量的要求,部署应用的物理机或虚拟机中都会配置多块通信网卡,并且要求不同的网络流量走不同的通信网卡,而原生的Kubernetes网络不会为Pod配置多个通信网卡,无法满足多网络、多网卡环境下应用部署的要求,因此,基于原生的Kubernetes网络使用方式存在缺陷,需要改进。综上,本领域的技术人员提出了一种一种在Kubernetes中Pod设置多IP的方法。
技术实现思路
针对现有技术的不足,本专利技术提供了一种在Kubernetes中Pod设置多IP的方法,解决了
技术介绍
中所提出的问题。为实现以上目的,本专利技术通过以下技术方案予以实现:一种在Kubernetes中Pod设置多IP的方法,由独立的网络管理模块组成,包括如下步骤:S1、启动网络服务端程序,从K8s主节点处监听集群中Pod资源的变化情况,并从Pod资源配置文件中的Annotations字段中取出Pod的网络配置信息,并存入内存缓存之中;S2、管理员通过容器云平台管理界面创建应用,为应用指定网络配置,由容器云平台根据管理员指定的配置格式化为Kubernetes资源的配置文件,并提交到K8s主节点之上;S3、当运行在Kubernetes集群中从节点上的Kubelet服务获取到要运行在本节点上的Pod资源后,调用网络插件为Pod的Pause容器设置网络配置;S4、Kubelet服务以执行可执行文件的方式调用网络插件,并传入Pod属性配置,由网络插件调用网络服务端的ADD接口,以获取Pod的网络配置;S5、当网络服务端接收到ADD请求时,根据请求中带有的Pod名称以及Namespace参数,从缓存中获取该Pod的网络配置信息,并且在本地数据库中记录该Pod分配的IP,避免出现IP重复分配的问题,处理完成后,将Pod的多网络配置返回给网络插件;S6、网络插件接收到网络服务端返回的Pod网络配置列表后,循环取出Pod的单个网络配置,并通过Pause容器的ID信息获取到该容器NetworkNamespace的路径,切换到Pause网络容器的NetworkNamespace中,根据网络配置创建容器网络接口、配置IP地址、创建路由条目,逐个配置Pod的多个网络的IP;S7、当配置完成后,获取Pod的所有网络配置信息,查看是否与指定的配置一致,如果一致则完成Pod的多IP配置,否则返回错误信息到Kubelet服务中,通过切换到Pause容器NetworkNamespace中的方式,为容器配置多个网络接口,以实现在Pod中设置多IP的效果。优选的,所述独立的网络管理模块包括网络服务器与网络插件。优选的,所述步骤S2中,管理员为应用指定的网络配置包括应用使用的网络列表、默认网络以及为Pod分配的多IP列表。优选的,所述步骤S2中,Kubernetes资源的配置文件为Deployment和Service其中的任意一种。优选的,所述步骤S4中,Pod属性配置包括Pod名称、Namespace值以及容器ID。优选的,所述步骤S6中,所述切换到Pause容器的NetworkNamespace中为该容器配置指定的网络配置为接口IP配置和路由条目配置。优选的,还包括步骤S8:当网络插件完成Pause容器多网络配置后,返回网络配置中的默认网络配置信息到Kubelet中。优选的,所述步骤S8中,当Kubelet上报Pod网络配置状态信息到K8s主节点时,会带上默认网络的IP信息,该默认网络的IP会作为在Kubernetes集群中标识Pod网络配置的唯一标识,并不会在Kubernetes集群中显示Pod的多个IP信息。优选的,还包括步骤S9:需要对Pod配置的多IP资源进行回收时,通过容器云管理平台执行应用删除操作,K8s主节点会删除Pod资源,该Pod所在的节点上启动的Kubelet服务会调用网络插件的“Delete”方法,释放为Pod分配的多个IP资源,由此完成Pod网络资源配置回收的操作。有益效果本专利技术提供了一种在Kubernetes中Pod设置多IP的方法。与现有技术相比具备以下有益效果:在Kubernetes集群中为Pod设置多IP的系统由独立的网络管理模块组成,网络服务器与网络插件使用RESTful接口进行通信,用于实现Pod多网络配置、网络资源回收等Pod网络管理功能,当Kubelet服务在节点上创建Pod资源时,按照CNI规范、配置调用网络插件为Pod配置多IP网络配置,由网络插件解析Kubelet传入的Pod配置,而后网络插件调用网络服务器的Add接口获取为Pod定义的多IP网络配置,当网络插件获取到Pod的多IP网络配置后,通过循环网络配置列表的方式,为Pod逐一配置指定的IP网络配置,完成Pod多IP配置流程后,获取Pause容器中的所有网络IP信息,查看最终的多IP配置是否生效,并向Kubelet返回配置容器网络的结果,为Pod配置的多IP分别关联到Pod所运行节点之上的不同网卡,以实现Pod中产生的不同网络流量走不同网络接口的要求,进而达到Pod网络高可用、流量分摊、兼容应用多网络部署的效果。附图说明图1为本专利技术的流程示意图框图。具体实施方式下面将结合本专利技术实施例中的附图,对本专利技术实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本专利技术一部分实施例,而不是全部的实施例。基于本专利技术中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本专利技术保护的范围。请参阅图1,本专利技术提供一种技术方案:一种在Kubernetes中Pod设置多IP的方法,由独立的网络管理模块组成,独立的网络管理模块包括网络服务器与网络本文档来自技高网
...

【技术保护点】
1.一种在Kubernetes中Pod设置多IP的方法,由独立的网络管理模块组成,其特征在于,包括如下步骤:/nS1、启动网络服务端程序,从K8s主节点处监听集群中Pod资源的变化情况,并从Pod资源配置文件中的Annotations字段中取出Pod的网络配置信息,并存入内存缓存之中;/nS2、管理员通过容器云平台管理界面创建应用,为应用指定网络配置,由容器云平台根据管理员指定的配置格式化为Kubernetes资源的配置文件,并提交到K8s主节点之上;/nS3、当运行在Kubernetes集群中从节点上的Kubelet服务获取到要运行在本节点上的Pod资源后,调用网络插件为Pod的Pause容器设置网络配置;/nS4、Kubelet服务以执行可执行文件的方式调用网络插件,并传入Pod属性配置,由网络插件调用网络服务端的ADD接口,以获取Pod的网络配置;/nS5、当网络服务端接收到ADD请求时,根据请求中带有的Pod名称以及Namespace参数,从缓存中获取该Pod的网络配置信息,并且在本地数据库中记录该Pod分配的IP,避免出现IP重复分配的问题,处理完成后,将Pod的多网络配置返回给网络插件;/nS6、网络插件接收到网络服务端返回的Pod网络配置列表后,循环取出Pod的单个网络配置,并通过Pause容器的ID信息获取到该容器Network Namespace的路径,切换到Pause网络容器的Network Namespace中,根据网络配置创建容器网络接口、配置IP地址、创建路由条目,逐个配置Pod的多个网络的IP;/nS7、当配置完成后,获取Pod的所有网络配置信息,查看是否与指定的配置一致,如果一致则完成Pod的多IP配置,否则返回错误信息到Kubelet服务中,通过切换到Pause容器Network Namespace中的方式,为容器配置多个网络接口,以实现在Pod中设置多IP的效果。/n...

【技术特征摘要】
1.一种在Kubernetes中Pod设置多IP的方法,由独立的网络管理模块组成,其特征在于,包括如下步骤:
S1、启动网络服务端程序,从K8s主节点处监听集群中Pod资源的变化情况,并从Pod资源配置文件中的Annotations字段中取出Pod的网络配置信息,并存入内存缓存之中;
S2、管理员通过容器云平台管理界面创建应用,为应用指定网络配置,由容器云平台根据管理员指定的配置格式化为Kubernetes资源的配置文件,并提交到K8s主节点之上;
S3、当运行在Kubernetes集群中从节点上的Kubelet服务获取到要运行在本节点上的Pod资源后,调用网络插件为Pod的Pause容器设置网络配置;
S4、Kubelet服务以执行可执行文件的方式调用网络插件,并传入Pod属性配置,由网络插件调用网络服务端的ADD接口,以获取Pod的网络配置;
S5、当网络服务端接收到ADD请求时,根据请求中带有的Pod名称以及Namespace参数,从缓存中获取该Pod的网络配置信息,并且在本地数据库中记录该Pod分配的IP,避免出现IP重复分配的问题,处理完成后,将Pod的多网络配置返回给网络插件;
S6、网络插件接收到网络服务端返回的Pod网络配置列表后,循环取出Pod的单个网络配置,并通过Pause容器的ID信息获取到该容器NetworkNamespace的路径,切换到Pause网络容器的NetworkNamespace中,根据网络配置创建容器网络接口、配置IP地址、创建路由条目,逐个配置Pod的多个网络的IP;
S7、当配置完成后,获取Pod的所有网络配置信息,查看是否与指定的配置一致,如果一致则完成Pod的多IP配置,否则返回错误信息到Kubelet服务中,通过切换到Pause容器NetworkNamespace中的方式,为容器配置多个网络接口,以实现在Pod中设置多IP的效果。


2.根据权利要求1所述的一种在Kubernetes中Pod设置多IP的方法,其特征在于,所述独立的网络管理模块包括网络服务器与网络插件。

【专利技术属性】
技术研发人员:王伟华梅进
申请(专利权)人:广西梯度科技有限公司
类型:发明
国别省市:广西;45

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1