CN115865865A - 一种基于macvlan的云原生双栈通信方法和*** - Google Patents
一种基于macvlan的云原生双栈通信方法和*** Download PDFInfo
- Publication number
- CN115865865A CN115865865A CN202211562166.3A CN202211562166A CN115865865A CN 115865865 A CN115865865 A CN 115865865A CN 202211562166 A CN202211562166 A CN 202211562166A CN 115865865 A CN115865865 A CN 115865865A
- Authority
- CN
- China
- Prior art keywords
- ipv6
- ipv4
- application pod
- address
- mode
- 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.)
- Pending
Links
Images
Landscapes
- Small-Scale Networks (AREA)
Abstract
本发明公开一种基于macvlan的云原生双栈通信方法,包括:创建Subnet资源;所述Subnet资源包括IPv4模式资源和IPv6模式资源;所述IPv4模式资源包含若干IPv4地址;所述IPv6模式资源包含若干IPv6地址;设置匹配规则;在应用Pod部署时,根据应用Pod的annotation字段和匹配规则,从IPv4模式资源中分配IPv4地址到应用Pod中,从IPv6模式资源中分配IPv6地址到应用Pod中。本发明还公开一种基于macvlan的云原生双栈通信***。本发明以容器的形式启动时可以同时拥有IPv4和IPv6的地址。
Description
技术领域
本发明涉及计算机网络技术领域,具体涉及一种基于macvlan的云原生双栈通信方法和***。
背景技术
macvlan技术本身是属于linux提供的其中一个网络虚拟化技术。macvlan技术允许为主机上的某个网络接口上配置出多个虚拟网络接口,且这些接口的mac地址都是不同的,他们拥有属于自己的mac地址,也可以为其配置不同的IP地址。macvlan与传统的三层网络不同点在于macvlan自身完美支持VLAN功能,同一VLAN之间的数据可以直接通过mac寻址的方式实现数据传输,而不需要使用路由。
目前在云原生领域中,更多的不再是主机的网络而是容器的网络,在基于macvlan的云原生网络方案中,支持为每个容器划分不同的VLAN,容器的IP地址均为容器网络段中的真实地址,需要在接入交换机上单独配置。在主机上,借助macvlan的技术将主网络接口根据容器网络的不同VLAN划分出不同VLAN的虚拟网络接口,各个容器将会根据其IP所在VLAN与不同的虚拟网络接口建立关联,容器的流量将会通过mac寻址的方式先进入这些虚拟网络接口,根据判断目的网段是否与自身VLAN相同来寻找合适的mac地址并进行转发。
在互联网大方向的发展下,大家都知道有限的IPv4资源已经没有了,而对于还没有被完全开发利用的IPv6资源根据其128位的数量级就可知其地址非常丰富。近几年,国家也在大力鼓励企业支持IPv6。所以大趋势是协议栈将会从IPv4地址逐渐转向IPv6地址。然而这样的转变不是一蹴而就的,将会存在一个中间态的过程,也就是双栈通信的必要性。双栈的意义在于网络设备可以同时拥有IPv4和IPv6的地址和网络协议栈,能够同时处理IPv4和IPv6数据包,IPv4的用户和IPv4互通,IPv6的用户和IPv6互通。那么在云原生领域中,也就是容器所使用的网络也支持同时使用IPv4和IPv6的地址。而在现有的macvlan云原生技术中目前只支持分配IPv4的网络地址。
发明内容
本发明的目的在于提供一种基于macvlan的云原生双栈通信方法和***,用于在云原生网络进行通信时可以在基于macvlan技术的网络环境中同时使用IPv4和IPv6技术。
为解决上述技术问题,本发明提供一种基于macvlan的云原生双栈通信方法,包括以下步骤:
创建Subnet资源;所述Subnet资源包括IPv4模式资源和IPv6模式资源;所述IPv4模式资源包含若干IPv4地址;所述IPv6模式资源包含若干IPv6地址;
设置匹配规则;
在应用Pod部署时,根据应用Pod的annotation字段和匹配规则,从IPv4模式资源中分配IPv4地址到应用Pod中,从IPv6模式资源中分配IPv6地址到应用Pod中。
优选地,在应用Pod部署时,根据应用Pod的annotation字段和匹配规则,从IPv4模式资源中分配IPv4地址到应用Pod中,从IPv6模式资源中分配IPv6地址到应用Pod中,具体包括以下步骤:
在应用Pod部署时,根据应用Pod的annotation字段和匹配规则,将IPv4模式资源中的一个IPv4地址分配到应用Pod中的部分容器中,将IPv6模式资源中的一个IPv6地址分配到应用Pod中的剩余容器中。
优选地,还包括以下步骤:
关联相应的IPv4地址和IPv6地址。
优选地,关联相应的IPv4地址和IPv6地址,具体包括以下步骤:
相应的IPv4地址和IPv6地址之间进行流量转发。
优选地,还包括以下步骤:
在应用Pod要被关闭时,回收相应的IPv4地址和IPv6地址。
优选地,在应用Pod部署时,根据应用Pod的annotation字段和匹配规则,从IPv4模式资源中分配一个IPv4地址到应用Pod中的部分容器中,从IPv6模式资源中分配一个IPv6地址到应用Pod中的剩余容器中,具体包括以下步骤:
在应用Pod部署时,根据应用Pod的annotation字段和匹配规则,将IPv4模式资源中的一个没有被使用的IPv4地址分配到应用Pod中的部分容器中,将IPv6模式资源中的一个没有被使用的IPv6地址分配到应用Pod中的剩余容器中。
本发明还提供一种基于macvlan的云原生双栈通信***,包括:
Subnet资源管理模块,用于创建Subnet资源;所述Subnet资源包括IPv4模式资源和IPv6模式资源;所述IPv4模式资源包含若干IPv4地址;所述IPv6模式资源包含若干IPv6地址;
规则管理模块,用于设置匹配规则;
地址分配模块,用于在应用Pod部署时,根据应用Pod的annotation字段和匹配规则,从IPv4模式资源中分配IPv4地址到应用Pod中,从IPv6模式资源中分配IPv6地址到应用Pod中。
与现有技术相比,本发明的有益效果为:
本发明提供了一种基于macvlan的云原生双栈通信方法和***,云原生应用以容器的形式启动时可以同时拥有IPv4和IPv6的地址,容器之间的互相访问可以通过IPv4实现也可以通过IPv6实现。为了保证这些流量能够顺利的允许,在配置IP时会根据Subnet资源上配置的一些网关、vlanid等信息在容器内配置相关的IPv4和IPv6的路由表以及邻居表。
通过可以被集群内api-server直接管理的Subnet资源,可以方便的创建出IP资源池来管理集群内可以使用的IP资源,在云原生应用容器启动时可以通过annotation的配置为该容器选择不同的IP来源。通过选择不同Subnet资源的IP并配合交换机上的Vlan隔离功能,可以做到简单的应用之间的流量隔离。
附图说明
下面结合附图对本发明的具体实施方式作进一步详细说明。
图1是本发明一种基于macvlan的云原生双栈通信方法的流程示意图。
具体实施方式
在下面的描述中阐述了很多具体细节以便于充分理解本发明。但是本发明能够以很多不同于在此描述的其它方式来实施,本领域技术人员可以在不违背本发明内涵的情况下做类似推广,因此本发明不受下面公开的具体实施的限制。
在本说明书一个或多个实施例中使用的术语是仅仅出于描述特定实施例的目的,而非旨在限制本说明书一个或多个实施例。在本说明书一个或多个实施例和所附权利要求书中所使用的单数形式的“一种”、“所述”和“该”也旨在包括多数形式,除非上下文清楚地表示其他含义。还应当理解,本说明书一个或多个实施例中使用的术语“和/或”是指并包含一个或多个相关联的列出项目的任何或所有可能组合。
应当理解,尽管在本说明书一个或多个实施例中可能采用术语第一、第二等来描述各种信息,但这些信息不应限于这些术语。这些术语仅用来将同一类型的信息彼此区分开。例如,在不脱离本说明书一个或多个实施例范围的情况下,第一也可以被称为第二,类似地,第二也可以被称为第一。取决于语境,如在此所使用的词语“如果”可以被解释成为“在……时”或“当……时”或“响应于确定”。
下面结合附图1对本发明做进一步的详细描述:
如图1所示,本发明提供一种基于macvlan云原生双栈通信方法和***,包括以下步骤:
创建Subnet资源;所述Subnet资源包括IPv4模式资源和IPv6模式资源;所述IPv4模式资源包含若干IPv4地址;所述IPv6模式资源包含若干IPv6地址;
设置匹配规则;
在应用Pod部署时,根据应用Pod的annotation字段和匹配规则,从IPv4模式资源中分配IPv4地址到应用Pod中,从IPv6模式资源中分配IPv6地址到应用Pod中。
优选的一个实施例,在应用Pod部署时,根据应用Pod的annotation字段和匹配规则,从IPv4模式资源中分配IPv4地址到应用Pod中,从IPv6模式资源中分配IPv6地址到应用Pod中,具体包括以下步骤:
在应用Pod部署时,根据应用Pod的annotation字段和匹配规则,将IPv4模式资源中的一个IPv4地址分配到应用Pod中的部分容器中,将IPv6模式资源中的一个IPv6地址分配到应用Pod中的剩余容器中。
优选的一个实施例,还包括以下步骤:
关联相应的IPv4地址和IPv6地址。
优选的一个实施例,关联相应的IPv4地址和IPv6地址,具体包括以下步骤:
相应的IPv4地址和IPv6地址之间进行流量转发。
优选的一个实施例,还包括以下步骤:
在应用Pod要被关闭时,回收相应的IPv4地址和IPv6地址。
优选的一个实施例,在应用Pod部署时,根据应用Pod的annotation字段和匹配规则,从IPv4模式资源中分配一个IPv4地址到应用Pod中的部分容器中,从IPv6模式资源中分配一个IPv6地址到应用Pod中的剩余容器中,具体包括以下步骤:
在应用Pod部署时,根据应用Pod的annotation字段和匹配规则,将IPv4模式资源中的一个没有被使用的IPv4地址分配到应用Pod中的部分容器中,将IPv6模式资源中的一个没有被使用的IPv6地址分配到应用Pod中的剩余容器中。
本发明还提供一种基于macvlan的云原生双栈通信***,包括:
Subnet资源管理模块,用于创建Subnet资源;所述Subnet资源包括IPv4模式资源和IPv6模式资源;所述IPv4模式资源包含若干IPv4地址;所述IPv6模式资源包含若干IPv6地址;
规则管理模块,用于设置匹配规则;
地址分配模块,用于在应用Pod部署时,根据应用Pod的annotation字段和匹配规则,从IPv4模式资源中分配IPv4地址到应用Pod中,从IPv6模式资源中分配IPv6地址到应用Pod中。
为了更好的说明本发明的技术效果,本发明提供如下具体实例说明上述技术流程。
本发明包括几个自定义的CRD资源、资源管理的控制器Controller、ContainerNetworkInterface的二进制文件。具体的步骤如下:
1、集群部署,由于该发明将会在容器进行IP分配的时候被调用,所以需要提前部署在集群内:
(1.1)配置接入交换机,划分各个容器IP的VLAN,此为前提,容器所使用的IP都会来自交换机分配的VLAN中;
(1.2)配置集群stackMode,可以选择原来的纯IPv4的模式,也可以选择纯IPv6的模式以及双栈模式(IPv4和IPv6共存);
(1.3)部署相关资源定义文件以及控制器程序等;
(1.4)根据交换机配置的信息在集群上分配Subnet资源(IPv4模式资源和IPv6模式资源),在本发明中,IP资源在集群内将会以Subnet资源的形式存在,该资源将会记录第一个可用IP和最后一个可用IP,容器申请的IP将会在这个范围内,该资源会以crd资源的形式被集群的api-server管理。此时必须存在默认的Subnet资源并命名为default-subnet-ipv4作为IPv4的IP可用的默认IP池或default-subnet-ipv6作为IPv6的IP可用的默认IP池。默认的Subnet资源将会被没有被单独配置的应用所使用。
2、应用Pod分配,在集群部署成功后就可以为容器分配IP了。应用直接启动,将会根据默认的Subnet资源分配出IPv4的地址和IPv6的地址;应用也可以通过配置容器的annotation字段,为IPv4与IPv6选择不同的Subnet资源,具体分配给Pod的IP将会来自这些Subnet。具体IP分配过程如下:
(2.1)匹配规则为根据annotation字段选择不同的Subnet资源作为IP的来源,对于没有配置相关annotation字段的使用默认的Subnet资源;
(2.2)根据配置的双栈网络模式,IPAM模块从IPv4模式资源和IPv6模式资源中获取下一个可以使用的IP,并在Pod的annotation字段记录本次分配所使用的IP情况,将此次分配的IP信息反馈给调用者进行网卡创建;
(2.3)为容器创建网络命名空间,根据IPAM模块给出的IP创建容器的主网卡并配置IPv4和IPv6的地址以及相关路由和邻居表。并在容器内开启IPv4和IPv6的流量转发内核配置。
3、应用回收,在容器要被关闭时将会回收IP资源:
(3.1)根据Pod的annotation字段中记录的IP分配情况,找到IP的来源所在的Subnet资源,修改上述Subnet资源中记录IP的部分,让该IP被Subnet资源回收;
(3.2)进入为Pod创建的网络命名空间,删除Pod容器的网卡。
例如现在要创建某个云原生的应用:
1)、创建名为net-v4的Subnet资源(IPv4模式资源),配置Start字段为5.0.0.2,End字段为5.0.0.254,Gateway字段为5.0.0.1,VlanID字段为5,Netmask字段为24。此时就会创建出一段范围在5.0.0.2—5.0.0.254的IPv4段可以供容器分配;
2)、创建名为net-v6的Subnet资源(IPv6模式资源),配置Start字段为2022::5:2,End字段为2022::5:ff,Gateway字段为2022::5:1,VlanID字段为5,Netmask字段为120。此时就会创建出一段范围在2022::5:2—2022::5:ff的IPv6段可以供容器分配;
3)、配置应用中annotations字段,加入ipv4subnet:net-v4字段用于选择IPv4的IP来源于net-v4的Subnet资源,加入ipv6subnet:net-v6字段用于选择IPv6的IP来源于net-v6的Subnet资源;
4)、应用部署时,kubernetes会通过调度器将应用调度到对应的节点上,节点会启动容器来承载这个应用。容器创建过程中就会调用macvlan这一CNI的模块为容器分配IP。它会根据annotation上配置的字段信息,从net-v4中选择没有被使用的IPv4的地址作为容器的IPv4地址,从net-v6中选择没有被使用的IPv6的地址作为容器的IPv6地址;
5)、进入容器内,可以查看主网卡的IP,在上面可以看到刚才分配的IP,假设被分配的IPv4地址为5.0.0.3,IPv6地址为2022::5:3。
在本发明所提供的几个实施例中,应该理解到,所揭露的装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,所述模块、模组或单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元、模组或组件可以结合或者可以集成到另一个装置,或一些特征可以忽略,或不执行。
所述单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是一个物理单元或多个物理单元,即可以位于一个地方,或者也可以分布到多个不同地方。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
另外,在本发明各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。
特别地,根据本发明公开的实施例,上文参考流程图描述的过程可以被实现为计算机软件程序。例如,本公开的实施例包括一种计算机程序产品,其包括承载在计算机可读介质上的计算机程序,该计算机程序包含用于执行流程图所示的方法的程序代码。在这样的实施例中,该计算机程序可以通过通信部分从网络上被下载和安装,和/或从可拆卸介质被安装。在该计算机程序被中央处理单元(CPU)执行时,执行本发明的方法中限定的上述功能。需要说明的是,本发明上述的计算机可读介质可以是计算机可读信号介质或者计算机可读存储介质或者是上述两者的任意组合。计算机可读存储介质例如可以是但不限于电、磁、光、电磁、红外线段、或半导体的***、装置或器件,或者任意以上的组合。
附图中的流程图和框图,图示了按照本发明各种实施例的***、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段、或代码的一部分,该模块、程序段、或代码的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。也应当注意,在有些作为替换的实现中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个接连地表示的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图和/或流程图中的每个方框、以及框图和/或流程图中的方框的组合,可以用执行规定的功能或操作的专用的基于硬件的***来实现,或者可以用专用硬件与计算机指令的组合来实现。
以上所述,仅为本发明的具体实施方式,但本发明的保护范围并不局限于此,任何在本发明揭露的技术范围内的变化或替换,都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应以所述权利要求的保护范围为准。
Claims (7)
1.一种基于macvlan的云原生双栈通信方法,其特征在于,包括以下步骤:
创建Subnet资源;所述Subnet资源包括IPv4模式资源和IPv6模式资源;所述IPv4模式资源包含若干IPv4地址;所述IPv6模式资源包含若干IPv6地址;
设置匹配规则;
在应用Pod部署时,根据应用Pod的annotation字段和匹配规则,从IPv4模式资源中分配IPv4地址到应用Pod中,从IPv6模式资源中分配IPv6地址到应用Pod中。
2.根据权利要求1所述的一种基于macvlan的云原生双栈通信方法,其特征在于,在应用Pod部署时,根据应用Pod的annotation字段和匹配规则,从IPv4模式资源中分配IPv4地址到应用Pod中,从IPv6模式资源中分配IPv6地址到应用Pod中,具体包括以下步骤:
在应用Pod部署时,根据应用Pod的annotation字段和匹配规则,将IPv4模式资源中的一个IPv4地址分配到应用Pod中的部分容器中,将IPv6模式资源中的一个IPv6地址分配到应用Pod中的剩余容器中。
3.根据权利要求1所述的一种基于macvlan的云原生双栈通信方法,其特征在于,还包括以下步骤:
关联相应的IPv4地址和IPv6地址。
4.根据权利要求3所述的一种基于macvlan的云原生双栈通信方法,其特征在于,关联相应的IPv4地址和IPv6地址,具体包括以下步骤:
相应的IPv4地址和IPv6地址之间进行流量转发。
5.根据权利要求4所述的一种基于macvlan的云原生双栈通信方法,其特征在于,还包括以下步骤:
在应用Pod要被关闭时,回收相应的IPv4地址和IPv6地址。
6.根据权利要求2所述的一种基于macvlan的云原生双栈通信方法,其特征在于,在应用Pod部署时,根据应用Pod的annotation字段和匹配规则,从IPv4模式资源中分配一个IPv4地址到应用Pod中的部分容器中,从IPv6模式资源中分配一个IPv6地址到应用Pod中的剩余容器中,具体包括以下步骤:
在应用Pod部署时,根据应用Pod的annotation字段和匹配规则,将IPv4模式资源中的一个没有被使用的IPv4地址分配到应用Pod中的部分容器中,将IPv6模式资源中的一个没有被使用的IPv6地址分配到应用Pod中的剩余容器中。
7.一种实现权利要求1-6任一所述的基于macvlan的云原生双栈通信方法的基于macvlan的云原生双栈通信***,其特征在于,包括:
Subnet资源管理模块,用于创建Subnet资源;所述Subnet资源包括IPv4模式资源和IPv6模式资源;所述IPv4模式资源包含若干IPv4地址;所述IPv6模式资源包含若干IPv6地址;
规则管理模块,用于设置匹配规则;
地址分配模块,用于在应用Pod部署时,根据应用Pod的annotation字段和匹配规则,从IPv4模式资源中分配IPv4地址到应用Pod中,从IPv6模式资源中分配IPv6地址到应用Pod中。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202211562166.3A CN115865865A (zh) | 2022-12-07 | 2022-12-07 | 一种基于macvlan的云原生双栈通信方法和*** |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202211562166.3A CN115865865A (zh) | 2022-12-07 | 2022-12-07 | 一种基于macvlan的云原生双栈通信方法和*** |
Publications (1)
Publication Number | Publication Date |
---|---|
CN115865865A true CN115865865A (zh) | 2023-03-28 |
Family
ID=85670580
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202211562166.3A Pending CN115865865A (zh) | 2022-12-07 | 2022-12-07 | 一种基于macvlan的云原生双栈通信方法和*** |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN115865865A (zh) |
-
2022
- 2022-12-07 CN CN202211562166.3A patent/CN115865865A/zh active Pending
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US10666609B2 (en) | Management of domain name systems in a large-scale processing environment | |
CN107580083B (zh) | 一种容器ip地址分配的方法和*** | |
CN111796905B (zh) | 一种kubernetes容器云平台VLAN网络的实现方法及*** | |
CN104734931B (zh) | 一种虚拟网络功能间链路建立方法及装置 | |
CN107733670B (zh) | 一种转发策略配置方法和装置 | |
US9628328B2 (en) | Network controller with integrated resource management capability | |
US9363207B2 (en) | Private virtual local area network isolation | |
EP2847969B1 (en) | Method and apparatus for supporting access control lists in a multi-tenant environment | |
US20130107881A1 (en) | Distributed Address Resolution Service for Virtualized Networks | |
US11012408B2 (en) | Configuring virtual machine instances using one-to-one mappings | |
JP2019527988A (ja) | パケット伝送 | |
CN113810230B (zh) | 对容器集群中的容器进行网络配置的方法、装置及*** | |
CN106878480B (zh) | 一种dhcp服务进程共享方法及装置 | |
CN112688814B (zh) | 一种设备接入方法、装置、设备及机器可读存储介质 | |
US20170063627A1 (en) | Allocation of virtual clusters in a large-scale processing environment | |
CN109150638A (zh) | 一种路由管理方法及装置 | |
CN112187958A (zh) | 微服务注册、发现转发的方法及装置 | |
CN112583655B (zh) | 数据传输方法、装置、电子设备及可读存储介质 | |
WO2018161795A1 (zh) | 一种路由优先级配置方法、设备以及控制器 | |
CN115314353A (zh) | 一种基于kubernetes实现单pod多网卡的装置和方法 | |
WO2012021827A1 (en) | Systems and methods for managing network address information | |
US20140366018A1 (en) | Method and system for automatic assignment and preservation of network configuration for a virtual machine | |
CN115865865A (zh) | 一种基于macvlan的云原生双栈通信方法和*** | |
CN108259345B (zh) | 端口生成方法和装置 | |
CN111988446B (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 |