一种集群静态IP地址的分配系统及分配方法与流程

文档序号:34380843发布日期:2023-06-08 02:00阅读:110来源:国知局
一种集群静态IP地址的分配系统及分配方法与流程

本发明涉及云计算,涉及一种集群静态ip地址分配系统及分配方法,更具体地说,涉及一种kubernetes集群静态ip地址分配系统及分配方法。


背景技术:

1、在云计算领域,容器技术正方兴未艾。kubernetes(后文使用简称k8s)作为容器编排技术的佼佼者和典型代表,已经被用户和云厂商广泛接受和使用,也逐渐成为容器编排技术领域中事实上的行业标准。在k8s上运行的应用根据其特点的不同被抽象成不同的工作负载类型,常见的包括pod、deployment、statefulset、job等,其中,pod是最基础的工作负载,它是k8s能够管理的最小部署单元,其他类型的工作负载都是基于它实现的。在k8s中,包括ip(internet protocol,网际互连协议)地址分配在内的pod网络的配置和管理是通过使用遵守容器cni规范的插件实现的。在ip地址管理问题上,常见的cni插件都是每次在pod创建时从地址池中获取一个可用ip地址,然后在pod销毁时把ip地址归还到地址池。然而,这种方式不能支持那些在pod重建后需要保持ip地址不变的应用,比如需要给依赖的服务提供ip地址白名单的应用、基于ip地址做安全控制的应用等。对此,把这种需要在工作负载删除重建后保持不变的ip地址称为“静态ip地址”。

2、对于容器静态ip地址的实现问题,目前已有一些解决方案,比如现有方案提出了一种通过维护容器名称、工作负载、节点名称和静态ip地址的记录表实现的容器静态ip地址的管理方法。然而,这些方法一般没有考虑工作负载的节点调度问题,尤其是在k8s集群上的不同节点使用不同的ip地址池甚至不同的cni插件的情况(这种情况在大型或异构的k8s集群上很常见)。此外,现存的方案一般都需要引入一些k8s非标准的组件,比如需要额外的数据库用来存储记录表,不仅增加了部署和管理的成本,而且还降低了系统的可靠性。对此,如何解决动态业务场景下静态ip地址固定依赖的问题,成为本领域亟需解决的问题。


技术实现思路

1、有鉴于此,为解决上述问题,本发明提供一种集群静态ip地址分配系统及分配方法,技术方案如下:

2、一种集群静态ip地址分配系统,所述系统包括:k8s api组件和k8s集群中已安装cni插件的节点;

3、所述k8s api组件,用于响应工作负载创建指令,依次创建静态ip对象实例和工作负载实例,并将所述工作负载实例对应的pod调度至目标节点上,所述静态ip对象实例与所述工作负载实例是相关联的;响应工作负载删除指令,将所述工作负载实例对应的pod调度至所述目标节点上,并保留所述静态ip对象实例;响应工作负载重建指令,重新创建所述工作负载实例,并将所述工作负载实例对应的pod调度至所述目标节点上;

4、所述目标节点,用于若被调度的pod是响应所述工作负载创建指令时所调度的,从所述目标节点相应的地址池中分配静态ip地址给被调度的pod,并,将被调度的pod所对应静态ip地址的分配信息更新记录至所述静态ip对象实例中,所述分配信息用于表征所述目标节点对被调度的pod分配静态ip地址的结果;若被调度的pod是响应所述工作负载删除指令时所调度的,销毁被调度的pod,保留被调度的pod的静态ip地址,并更新所述静态ip对象实例中被调度的pod所对应静态ip地址的分配信息;若被调度的pod是响应所述工作负载重建指令时所调度的,根据所述静态ip对象实例中被调度的pod所对应静态ip地址的分配信息分配静态ip地址给被调度的pod,并更新所述静态ip对象实例中被调度的pod所对应静态ip地址的分配信息。

5、优选的,所述系统还包括:静态ip控制器;

6、所述k8s api组件,还用于向所述静态ip控制器发送第一调用指令,并接收所述静态ip控制器所返回的第一校验结果;若所述第一校验结果表征所述静态ip对象实例具有合法性,执行所述将所述工作负载实例对应的pod调度至所述目标节点上;

7、所述静态ip控制器,用于响应所述第一调用指令,获取并添加所述工作负载实例对应的调度信息,校验所述静态ip对象实例是否具有合法性,并将得到的第一校验结果返回给所述k8s api组件。

8、优选的,所述静态ip控制器获取并添加所述工作负载实例对应的调度信息的过程,包括:

9、检测所述静态ip对象实例中的调度信息,所述调度信息包括表征指定所述工作负载实例所在节点的第一调度信息、或者表征指定所述工作负载实例可调度的节点标签的第二调度信息;

10、若检测到所述第一调度信息/所述第二调度信息,将所述第一调度信息/所述第二调度信息添加到所述工作负载实例的调度策略中,以使所述k8s api组件按照所述调度策略执行所述将所述工作负载实例对应的pod调度至所述目标节点上。

11、优选的,所述k8s api组件,还用于:

12、响应静态ip对象删除指令,向所述静态ip控制器发送第二调用指令;接收所述静态ip控制器所返回的静态ip释放结果;若所述静态ip释放结果表征所述静态ip对象实例中全部静态ip地址已被释放,删除所述静态ip对象实例;

13、所述静态ip控制器,还用于响应所述第二调用指令,校验所述静态ip对象实例是否具有合法性,得到第二校验结果;若所述第二校验结果表征所述静态ip对象实例具有合法性,将所述静态ip对象实例中的静态ip地址释放到所属的地址池中,并将得到的静态ip释放结果返回给所述k8s api组件。

14、优选的,所述静态ip控制器将所述静态ip对象实例中的静态ip地址释放到所属的地址池中的过程,包括:

15、若所述静态ip对象实例中静态ip地址所属的地址池为全局地址池,确定所述静态ip对象实例中静态ip地址对应的ip释放方法的接口,以调用接口的方式将所述静态ip对象实例中的静态ip地址释放到所属的地址池中;

16、若所述静态ip对象实例中静态ip地址所属的地址池为本地地址池,以所述目标节点上创建轻量级的pod、再删除该轻量级的pod的方式将所述静态ip对象实例中的静态ip地址释放到所属的地址池中。

17、优选的,所述k8s api组件,还用于:

18、响应静态ip对象创建指令,创建与所述工作负载实例相关联的新的静态ip对象实例。

19、一种集群静态ip地址分配方法,所述方法应用于k8s api组件,所述方法包括:

20、响应工作负载创建指令,依次创建静态ip对象实例和工作负载实例,并将所述工作负载实例对应的pod调度至目标节点上,以使得:所述目标节点从所述目标节点相应的地址池中分配静态ip地址给被调度的pod,并将被调度的pod所对应静态ip地址的分配信息更新记录至所述静态ip对象实例中;所述静态ip对象实例与所述工作负载实例是相关联的,所述分配信息用于表征所述目标节点对被调度的pod分配静态ip地址的结果;

21、响应工作负载删除指令,将所述工作负载实例对应的pod调度至所述目标节点上,并保留所述静态ip对象实例,以使得:所述目标节点销毁被调度的pod,保留被调度的pod的静态ip地址,并更新所述静态ip对象实例中被调度的pod所对应静态ip地址的分配信息;

22、响应工作负载重建指令,重新创建所述工作负载实例,并将所述工作负载实例对应的pod调度至所述目标节点上,以使得:所述目标节点根据所述静态ip对象实例中被调度的pod所对应静态ip地址的分配信息分配静态ip地址给被调度的pod,并更新所述静态ip对象实例中被调度的pod所对应静态ip地址的分配信息。

23、优选的,所述方法还包括:

24、向静态ip控制器发送第一调用指令,以使得:所述静态ip控制器响应所述第一调用指令,获取并添加所述工作负载实例对应的调度信息,校验所述静态ip对象实例是否具有合法性,得到第一校验结果;

25、接收所述静态ip控制器所返回的所述第一校验结果;若所述第一校验结果表征所述静态ip对象实例具有合法性,执行所述将所述工作负载实例对应的pod调度至所述目标节点上。

26、优选的,所述方法还包括:

27、响应静态ip对象删除指令,向所述静态ip控制器发送第二调用指令,以使得:所述静态ip控制器响应所述第二调用指令,校验所述静态ip对象实例是否具有合法性,得到第二校验结果;若所述第二校验结果表征所述静态ip对象实例具有合法性,将所述静态ip对象实例中的静态ip地址释放到所属的地址池中,得到静态ip释放结果;

28、接收所述静态ip控制器所返回的所述静态ip释放结果;

29、若所述静态ip释放结果表征所述静态ip对象实例中全部静态ip地址已被释放,删除所述静态ip对象实例。

30、优选的,所述方法还包括:

31、响应静态ip对象创建指令,创建与所述工作负载实例相关联的新的静态ip对象实例。

32、相较于现有技术,本发明实现的有益效果为:

33、本发明提供一种集群静态ip地址分配系统及分配方法,k8s api组件响应工作负载创建指令,依次创建相关联的静态ip对象实例和工作负载实例,并将工作负载实例对应的pod调度至目标节点上,此时,目标节点从地址池中分配静态ip地址给被调度的pod,并将被调度的pod所对应静态ip地址的分配信息记录至静态ip对象实例中,该分配信息用于表征目标节点对被调度的pod分配静态ip地址的结果;k8s api组件响应工作负载删除指令将工作负载实例对应的pod调度至所述目标节点上,并保留静态ip对象实例,此时,目标节点销毁被调度的pod,保留被调度的pod的静态ip地址,并更新静态ip对象实例中被调度的pod所对应静态ip地址的分配信息;k8s api组件响应工作负载重建指令,重新创建工作负载实例,并将工作负载实例对应的pod调度至目标节点上,此时,目标节点根据静态ip对象实例中被调度的pod所对应静态ip地址的分配信息分配静态ip地址给被调度的pod,并更新静态ip对象实例中被调度的pod所对应静态ip地址的分配信息。

34、由此可见,本发明为工作负载设计一个静态ip对象,可以记录其pod静态ip地址的分配信息。k8s api组件在工作负载实例创建前先创建并关联一个静态ip对象实例;k8sapi组件首次创建工作负载实例时将其pod调度到目标节点上,目标节点从地址池中分配静态ip地址给被调度的pod、并将静态ip地址的分配信息记录到静态ip对象实例中;k8s api组件删除工作负载实例时将其pod被调度到目标节点、并保留静态ip对象实例,目标节点销毁被调度的pod、保留静态ip地址、并更新静态ip地址的分配信息;k8s api组件重建工作负载实例时重建工作负载实例后将其pod调度至目标节点,目标节点根据静态ip对象实例中静态ip地址的分配信息分配静态ip地址给被调度的pod、并更新静态ip地址的分配信息。对此,本发明可以实现k8s集群中静态ip地址的分配和管理,使得k8s的工作负载删除重建后能保持静态ip地址不变,由此可以支持有固定ip地址依赖的应用,比如ip地址白名单、基于ip地址的审核和控制等业务场景。

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