一种容器IP地址分配的方法和系统技术方案

技术编号:17037613 阅读:45 留言:0更新日期:2018-01-13 22:18
本发明专利技术公开了一种容器IP地址分配的方法和系统,涉及计算机技术领域。该方法的一具体实施方式包括:根据第一分配需求将总地址池中的部分IP地址与对应的容器建立一一对应的绑定关系;接收到分配IP地址的请求的情况下,判断待分配IP地址的容器是否与IP地址有绑定关系;如果有,则将所述待分配IP地址的容器所绑定的IP地址分配给该容器;否则,将所述总地址池中未绑定的IP地址分配给所述待分配IP地址的容器。该实施方式可实现IP地址与容器的绑定,进而保证容器重启或者迁移时IP地址不变,确保服务不中断。

A method and system for container IP address allocation

The invention discloses a method and system for the distribution of IP address of a container, which relates to the field of computer technology. One embodiment of the method includes: according to the first distribution demand container part IP address in the address pool and the corresponding binding corresponding relationship; the received IP address allocation request, determine the container to be assigned IP address and IP address binding relationship is there; if there is, it will the vessel is to be allocated IP address binding IP address assigned to the container; otherwise, the container will not bind the IP address allocation total address pool to the allocation of IP address. This implementation can bind the IP address to the container, and then ensure that the container is restarted or migrated to the same IP address, ensuring that the service is not interrupted.

【技术实现步骤摘要】
一种容器IP地址分配的方法和系统
本专利技术涉及计算机
,尤其涉及一种容器IP地址分配的方法和系统。
技术介绍
容器是与系统其他部分隔离开的一系列进程,从一个模版镜像运行,并由该镜像提供支持进程所需的全部文件。其中,Docker是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何运行的Linux机器上,也可以实现虚拟化。容器是完全使用沙箱机制,相互之间不会有任何接口。现如今,Docker的应用也越来越广泛,无论是从github上的代码活跃度,还是Redhat在RHEL6.5中集成对Docker的支持,就连Google的omputeEngine也支持Docker在其之上运行。Kubernetes是Google开源的容器集群管理系统,是Docker生态圈中重要一员,其提供应用部署、维护、扩展机制等功能,利用Kubernetes能方便地管理跨机器运行容器化的应用。而Kubernetes如何灵活的配置容器的IP地址无疑是构建网络的重要问题。目前有Flannel、Calico-cni等方法用于Kubernetes的网络管理。Flannel配合Docker,让集群中的所有节点重新规划IP地址的使用规则,从而使得不同节点上的容器能够获得“同属一个内网”且“不重复的”IP地址,并让属于不同节点上的容器能够直接通过内网IP通信。但是在设计网络时,如果需要规定每台物理机或者某几台物理机上的容器IP范围需要对etcd服务器进行配置。而且,Flannel将TCP数据包装在另一种网络包里面进行路由转发和通信,默认的节点间数据通信方式是UDP转发。这就会使网络性能会有损耗并且在分析网络故障时较复杂。Calico-cni是一种CNI即网络插件模式,需要calico和calico-ipam两个可执行文件和配置文件的组合起来使用。直接与kubelet集成,运行在每节点从而发现被创建的容器,从配置的地址段中随机分配一个子网给该物理节点,并从该子网中分配一个地址给容器。在这种方法中同一物理机上的容器共享同一个子网,不同物理机上的容器无法共享同一个子网。以上方法都无法实现容器和IP地址的绑定,当容器在同一个物理机上重启或者迁移到别的物理机上时,IP地址将发生变化。这样对于监听固定IP地址的服务将无法正常运行。
技术实现思路
有鉴于此,本专利技术实施例提供一种容器IP地址分配的方法和系统,能够通过配置的总地址池为所有节点进行分配IP地址,并且还可以根据需求将总地址池中的部分IP地址与容器进行绑定,保证了容器重启或者迁移时IP地址不变,确保服务不中断。为实现上述目的,根据本专利技术实施例的一个方面,提供了一种容器IP地址分配的方法。本专利技术实施例的容器IP地址分配的方法包括:根据第一分配需求将总地址池中的部分IP地址与对应的容器建立一一对应的绑定关系;接收到分配IP地址的请求的情况下,判断待分配IP地址的容器是否与IP地址有绑定关系;如果有,则将所述待分配IP地址的容器所绑定的IP地址分配给该容器;否则,将所述总地址池中未绑定的IP地址分配给所述待分配IP地址的容器。可选地,所述根据第一分配需求将总地址池中的部分IP地址与对应的容器建立一一对应的绑定关系的步骤包括:根据第一分配需求从总地址池中读取出部分IP地址,并且根据第一分配需求确定出待绑定IP地址的容器的绑定标签;将所述绑定标签与读取出的IP地址建立一对一的对应关系;将所述对应关系记录在静态分配列表中;所述判断待分配IP地址的容器是否与IP地址有绑定关系的步骤包括:判断待分配IP地址的容器是否具有绑定标签;所述将所述待分配IP地址的容器所绑定的IP地址分配给该容器的步骤包括:获取待分配IP地址的容器的绑定标签;根据所述绑定标签在所述静态分配列表中查找出对应的IP地址;将所述IP地址分配给所述待分配IP地址的容器。可选地,所述根据第一分配需求将总地址池中的部分IP地址与对应的容器建立一一对应的绑定关系的步骤之前,还包括:根据预先确定的IP地址数量配置总地址池;然后将所述总地址池存储在etcd的数据库中。可选地,所述根据第一分配需求将总地址池中的部分IP地址与对应的容器建立一一对应的绑定关系的步骤之前,还包括:根据第二分配需求为指定的物理机通过配置文件配置指定地址池,并且所述指定地址池中的IP地址全部包含在所述总地址池中;所述将所述总地址池中未绑定的IP地址分配给所述待分配IP地址的容器的步骤包括:判断所述待分配IP地址的容器所在的物理机是否配置了指定地址池;如果没有,则将所述总地址池中未绑定的IP地址分配给所述待分配IP地址的容器;否则,将所述指定地址池中未绑定的IP地址分配给所述待分配IP地址的容器。可选地,所述将所述总地址池中未绑定的IP地址分配给所述待分配IP地址的容器的步骤还包括:判断所述指定地址池与其他物理机的指定地址池是否有交集;如果有交集,则输出报错信息;否则,将所述指定地址池中未分配列表中的IP地址分配给所述待分配IP地址的容器,并且将所述IP地址从未分配列表中移除,以及将所述IP地址与获取所述IP地址的容器对应地记录在已分配列表中。可选地,所述将所述待分配IP地址的容器所绑定的IP地址分配给该容器的步骤包括:根据当前绑定的IP地址的顺序确定位于第一位的IP地址,然后将该IP地址分配给该容器;所述将所述总地址池中未绑定的IP地址分配给所述待分配IP地址的容器的步骤包括:根据总地址池中未绑定的IP地址的顺序确定位于第一位的IP地址,然后将该IP地址分配给该容器。可选地,将IP地址分配给容器之后,还包括:根据已分配的IP地址,为获取该IP地址的容器创建一对veth-pair。本专利技术实施例的容器IP地址分配的系统包括:配置模块,用于根据第一分配需求将总地址池中的部分IP地址与对应的容器建立一一对应的绑定关系;判断模块,用于在接收到分配IP地址的请求的情况下,判断待分配IP地址的容器是否与IP地址有绑定关系;静态分配模块,用于在所述判断模块判断出所述待分配IP地址的容器与IP地址有绑定关系后,将所述待分配IP地址的容器所绑定的IP地址分配给该容器;动态分配模块,用于在所述判断模块判断出所述待分配IP地址的容器与IP地址没有绑定关系后,将所述总地址池中未绑定的IP地址分配给所述待分配IP地址的容器。可选地,所述配置模块还用于,根据第一分配需求从总地址池中读取出部分IP地址,并且根据第一分配需求确定出待绑定IP地址的容器的绑定标签;将所述绑定标签与读取出的IP地址建立一对一的对应关系;将所述对应关系记录在静态分配列表中;所述判断模块还用于,判断待分配IP地址的容器是否具有绑定标签。可选地,所述静态分配模块包括:获取单元,用于获取待分配IP地址的容器的绑定标签;查找单元,用于根据所述绑定标签在所述静态分配列表中查找出对应的IP地址;分配单元,用于将所述IP地址分配给所述待分配IP地址的容器。可选地,所述配置模块还用于,在根据第一分配需求将总地址池中的部分IP地址与对应的容器建立一一对应的绑定关系的步骤之前,根据预先确定的IP地址数量配置总地址池;然后将所述总地址池存储在etcd的数据库中。可选地,所述配置模块还用于,根据第一分配需求将总地址池本文档来自技高网
...
一种容器IP地址分配的方法和系统

【技术保护点】
一种容器IP地址分配的方法,其特征在于,包括:根据第一分配需求将总地址池中的部分IP地址与对应的容器建立一一对应的绑定关系;接收到分配IP地址的请求的情况下,判断待分配IP地址的容器是否与IP地址有绑定关系;如果有,则将所述待分配IP地址的容器所绑定的IP地址分配给该容器;否则,将所述总地址池中未绑定的IP地址分配给所述待分配IP地址的容器。

【技术特征摘要】
1.一种容器IP地址分配的方法,其特征在于,包括:根据第一分配需求将总地址池中的部分IP地址与对应的容器建立一一对应的绑定关系;接收到分配IP地址的请求的情况下,判断待分配IP地址的容器是否与IP地址有绑定关系;如果有,则将所述待分配IP地址的容器所绑定的IP地址分配给该容器;否则,将所述总地址池中未绑定的IP地址分配给所述待分配IP地址的容器。2.根据权利要求1所述的方法,其特征在于,所述根据第一分配需求将总地址池中的部分IP地址与对应的容器建立一一对应的绑定关系的步骤包括:根据第一分配需求从总地址池中读取出部分IP地址,并且根据第一分配需求确定出待绑定IP地址的容器的绑定标签;将所述绑定标签与读取出的IP地址建立一对一的对应关系;将所述对应关系记录在静态分配列表中;所述判断待分配IP地址的容器是否与IP地址有绑定关系的步骤包括:判断待分配IP地址的容器是否具有绑定标签;所述将所述待分配IP地址的容器所绑定的IP地址分配给该容器的步骤包括:获取待分配IP地址的容器的绑定标签;根据所述绑定标签在所述静态分配列表中查找出对应的IP地址;将所述IP地址分配给所述待分配IP地址的容器。3.根据权利要求1所述的方法,其特征在于,所述根据第一分配需求将总地址池中的部分IP地址与对应的容器建立一一对应的绑定关系的步骤之前,还包括:根据预先确定的IP地址数量配置总地址池;然后将所述总地址池存储在etcd的数据库中。4.根据权利要求1所述的方法,其特征在于,所述根据第一分配需求将总地址池中的部分IP地址与对应的容器建立一一对应的绑定关系的步骤之前,还包括:根据第二分配需求为指定的物理机通过配置文件配置指定地址池,并且所述指定地址池中的IP地址全部包含在所述总地址池中;所述将所述总地址池中未绑定的IP地址分配给所述待分配IP地址的容器的步骤包括:判断所述待分配IP地址的容器所在的物理机是否配置了指定地址池;如果没有,则将所述总地址池中未绑定的IP地址分配给所述待分配IP地址的容器;否则,将所述指定地址池中未绑定的IP地址分配给所述待分配IP地址的容器。5.根据权利要求4所述的方法,其特征在于,所述将所述总地址池中未绑定的IP地址分配给所述待分配IP地址的容器的步骤还包括:判断所述指定地址池与其他物理机的指定地址池是否有交集;如果有交集,则输出报错信息;否则,将所述指定地址池中未分配列表中的IP地址分配给所述待分配IP地址的容器,并且将所述IP地址从未分配列表中移除,以及将所述IP地址与获取所述IP地址的容器对应地记录在已分配列表中。6.根据权利要求1所述的方法,其特征在于,所述将所述待分配IP地址的容器所绑定的IP地址分配给该容器的步骤包括:根据当前绑定的IP地址的顺序确定位于第一位的IP地址,然后将该IP地址分配给该容器;所述将所述总地址池中未绑定的IP地址分配给所述待分配IP地址的容器的步骤包括:根据总地址池中未绑定的IP地址的顺序确定位于第一位的IP地址,然后将该IP地址分配给该容器。7.根据权利要求1所述的方法,其特征在于,将IP地址分配给容器之后,还包括:根据已分配的IP地址,为获取该IP地址的容器创建一对veth-pair。8.一种容器IP地址分配的系统,其特征在于,包括:配置模块,用于根据第一分配需求将总地址池中的部分IP地址与对应的容器建立一一对应的绑定关系...

【专利技术属性】
技术研发人员:沈娟刘海锋
申请(专利权)人:北京京东尚科信息技术有限公司北京京东世纪贸易有限公司
类型:发明
国别省市:北京,11

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

1