CN115314468B - 一种容器云平台的ip地址分配方法和系统 - Google Patents
一种容器云平台的ip地址分配方法和系统 Download PDFInfo
- Publication number
- CN115314468B CN115314468B CN202210938375.7A CN202210938375A CN115314468B CN 115314468 B CN115314468 B CN 115314468B CN 202210938375 A CN202210938375 A CN 202210938375A CN 115314468 B CN115314468 B CN 115314468B
- Authority
- CN
- China
- Prior art keywords
- address
- alternative
- data packet
- cloud platform
- container cloud
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
Images
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L61/00—Network arrangements, protocols or services for addressing or naming
- H04L61/09—Mapping addresses
- H04L61/10—Mapping addresses of different types
- H04L61/103—Mapping addresses of different types across network layers, e.g. resolution of network layer into physical layer addresses or address resolution protocol [ARP]
Landscapes
- Engineering & Computer Science (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Data Exchanges In Wide-Area Networks (AREA)
- Small-Scale Networks (AREA)
Abstract
本申请涉及容器云平台技术领域,提供了一种容器云平台的IP地址分配方法和系统,该方法应用于CNI组件,包括:响应于接收到IP地址分配指令,在IP地址分配数据中的标识为处于未分配状态的IP地址中选择备选IP地址;其中,IP地址分配指令用于指示为容器云平台创建的容器组分配IP地址;基于备选IP地址生成和发出探测数据包,并根据探测数据包的反馈结果,确定备选IP地址是否已被占用;响应于备选IP地址未被占用,将备选IP地址分配给容器云平台创建的容器组,并将IP地址分配数据中的备选IP地址标识为已分配状态。如此,在为容器组分配IP地址之前,检测该IP地址实际上是否被占用,避免了因IP地址分配数据与实际IP地址分配情况不符而引起的IP地址冲突问题。
Description
技术领域
本申请涉及容器云平台技术领域,特别涉及一种容器云平台的IP地址分配方法、系统、计算机可读存储介质和电子设备。
背景技术
容器云平台(例如Kubernetes集群)创建容器组时,需要为所创建的容器组分配IP地址等网络资源。
相关技术中,容器云平台通过容器网络接口(Container Network Interface,简称CNI)组件维护IP地址分配数据,在容器组被创建时,通过调用CNI组件来为容器组分配IP地址等网络资源。
上述技术方案中,虽然CNI组件通过管理IP地址分配数据,能够将已分配的IP地址和未分配的IP地址进行区分,防止同一个IP地址被不同的组件或者容器组使用,避免造成IP冲突,但是,由于种种原因,生产实践中仍然会出现CNI组件所管理的IP分配数据与实际IP地址分配情况不符的情况,导致已分配的IP地址被再次分配,造成IP地址冲突。
因此,需要提供一种针对上述现有技术不足的改进技术方案。
发明内容
本申请的目的在于提供一种容器云平台的IP地址分配方法、系统、计算机可读存储介质和电子设备,以解决或缓解上述现有技术中存在的问题。
为了实现上述目的,本申请提供如下技术方案:
本申请提供了一种容器云平台的IP地址分配方法,所述方法应用于CNI组件,所述方法包括:
响应于接收到IP地址分配指令,在IP地址分配数据中的标识为处于未分配状态的IP地址中选择备选IP地址;其中,所述IP地址分配指令用于指示为所述容器云平台创建的容器组分配IP地址,所述IP地址分配数据用于记录所述容器云平台的IP地址分配情况;
基于所述备选IP地址生成和发出探测数据包,并根据所述探测数据包的反馈结果,确定所述备选IP地址是否已被占用;
响应于所述备选IP地址未被占用,将所述备选IP地址分配给所述容器云平台创建的容器组,并将所述IP地址分配数据中的所述备选IP地址标识为已分配状态。
上述方案中,所述探测数据包具体为ARP请求数据包,
对应地,
所述基于所述备选IP地址生成和发出探测数据包,并根据所述探测数据包的反馈结果,确定所述备选IP地址是否已被占用,具体为:
向所述容器云平台中的所有组件广播所述ARP请求数据包;其中,所述ARP请求数据包的目的IP地址为所述备选IP地址;
响应于接收到所述ARP请求数据包对应的ARP响应数据包,确定所述备选IP地址已被占用。
上述方案中,所述ARP请求数据包的源地址为0.0.0.0,
对应地,
在所述备选IP地址已被占用时,占用所述备选IP地址的组件发出的所述ARP响应数据包的目的地址为广播地址,以在所述容器云平台中广播所述ARP响应数据包。
上述方案中,所述方法还包括:
如果超过预设时间阈值未接收到所述ARP响应数据包,确定所述备选IP地址未被占用。
上述方案中,所述方法还包括:
响应于所述备选IP地址已被占用,将IP地址分配数据中的所述备选IP地址标识为已分配状态;
重新在所述IP地址分配数据中的标识为处于未分配状态的IP地址中选择新的备选IP地址。
上述方案中,所述探测数据包具体为TCP连接请求数据包,
对应地,
所述基于所述备选IP地址生成和发出探测数据包,并根据所述探测数据包的反馈结果,确定所述备选IP地址是否已被占用,具体为:
发出所述TCP连接请求数据包;其中,所述TCP连接请求数据包的目的IP地址为所述备选IP地址,所述TCP连接请求数据包的目的端口为随机选择的端口号;
响应于接收到连接成功或者连接被拒绝的反馈,确定所述备选IP地址已被占用;
响应于接收到连接超时的反馈,确定所述备选IP地址未被占用。
上述方案中,所述基于所述备选IP地址生成和发出探测数据包,还包括:
向所述容器云平台以外的网络可达的所有网络设备发送所述探测数据包。
本申请实施例还提供一种容器云平台的IP地址分配系统,所述系统应用于CNI组件,包括:
响应单元,配置为响应于接收到IP地址分配指令,在IP地址分配数据中的标识为处于未分配状态的IP地址中选择备选IP地址;其中,所述IP地址分配指令用于指示为所述容器云平台创建的容器组分配IP地址,所述IP地址分配数据用于记录所述容器云平台的IP地址分配情况;
发送单元,配置为基于所述备选IP地址生成和发出探测数据包,并根据所述探测数据包的反馈结果,确定所述备选IP地址是否已被占用;
分配单元,配置为响应于所述备选IP地址未被占用,将所述备选IP地址分配给所述容器云平台创建的容器组,并将所述IP地址分配数据中的所述备选IP地址标识为已分配状态。
本申请实施例还提供一种计算机可读存储介质,其上存储有计算机程序,所述计算机程序为如上任一所述的容器云平台的IP地址分配方法。
本申请实施例还提供一种电子设备,包括:存储器、处理器、以及存储在所述存储器中并可在所述处理器上运行的程序,所述处理器执行所述程序时实现如上任一所述的容器云平台的IP地址分配方法。
有益效果:
本申请中,CNI组件在接收到IP地址分配指令后,在IP地址分配数据中的标识为处于未分配状态的IP地址中选择备选IP地址,然后基于备选IP地址生成和发出探测数据包,并根据探测数据包的反馈结果,确定备选IP地址是否已被占用;最后,在备选IP地址未被占用的情况下,将备选IP地址分配给容器云平台创建的容器组,并将IP地址分配数据中的备选IP地址标识为已分配状态。如此,通过在为容器组分配IP地址分配数据中处于未分配状态的备选IP地址之前,以发送探测数据包的方式确定该备选IP地址实际上是否未被占用,以保证分配给容器组的备选IP地址实际上未被占用,避免了因IP地址分配数据与实际IP地址分配不符而引起的IP地址冲突问题。
附图说明
构成本申请的一部分的说明书附图用来提供对本申请的进一步理解,本申请的示意性实施例及其说明用于解释本申请,并不构成对本申请的不当限定。其中:
图1为根据本申请的一些实施例提供的容器云平台的IP地址分配方法的流程示意图;
图2为根据本申请的一些实施例提供的Kubernetes集群中CNI组件为容器组选择备选IP地址的逻辑示意图;
图3为根据本申请的一些实施例提供的使用ARP请求数据包对Kubernetes集群进行IP地址探测的逻辑示意图;
图4为根据本申请的一些实施例提供的使用ARP请求数据包对Kubernetes集群以及外部网络设备进行IP地址探测的逻辑示意图;
图5为根据本申请的一些实施例提供的容器云平台的IP地址分配系统的结构示意图;
图6为根据本申请的一些实施例提供的电子设备的结构示意图;
图7为根据本申请的一些实施例提供的电子设备的硬件结构图。
具体实施方式
下面将参考附图并结合实施例来详细说明本申请。各个示例通过本申请的解释的方式提供而非限制本申请。实际上,本领域的技术人员将清楚,在不脱离本申请的范围或精神的情况下,可在本申请中进行修改和变型。例如,示为或描述为一个实施例的一部分的特征可用于另一个实施例,以产生又一个实施例。因此,所期望的是,本申请包含归入所附权利要求及其等同物的范围内的此类修改和变型。
在以下描述中,所涉及的术语“第一/第二/第三”仅仅是区别类似的对象,不代表对对象的特定排序,可以理解地,“第一/第二/第三”在允许的情况下可以互换特定的顺序或先后次序,以使这里描述的本申请实施例能够以除了在这里图示或描述的以外的顺序实施。
除另有定义,本文所使用的所有的技术和科学术语与属于本公开的技术领域的技术人员通常理解的含义相同。本文中所使用的术语只是为了描述本公开实施例的目的,不是旨在限制本公开。
为了便于理解本申请的技术方案,下面对本申请涉及的相关技术进行说明:
容器云平台是依靠容器技术,结合云原生技术,采用容器、容器编排、服务网格、微服务等技术构建的一种轻量化云平台。
Kubernetes是Google开源的容器编排引擎,用于管理云平台中多个主机上容器化应用。
Kubernetes集群是应用最广的容器云平台之一,是部署有Kubernetes系统的节点集群,包括多个节点。
目前,以Kubernetes集群为代表的容器云平台自身不提供网络功能,其网络解决方案由网络插件例如CNI组件提供。CNI组件是实现CNI规范的程序,CNI组件通过配置容器网络的接口规范来完成容器云平台中的网络管理和通信,在容器创建时能够为其分配IP地址等网络资源,以及在容器被删除时释放其占用的IP地址等网络资源。CNI规范由一组用于配置Linux容器网络接口的规范和库组成,其中包括网络资源分配接口和网络资源释放接口。
如背景技术所述,虽然CNI组件通过维护IP地址分配数据能够一定程度上避免IP地址冲突,但实际应用中仍会出现IP地址冲突。以Kubernetes集群为例,导致IP地址冲突情况包括:
第一种情况,当Kubernetes集群中某个容器组(Pod)被删除时,对Pod的删除操作失败,而CNI规范要求CNI组件被调用后必须返回网络资源释放成功的信息,并在IP地址分配数据中将该Pod占用的IP地址转换为未分配状态。也就是说,对Pod的删除操作失败导致该Pod的IP地址并未真正被释放,实际仍处于被占用状态,而CNI组件却依据CNI规范要求将该IP地址转换为未分配状态,出现IP地址分配数据与实际IP地址使用情况不符。一旦处于未分配状态的该IP地址被CNI组件分配给其他Pod使用,则会导致集群内存在两个Pod使用同一个IP地址,造成IP地址冲突。
第二种情况,CNI组件因程序运行出错,将处于已分配状态的IP地址重新分配给该Pod使用,造成IP地址冲突。
第三种情况,由CNI组件维护的IP地址分配数据被人为修改,导致所记录的IP地址分配数据与实际情况不符,CNI组件依据IP地址分配数据将处于已分配状态的IP地址分配给新调度的Pod使用,造成IP地址冲突。
第四种情况,Kubernetes集群运行过程中,还需要与集群外的网络设备进行网络通信,集群管理员为这些网络设备分配IP地址时,可能将IP地址分配数据中的处于未分配状态的IP地址分配给网络设备使用,且没有手动在IP地址分配数据中将该IP地址转换为已分配状态,CNI组件无法感知该IP地址已被分配,又将该IP地址分配给了新的Pod,导致IP地址冲突。
一旦出现IP地址冲突,会导致业务层面出现各种错误,在解决这些错误时对问题的定位极为繁琐,即便确定错误是由IP地址冲突引发,也很难在大规模集群中排查出哪些组件或者网络设备之间出现了IP地址冲突,极大影响了业务系统的正常运行。
申请人对上述技术问题进行深入研究和分析后发现,目前容器云平台的IP地址分配机制的核心在于CNI组件维护的IP地址分配数据,一旦IP地址分配数据与容器云平台及外部网络设备的实际IP地址分配情况不符,就会出现已分配的IP地址被再次分配的情况,从而导致IP地址冲突。
基于前述IP地址冲突情况的说明可知,一方面,由于CNI规范在短时间内无法更改,其要求CNI组件被调用后必须返回网络资源释放成功的信息,导致IP地址分配数据与实际IP地址使用情况不符,引发的IP地址冲突也无法改变。另一方面,IP地址分配数据被人为修改,以及在为集群外的网络设备分配IP地址后,没有及时手动修改IP地址分配数据的情况也时有发生,导致IP地址分配数据与IP地址的实际使用情况不符的情况经常发生。
为此,本申请提供一种容器云平台的IP地址分配方法、系统、计算机可读存储介质和电子设备,在CNI组件为创建的容器组分配IP地址之前,先发送探测数据包以确认该备选IP地址实际上是否处于未被占用状态。如果该备选IP地址实际上未被占用,则将该备选IP地址分配给所创建的容器组,并在IP地址分配数据中将该备选IP地址标识为已分配状态,从而通过引入确认机制,避免了IP地址分配数据与实际IP地址分配情况不符而引起的IP地址冲突问题。
示例性方法
本申请实施例提供一种容器云平台的IP地址分配方法,如图1所示,该容器云平台的IP地址分配方法应用于CNI组件,包括:
步骤S101、响应于接收到IP地址分配指令,在IP地址分配数据中的标识为处于未分配状态的IP地址中选择备选IP地址。
其中,IP地址分配指令用于指示为容器云平台创建的容器组分配IP地址,IP地址分配数据用于记录容器云平台的IP地址分配情况。
本申请实施例中,当CNI组件接收到指示为容器云平台创建的容器组分配IP地址的IP地址分配指令时,在记录容器云平台的IP地址分配情况的IP地址分配数据中,从处于未分配状态的IP地址中选择备选IP地址。
需要说明的是,本申请实施例中,IP地址分配数据用于记录容器云平台的IP地址分配情况,该分配情况分为已分配状态和未分配状态两种状态。
为了便于理解,下面以Kubernetes集群为例说明创建容器组时CNI组件为容器组选择备选IP地址的工作流程。
如图2所示,在Kubernetes集群部署应用时,例如当有新的应用需要被调度至节点时,Scheduler组件将根据相关筛选条件和评分,选出合适的节点,将该合适的节点作为该应用的调度目标节点,并将该应用与调度目标节点进行绑定。
Kubernetes集群中每个节点的Kubelet组件通过API-Server组件对应用的调度进行监听,调度目标节点在确定该应用将要被调度至自身后,由调度目标节点的Kubelet组件创建新的Pod用于部署该应用,并在创建Pod的过程中,通过Kubelet组件向CNI组件发送IP地址分配指令,用于指示为所创建的Pod分配IP地址等网络资源。
实际应用中,为了能够区分Kubernetes集群内已分配的IP地址和未分配的IP地址,CNI组件管理和维护着Kubernetes集群的IP地址分配数据,用于记录Kubernetes集群中的IP地址分配情况,包括已分配状态和未分配状态两种情况。
当接收到Kubelet组件发出的为Pod分配IP地址的IP地址分配指令时,CNI组件从IP地址分配数据中选择一个处于未分配状态的IP地址,作为备选IP地址。
在选择备选IP地址时,可以按照从小到大的顺序从处于未分配状态的IP地址中选择数值最小的IP地址,也可以从处于未分配状态的IP地址中随机进行选择,本申请实施例对此不做限定。
步骤S102、基于备选IP地址生成和发出探测数据包,并根据探测数据包的反馈结果,确定备选IP地址是否已被占用。
本申请实施中,CNI组件生成和发出探测数据包,根据探测数据包的反馈结果,确定网络中备选IP地址的可达性,从而确定备选IP地址是否已被占用。
可以理解,如果备选IP地址实际上已被占用,那么必然存在某个组件正在使用该备选IP地址,向该备选IP地址发送探测数据包,使用该备选IP地址的组件就能够收到探测数据包,并对探测数据包进行反馈,CNI组件收到反馈结果后,就可以确定该备选IP地址实际上已被占用。
本申请实施例中,在CNI组件将备选IP地址分配给容器组之前,使用探测数据包对备选IP地址进行探测,可以避免IP地址重复使用所引起的IP地址冲突问题,使得容器云平台的运行更加健康稳定。
在一些实施方式中,在对备选IP地址进行探测时,探测数据包具体为ARP请求数据包。对应地,基于备选IP地址生成和发出探测数据包,并根据探测数据包的反馈结果,确定备选IP地址是否已被占用,具体为:向容器云平台中的所有组件广播ARP请求数据包;响应于接收到ARP请求数据包对应的ARP响应数据包,确定备选IP地址已被占用。
其中,ARP请求数据包的目的IP地址为备选IP地址。
本申请实施中,当探测数据包为ARP请求数据包时,为了确定备选IP地址是否已被占用,CNI组件首先生成目的IP地址为备选IP地址的ARP请求数据包,然后向容器云平台中的所有组件广播ARP请求数据包;当接收到ARP请求数据包对应的ARP响应数据包时,确定备选IP地址已被占用。
需要说明的是,ARP请求数据包所依据的是地址解析协议(Address ResolutionProtocol,简称ARP),ARP是根据IP地址获取物理地址的一个TCP/IP协议,其工作原理如下:网络设备A在知道同一网络内的网络设备B的IP地址条件下,通过发送ARP请求数据包,即可获知网络设备B的MAC(Media Access Control Address)地址。网络设备A将包含网络设备B的IP地址的ARP请求广播到网络可达的所有网络设备,网络设备B将在ARP响应数据包中返回自身的MAC地址。在整个过程中,ARP请求数据包中的源IP地址和源MAC地址为网络设备A的IP地址和MAC地址,目的IP地址为网络设备B的IP地址,目的MAC地址为00:00:00:00:00:00。ARP响应数据包中的源IP地址和源MAC地址为网络设备B的IP地址和MAC地址,目的IP地址和目的MAC地址为网络设备A的IP地址和MAC地址。当网络设备A收到ARP响应数据包后,对ARP响应数据包的报文内容进行解析,即可根据ARP响应数据包的源MAC地址获取网络设备B的MAC地址。
本申请实施例中,CNI组件生成目的IP地址为备选IP地址的ARP请求数据包之后,若备选IP地址已被容器云平台中的某一组件占用,通过向容器云平台中的所有组件广播ARP请求数据包,占用备选IP地址的组件就会向CNI组件返回相应的ARP响应数据包,只要CNI组件能够接收到ARP请求数据包对应的ARP响应数据包,则无需对ARP响应数据包的报文内容进行解析,即可确定备选IP地址已被占用。
具体地,以Kubernetes集群为例说明本申请实施例的确认机制的实现流程。参见图3,CNI组件使用ARP请求数据包在Kubernetes集群所在的网络中探测该IP地址是否被占用的流程如下:
在Kubernetes集群创建Pod的过程中,Kubelet组件向CNI组件发送IP地址分配指令,指示为所创建的Pod分配IP地址等网络资源。
CNI组件接收到IP地址分配指令后,首先查询IP地址分配数据,获取全部处于未分配状态的IP地址,然后从处于未分配状态的IP地址选择一个IP地址,作为备选IP地址。
CNI组件生成ARP请求数据包,并将ARP请求数据包的目的IP地址设置为备选IP地址,源IP地址设置为CNI组件的IP地址。然后,CNI组件向Kubernetes集群的所有组件广播该ARP请求数据包。
应当理解,CNI组件发送的ARP请求数据包能够到达Kubernetes集群中的其他所有组件,包括但不限于:Kubernetes集群中所有的Pod、Kubelet组件、API-Server组件、Scheduler组件等。
上述组件接收到ARP请求数据包后,解析出ARP请求数据包中的目的IP地址,即备选IP地址,将其与自身的IP地址作比较,当发现备选IP地址与自身的IP地址相同时,生成ARP响应数据包(其中包含该组件自身的MAC地址),并以ARP请求数据包中的源IP地址为目的IP地址返回该ARP响应数据包。当发现备选IP地址与自身的IP地址不同时,则直接将ARP请求数据包丢弃。
当CNI组件接收到ARP请求数据包对应的ARP响应数据包时,无需对ARP响应数据包的报文内容进行解析,即可确定备选IP地址已被占用。
本申请实施例中,基于ARP进行IP地址探测,只需确定备选IP地址,即可生成和发出ARP请求数据包,且只要接收方网络可达,即可接收到ARP请求数据包,该方案简单、易于实施,节约了IP地址的探测时间,提高了效率。
需要说明的是,CNI组件在发送ARP请求数据包时,需要占用一个IP地址作为ARP请求数据包中的源IP地址和ARP响应数据包中的目的IP地址,以确保CNI组件能够收到ARP响应数据包。当同时存在多个容器组需要进行IP地址分配时,即同时接收到多个IP地址分配指令时,需要同时占用多个IP地址以发送ARP请求数据包。在容器云平台中,IP地址属于宝贵的网络资源,占用过多的IP地址会造成网络资源的紧缺。
为了缓解上述问题,以减少CNI组件进行IP地址探测时对IP地址资源的占用,在一些实施方式中,ARP请求数据包的源地址为0.0.0.0。对应地,在备选IP地址已被占用时,占用备选IP地址的组件发出的ARP响应数据包的目的地址为广播地址,以在容器云平台中广播ARP响应数据包。
本申请实施例中,由于CNI组件并不需要对ARP响应数据包的报文内容进行解析,只要能够收到ARP响应数据包就可以确定备选IP地址已被占用,因此将ARP请求数据包的源地址设置为0.0.0.0,避免了CNI组件同时处理多个IP地址分配指令时大量占用IP地址资源,造成IP地址资源浪费。
实际应用中,在将ARP请求数据包的源地址设置为0.0.0.0、目的IP地址设置为备选IP地址后,CNI组件向容器云平台中的所有组件广播ARP请求数据包。
容器云平台中的所有组件接收ARP请求数据包,并对ARP请求数据包进行解析,得到备选IP地址。然后将备选IP地址与自身的IP地址作比较,若备选IP地址与自身的IP地址相同,占用备选IP地址的组件生成ARP响应数据包,并将ARP响应数据包的目的地址设置为广播地址,以向容器云平台中所有的组件广播ARP响应数据包。
CNI组件作为网络内的组件,与占用备选IP地址的组件之间网络处于可达状态,其能够收到占用备选IP地址的组件广播的ARP响应数据包,从而确定备选IP地址已被占用。
在确定备选IP地址已被占用之后,该方法还包括:响应于备选IP地址已被占用,将IP地址分配数据中的备选IP地址标识为已分配状态;重新在IP地址分配数据中的标识为处于未分配状态的IP地址中选择新的备选IP地址。
确定备选IP地址已被占用后,说明出现了IP地址分配数据与容器云平台IP地址使用情况不符,在这种情况下,CNI组件对IP地址分配数据进行更新,即将IP地址分配数据中的备选IP地址标识为已分配状态,随后从IP地址分配数据的处于未分配状态的IP地址中重新选择一个IP地址,作为新的备选IP地址,并重新执行上述步骤,直到找到未被占用的备选IP地址。
需要说明的是,在CNI组件进行IP地址分配时,处于已分配状态的IP地址无法再次被分配给其他容器组使用。
本申请实施例中,在发现IP地址分配数据与容器云平台IP地址使用情况不符时,能够及时对IP地址分配数据进行更新,从而使IP地址分配数据尽可能与实际使用情况相一致,加快了后续IP地址分配的速度,提升了CNI组件的工作效率。
基于ARP请求数据包进行IP地址探测时,如果超过预设时间阈值未接收到ARP响应数据包,则确定备选IP地址未被占用。也就是说,CNI组件在预设时间阈值内未接收到ARP响应数据包,则说明备选IP地址未被占用。
应当理解,基于ARP请求数据包的工作原理,只有当容器云平台中的某个组件已经占用该备选IP地址后,才会在接收到ARP请求数据包后生成对应的ARP响应数据包,并向CNI组件发送ARP响应数据包。也就是说,如果该备选IP地址未被占用,CNI组件将不会收到用于确定该备选IP地址未被占用的反馈信息,因此一旦超过预设时间阈值未接收到ARP响应数据包,则可以确定该备选IP地址未被占用。
在另一些实施方式中,在对IP地址进行探测时,探测数据包具体为TCP(Transmission Control Protocol)连接请求数据包。
对应地,基于备选IP地址生成和发出探测数据包,并根据探测数据包的反馈结果,确定备选IP地址是否已被占用,具体为:发出TCP连接请求数据包;其中,TCP连接请求数据包的目的IP地址为备选IP地址,TCP连接请求数据包的目的端口为随机选择的端口号;响应于接收到连接成功或者连接被拒绝的反馈,确定备选IP地址已被占用;响应于接收到连接超时的反馈,确定备选IP地址未被占用。
需要说明的是,传输控制协议(Transmission Control Protocol,简称TCP)是一种面向连接的、可靠的、基于字节流的传输层通信协议。应当理解,在发出TCP连接请求数据包时,TCP连接请求数据包的SYN标志位为1,其发送与接收的过程即为TCP建立连接的过程。
实际应用中,在生成TCP连接请求数据包时,需要确定建立连接双方的IP地址和端口。本申请实施例中,在基于TCP进行IP地址探测时,CNI组件将TCP连接请求数据包的目的IP地址设置为备选IP地址,目的端口设置为随机选择的端口号,随后发出该TCP连接请求数据包。
应当理解,在发出TCP连接请求数据包后可能会出现三种情况,第一种情况是TCP连接请求数据包的目的IP地址和目的端口刚好被某个组件占用,那么CNI组件将收到连接成功的反馈信息。第二种情况是TCP连接请求数据包的目的IP地址被某个组件占用,但目的端口未被占用,那么CNI组件将收到连接被拒绝的反馈信息。第三种情况是TCP连接请求数据包的目的IP地址未被占用,那么CNI组件将收到连接超时的反馈。
因此,当接收到连接超时的反馈时,则说明备选IP地址在当前网络中不存在,从而确定备选IP地址未被占用。
当接收到连接成功或者连接被拒绝的反馈时,说明备选IP地址已被占用,此时可以确定当前CNI组件所管理的IP地址分配数据与实际IP地址使用情况不符,需要对IP地址分配数据进行更新,即将IP地址分配数据中的备选IP地址标识为已分配状态。随后从IP地址分配数据的处于未分配状态的IP地址中重新选择一个IP地址,作为新的备选IP地址,并重新执行上述步骤,直到确定备选IP地址未被占用。
此外,为了对容器云平台之外的网络可达的网络设备进行IP地址探测,在一些实施方式中,该方法还包括:向容器云平台以外的网络可达的所有网络设备发送探测数据包。
本申请实施例中,对于容器云平台以外的网络设备,可以通过向网络可达的所有网络设备发送探测数据包,来确定容器云平台以外的网络设备是否与备选IP地址发生冲突,从而避免容器云平台以外的网络设备分配IP地址后,管理员没有及时手动更新IP分配数据导致的IP地址冲突,并使CNI组件在分配IP地址时能够主动避开容器云平台以外的网络设备占用的IP地址。
基于对ARP请求数据包和TCP连接请求数据包的工作原理的说明可知,只要容器云平台以外的网络设备与CNI组件之间网络可达,那么CNI组件即可向该网络设备发送ARP请求数据包或者TCP连接请求数据包,实现对实际IP地址分配情况的确认。
可以理解,对于容器云平台以外的网络设备,如果与CNI组件之间网络不可达,那么即便和容器云平台中的组件使用相同的IP地址,由于不会发生网络通信,也就不会产生IP地址冲突问题。
为了便于理解,下面以Kubernetes集群的CNI组件发送ARP请求数据包进行IP地址探测为例,对本申请实施进行详细说明。
参见图4,在CNI组件基于备选IP地址生成和发出ARP请求数据包后,对于Kubernetes集群以外的网络设备,只要与Kubernetes集群能够进行网络通信,就可以收到Kubernetes集群内的CNI组件发出的ARP请求数据包,因此即便备选IP地址被Kubernetes集群外的网络设备所占用,CNI组件仍可以收到返回的ARP响应数据包,从而确定备选IP地址已被占用。如果超过预设时间阈值未接收到ARP响应数据包,则认为Kubernetes集群外网络可达的网络设备并未占用备选IP地址,从而确定备选IP地址未被占用。
步骤S103、响应于备选IP地址未被占用,将备选IP地址分配给容器云平台创建的容器组,并将IP地址分配数据中的备选IP地址标识为已分配状态。
本申请实施中,当确定备选IP地址未被占用,CNI组件将备选IP地址分配给容器云平台创建的容器组,并将IP地址分配数据中的备选IP地址标识为已分配状态,完成对创建的容器组的IP地址分配过程。当容器组被分配了容器云平台内的唯一IP地址后,即可使用该IP地址与容器云平台内的其他组件和容器组进行网络通信。
应当理解,当容器云平台删除容器组时,可以通过向CNI组件发送IP释放指令,实现容器云平台所占用的IP资源的释放。具体地,以Kubernetes集群为例,当Kubernetes集群中某个Pod要被删除时,该Pod所在节点的Kubelet组件将调用CNI组件释放该Pod占用的IP地址等网络资源。相应地,CNI组件需要将IP地址分配数据中,该Pod占用的IP地址由已分配状态转换为未分配状态,回到未分配状态的IP地址允许被分配给其他Pod使用,如此实现IP地址的循环使用。
综上所述,本申请中,CNI组件在接收到IP地址分配指令后,在IP地址分配数据中的标识为处于未分配状态的IP地址中选择备选IP地址,然后基于备选IP地址生成和发出探测数据包,并根据探测数据包的反馈结果,确定备选IP地址是否已被占用;最后,在备选IP地址未被占用的情况下,将备选IP地址分配给容器云平台创建的容器组,并将IP地址分配数据中的备选IP地址标识为已分配状态。如此,通过在为容器组分配IP地址分配数据中处于未分配状态的备选IP地址之前,以发送探测数据包的方式确定该备选IP地址实际上是否未被占用,以保证分配给容器组的备选IP地址实际上未被占用,避免了因IP地址分配数据与实际IP地址分配不符而引起的IP地址冲突问题。
本申请中,在发现IP地址分配数据与实际IP地址使用情况不一致时,通过及时对IP地址分配数据进行更新,达到动态纠错的效果,大大提升了CNI组件的工作效率。
本申请中,对于容器云平台以外的网络设备,只要其与容器云平台能够进行网络通信,CNI组件在分配IP地址之前同样对其进行IP地址探测,从而能够在分配IP地址时能够主动避开这些网络设备占用的IP地址,避免IP地址冲突。
本申请中,通过使用0.0.0.0作为ARP请求数据包的源IP地址,极大地节约了容器云平台内的IP地址资源。
示例性系统
本申请实施例还提供一种容器云平台的IP地址分配系统,如图5所示,该系统应用于CNI组件,包括:响应单元501、发送单元502和分配单元503。
其中:
响应单元501,配置为响应于接收到IP地址分配指令,在IP地址分配数据中的标识为处于未分配状态的IP地址中选择备选IP地址;其中,IP地址分配指令用于指示为容器云平台创建的容器组分配IP地址,IP地址分配数据用于记录容器云平台的IP地址分配情况。
发送单元502,配置为基于备选IP地址生成和发出探测数据包,并根据探测数据包的反馈结果,确定备选IP地址是否已被占用。
分配单元503,配置为响应于备选IP地址未被占用,将备选IP地址分配给容器云平台创建的容器组,并将IP地址分配数据中的备选IP地址标识为已分配状态。
本申请实施例提供的容器云平台的IP地址分配系统,能够实现上述任一实施例的容器云平台的IP地址分配方法的流程、步骤,并达到相同的技术效果,在此不再一一赘述。
示例性设备
图6为根据本申请的一些实施例提供的电子设备的结构示意图;如图6所示,该电子设备包括:
一个或多个处理器601;
计算机可读介质,可以配置为存储一个或多个程序602,一个或多个处理器601执行一个或多个程序602时,实现如下步骤:响应于接收到IP地址分配指令,在IP地址分配数据中的标识为处于未分配状态的IP地址中选择备选IP地址;其中,IP地址分配指令用于指示为容器云平台创建的容器组分配IP地址,IP地址分配数据用于记录容器云平台的IP地址分配情况;基于备选IP地址生成和发出探测数据包,并根据探测数据包的反馈结果,确定备选IP地址是否已被占用;响应于备选IP地址未被占用,将备选IP地址分配给容器云平台创建的容器组,并将IP地址分配数据中的备选IP地址标识为已分配状态。
图7为根据本申请的一些实施例提供的电子设备的硬件结构;如图7所示,该电子设备的硬件结构可以包括:处理器701、通信接口702、计算机可读介质703和通信总线704。
其中,处理器701、通信接口702、计算机可读存储介质703通过通信总线704完成相互间的通信。
可选地,通信接口702可以为通信模块的接口,如GSM模块的接口。
其中,处理器701具体可以配置为:响应于接收到IP地址分配指令,在IP地址分配数据中的标识为处于未分配状态的IP地址中选择备选IP地址;其中,IP地址分配指令用于指示为容器云平台创建的容器组分配IP地址,IP地址分配数据用于记录容器云平台的IP地址分配情况;基于备选IP地址生成和发出探测数据包,并根据探测数据包的反馈结果,确定备选IP地址是否已被占用;响应于备选IP地址未被占用,将备选IP地址分配给容器云平台创建的容器组,并将IP地址分配数据中的备选IP地址标识为已分配状态。
处理器701可以是通用处理器,包括中央处理器(central processing unit,简称CPU)、网络处理器(Network Processor,简称NP)等,还可以是数字信号处理器(DSP)、专用集成电路(ASIC)、现成可编程门阵列(FPGA)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件。可以实现或者执行本申请实施例中的公开的各方法、步骤及逻辑框图。通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等。
本申请实施例的电子设备以多种形式存在,包括但不限于:
(1)移动通信设备:这类设备的特点是具备移动通信功能,并且以提供话音、数据通信为主要目标。这类终端包括:智能手机(例如:iPhone)、多媒体手机、功能性手机,以及低端手机等。
(2)超移动个人计算机设备:这类设备属于个人计算机的范畴,有计算和处理功能,一般也具备移动上网特性。这类终端包括:PDA、MID和UMPC设备等,例如iPad。
(3)便携式娱乐设备:这类设备可以显示和播放多媒体内容。该类设备包括:音频、视频播放器(例如:iPod),掌上游戏机,电子书,以及智能玩具和便携式车载导航设备。
(4)服务器:提供计算服务的设备,服务器的构成包括处理器、硬盘、内存、系统总线等,服务器和通用的计算机架构类似,但是由于需要提供高可靠的服务,因此在处理能力、稳定性、可靠性、安全性、可扩展性、可管理性等方面要求较高。
(5)其他具有数据交互功能的电子装置。
需要指出,根据实施的需要,可将本申请实施例中描述的各个部件/步骤拆分为更多部件/步骤,也可以将两个或多个部件/步骤或者部件/步骤的部分操作组合成新的部件/步骤,以实现本申请实施例的目的。
上述根据本申请实施例的方法可在硬件、固件中实现,或者被实现为可存储在记录介质(诸如CD ROM、RAM、软盘、硬盘或磁光盘)中的软件或计算机代码,或者被实现通过网络下载的原始存储在远程记录介质或非暂时机器存储介质中并将被存储在本地记录介质中的计算机代码,从而在此描述的方法可被存储在使用通用计算机、专用处理器或者可编程或专用硬件(诸如ASIC或FPGA)的记录介质上的这样的软件处理。可以理解,计算机、处理器、微处理器控制器或可编程硬件包括可存储或接收软件或计算机代码的存储组件(例如,RAM、ROM、闪存等),当软件或计算机代码被计算机、处理器或硬件访问且执行时,实现在此描述的容器云平台的IP地址分配方法。此外,当通用计算机访问用于实现在此示出的方法的代码时,代码的执行将通用计算机转换为用于执行在此示出的方法的专用计算机。
本领域普通技术人员可以意识到,结合本文中所公开的实施例描述的各示例的单元及方法步骤,能够以电子硬件、或者计算机软件和电子硬件的结合来实现。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和涉及约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本申请实施例的范围。
需要说明的是,本说明书中的各个实施例均采用递进的方式描述,各个实施例之间相同相似的部分互相参见即可,每个实施例重点说明的都是与其他实施例的不同之处。尤其,对于设备及系统实施例而言,由于其基本相似于方法实施例,所以描述得比较简单,相关之处参见方法实施例的部分说明即可。
以上所描述的设备及系统实施例仅仅是示意性的,其中作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元提示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部模块来实现本实施例方案的目的。本领域普通技术人员在不付出创造性劳动的情况下,即可以理解并实施。
以上所述仅为本申请的优选实施例,并不用于限制本申请,对于本领域的技术人员来说,本申请可以有各种更改和变化。凡在本申请的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本申请的保护范围之内。
Claims (7)
1.一种容器云平台的IP地址分配方法,其特征在于,所述方法应用于CNI组件,所述方法包括:
响应于接收到IP地址分配指令,在IP地址分配数据中的标识为处于未分配状态的IP地址中选择备选IP地址;其中,所述IP地址分配指令用于指示为所述容器云平台创建的容器组分配IP地址,所述IP地址分配数据用于记录所述容器云平台的IP地址分配情况;
基于所述备选IP地址生成和发出探测数据包,并根据所述探测数据包的反馈结果,确定所述备选IP地址是否已被占用;
响应于所述备选IP地址未被占用,将所述备选IP地址分配给所述容器云平台创建的容器组,并将所述IP地址分配数据中的所述备选IP地址标识为已分配状态;
其中,所述探测数据包具体为ARP请求数据包,
对应地,
所述基于所述备选IP地址生成和发出探测数据包,并根据所述探测数据包的反馈结果,确定所述备选IP地址是否已被占用,具体为:
向所述容器云平台中的所有组件广播所述ARP请求数据包;其中,所述ARP请求数据包的目的IP地址为所述备选IP地址;
响应于接收到所述ARP请求数据包对应的ARP响应数据包,确定所述备选IP地址已被占用;
其中,所述ARP请求数据包的源地址为0.0.0.0,
对应地,
在所述备选IP地址已被占用时,占用所述备选IP地址的组件发出的所述ARP响应数据包的目的地址为广播地址,以在所述容器云平台中广播所述ARP响应数据包。
2.根据权利要求1所述的容器云平台的IP地址分配方法,其特征在于,所述方法还包括:
如果超过预设时间阈值未接收到所述ARP响应数据包,确定所述备选IP地址未被占用。
3.根据权利要求1或2所述的容器云平台的IP地址分配方法,其特征在于,所述方法还包括:
响应于所述备选IP地址已被占用,将IP地址分配数据中的所述备选IP地址标识为已分配状态;
重新在所述IP地址分配数据中的标识为处于未分配状态的IP地址中选择新的备选IP地址。
4.根据权利要求1所述的容器云平台的IP地址分配方法,其特征在于,所述基于所述备选IP地址生成和发出探测数据包,还包括:
向所述容器云平台以外的网络可达的所有网络设备发送所述探测数据包。
5.一种容器云平台的IP地址分配系统,其特征在于,所述系统应用于CNI组件,包括:
响应单元,配置为响应于接收到IP地址分配指令,在IP地址分配数据中的标识为处于未分配状态的IP地址中选择备选IP地址;其中,所述IP地址分配指令用于指示为所述容器云平台创建的容器组分配IP地址,所述IP地址分配数据用于记录所述容器云平台的IP地址分配情况;
发送单元,配置为基于所述备选IP地址生成和发出探测数据包,并根据所述探测数据包的反馈结果,确定所述备选IP地址是否已被占用;
分配单元,配置为响应于所述备选IP地址未被占用,将所述备选IP地址分配给所述容器云平台创建的容器组,并将所述IP地址分配数据中的所述备选IP地址标识为已分配状态;
其中,所述探测数据包具体为ARP请求数据包,
对应地,
所述发送单元,具体用于向所述容器云平台中的所有组件广播所述ARP请求数据包;其中,所述ARP请求数据包的目的IP地址为所述备选IP地址;
响应于接收到所述ARP请求数据包对应的ARP响应数据包,确定所述备选IP地址已被占用;
其中,所述ARP请求数据包的源地址为0.0.0.0,
对应地,
在所述备选IP地址已被占用时,占用所述备选IP地址的组件发出的所述ARP响应数据包的目的地址为广播地址,以在所述容器云平台中广播所述ARP响应数据包。
6.一种计算机可读存储介质,其上存储有计算机程序,其特征在于,所述计算机程序为如权利要求1-5任一所述的容器云平台的IP地址分配方法。
7.一种电子设备,其特征在于,包括:存储器、处理器、以及存储在所述存储器中并可在所述处理器上运行的程序,所述处理器执行所述程序时实现如权利要求1-5任一所述的容器云平台的IP地址分配方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210938375.7A CN115314468B (zh) | 2022-08-05 | 2022-08-05 | 一种容器云平台的ip地址分配方法和系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210938375.7A CN115314468B (zh) | 2022-08-05 | 2022-08-05 | 一种容器云平台的ip地址分配方法和系统 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN115314468A CN115314468A (zh) | 2022-11-08 |
CN115314468B true CN115314468B (zh) | 2023-03-10 |
Family
ID=83860330
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202210938375.7A Active CN115314468B (zh) | 2022-08-05 | 2022-08-05 | 一种容器云平台的ip地址分配方法和系统 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN115314468B (zh) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN115801733A (zh) * | 2023-02-02 | 2023-03-14 | 天翼云科技有限公司 | 一种网络地址分配方法、装置、电子设备及可读介质 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104580548A (zh) * | 2014-12-24 | 2015-04-29 | 北京华胜天成科技股份有限公司 | 一种ip地址冲突检测方法及装置 |
CN108933714A (zh) * | 2018-10-24 | 2018-12-04 | 郑州云海信息技术有限公司 | 一种检测ip地址是否存在的方法、装置和存储介质 |
CN114070822A (zh) * | 2021-11-17 | 2022-02-18 | 苏州博纳讯动软件有限公司 | 一种Kubernetes Overlay IP地址管理方法 |
Family Cites Families (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103957288A (zh) * | 2014-04-28 | 2014-07-30 | 福建星网锐捷网络有限公司 | 一种动态分配ip地址的方法、装置及设备 |
CN110752998B (zh) * | 2019-09-10 | 2023-01-20 | 广州西麦科技股份有限公司 | Arp消息处理方法及相关装置 |
CN111787126B (zh) * | 2020-08-07 | 2023-04-07 | 北京凌云雀科技有限公司 | 容器创建方法、服务器及存储介质 |
CN111935335B (zh) * | 2020-08-14 | 2023-06-09 | 江苏创通电子股份有限公司 | 一种dhcp地址分配方法及装置 |
-
2022
- 2022-08-05 CN CN202210938375.7A patent/CN115314468B/zh active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104580548A (zh) * | 2014-12-24 | 2015-04-29 | 北京华胜天成科技股份有限公司 | 一种ip地址冲突检测方法及装置 |
CN108933714A (zh) * | 2018-10-24 | 2018-12-04 | 郑州云海信息技术有限公司 | 一种检测ip地址是否存在的方法、装置和存储介质 |
CN114070822A (zh) * | 2021-11-17 | 2022-02-18 | 苏州博纳讯动软件有限公司 | 一种Kubernetes Overlay IP地址管理方法 |
Also Published As
Publication number | Publication date |
---|---|
CN115314468A (zh) | 2022-11-08 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN109343963B (zh) | 一种容器集群的应用访问方法、装置及相关设备 | |
US11445039B2 (en) | Method and apparatus for providing edge computing services | |
WO2020186909A1 (zh) | 虚拟网络业务处理方法、装置和系统,控制器,存储介质 | |
CN109889586B (zh) | 通信处理方法、装置、计算机可读介质及电子设备 | |
CN113242293B (zh) | 一种upf设备、数据处理、扩容方法及装置 | |
US20210119965A1 (en) | Address Management Method and Apparatus | |
US20200344204A1 (en) | Session management method and apparatus | |
CN107105050B (zh) | 一种业务对象的存储、下载方法及系统 | |
CN111212134A (zh) | 一种请求报文处理方法、装置、边缘计算系统和电子设备 | |
EP3293969A1 (en) | Method of terminal-based conference load-balancing, and device and system utilizing same | |
CN110830481A (zh) | 一种车载设备上网方法、装置、服务器及存储介质 | |
CN109150741B (zh) | 报文发送方法、装置、电子设备及存储介质 | |
CN114025021A (zh) | 一种跨Kubernetes集群的通信方法、系统、介质和电子设备 | |
CN113612861B (zh) | 远程访问方法、系统及计算机可读存储介质 | |
CN115314468B (zh) | 一种容器云平台的ip地址分配方法和系统 | |
CN113810230A (zh) | 对容器集群中的容器进行网络配置的方法、装置及系统 | |
CN113206894A (zh) | Dns服务器的发现方法、装置、计算机设备及存储介质 | |
CN108600411B (zh) | 一种列车地址的分配方法、装置、列车设备及存储介质 | |
CN111683159A (zh) | Ip地址分配方法、设备、系统及存储介质 | |
CN110636149B (zh) | 远程访问方法、装置、路由器及存储介质 | |
CN109347994B (zh) | 互联网协议ip地址获取方法、装置、存储介质及电子设备 | |
CN112600765B (zh) | 一种配置资源调度方法及装置 | |
CN116016438B (zh) | 基于容器云平台的多子网统一分配ip地址的方法和系统 | |
CN107078965B (zh) | 流媒体服务提供方法和设备 | |
CN113366814B (zh) | 对边缘计算系统中的资源分配进行管理的方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant | ||
CP02 | Change in the address of a patent holder | ||
CP02 | Change in the address of a patent holder |
Address after: Room 3001-3008, Floor 30, Building 1, No. 101, Gulou South Street, Qingyang District, Chengdu, Sichuan 610016 Patentee after: Chengdu Daoke Digital Technology Co.,Ltd. Address before: No. 4, 27th Floor, Building 2, No. 258, Xiadong Street Section, East Street, Jinjiang District, Chengdu City, Sichuan Province, China 610021 Patentee before: Chengdu Daoke Digital Technology Co.,Ltd. |