CN110012125A - 集群网络通信方法、装置、存储介质和设备 - Google Patents

集群网络通信方法、装置、存储介质和设备 Download PDF

Info

Publication number
CN110012125A
CN110012125A CN201910257967.0A CN201910257967A CN110012125A CN 110012125 A CN110012125 A CN 110012125A CN 201910257967 A CN201910257967 A CN 201910257967A CN 110012125 A CN110012125 A CN 110012125A
Authority
CN
China
Prior art keywords
address
node
cluster
ipv6
service
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.)
Granted
Application number
CN201910257967.0A
Other languages
English (en)
Other versions
CN110012125B (zh
Inventor
高鹏
张苗磊
叶理灯
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Excellent Polytron Technologies Inc
Original Assignee
Excellent Polytron Technologies Inc
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Excellent Polytron Technologies Inc filed Critical Excellent Polytron Technologies Inc
Priority to CN201910257967.0A priority Critical patent/CN110012125B/zh
Publication of CN110012125A publication Critical patent/CN110012125A/zh
Application granted granted Critical
Publication of CN110012125B publication Critical patent/CN110012125B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L12/00Data switching networks
    • H04L12/28Data switching networks characterised by path configuration, e.g. LAN [Local Area Networks] or WAN [Wide Area Networks]
    • H04L12/46Interconnection of networks
    • H04L12/4604LAN interconnection over a backbone network, e.g. Internet, Frame Relay
    • H04L12/462LAN interconnection over a bridge based backbone
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L45/00Routing or path finding of packets in data switching networks
    • H04L45/02Topology update or discovery
    • H04L45/04Interdomain routing, e.g. hierarchical routing
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L61/00Network arrangements, protocols or services for addressing or naming
    • H04L61/50Address allocation
    • H04L61/5007Internet protocol [IP] addresses
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L61/00Network arrangements, protocols or services for addressing or naming
    • H04L61/50Address allocation
    • H04L61/5061Pools of addresses
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/10Protocols in which an application is distributed across nodes in the network

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Data Exchanges In Wide-Area Networks (AREA)

Abstract

本发明提供了一种集群网络通信方法、装置、存储介质和设备,该方法包括:为集群中的多个交换设备中配置交换设备各自的IPv6地址,以及在交换设备上分配IPv6地址段;从IPv6地址段中,为集群中的一个或多个节点分配各自的节点地址段,节点地址段用于为节点中的Pod提供Pod地址;在节点上创建网桥,使得节点的物理网卡和节点中的每个Pod的Veth Pair的一端桥接。

Description

集群网络通信方法、装置、存储介质和设备
技术领域
本发明涉及互联网容器云服务领域,具体涉及一种集群网络通信方法、装置、存储介质和设备。
背景技术
Kubernetes是Google公司推出并开源的一套分布式容器编排服务,越来越多的应用将通过Kubernetes以容器的形式进行开发、测试和运行。
Calico是一个开源网络服务软件,使用路由的方式,实现了一个Kubernetes的网络模型。Calico提供了CNI(Container Network Interface,容器网络接口)插件给Kubernetes调用,同时需要在Kubernetes的每一个节点上运行calico/node服务,并且使用etcd进行存储。支持BGP(Border Gateway Protocol,边界网关协议)和IPIP两种运行模式。根据运行模式,所有Calico/node之间运行BGP路由协议,或者配置IPIP隧道,负责所在节点路由表或隧道信息的维护更新。当发生BGP的创建和删除时,通过BGP协议通知到所有的节点,并且修改路由表,以此实现Kubernetes的网络模型。
Flannel是一个开源的overlay网络软件,使用overlay网络的方式,实现了Kubernetes网络模型。Flannel使用etcd需要在每一个节点上运行一个用户态的flanneld进程,这个节点上的容器发往其他节点容器的的网络包,都会发送给flanneld。该进程使用Kubernetes APIServer或者直接使用etcd作为存储,将Kubernetes上的Service(即服务,本文中两者等同)和Pod信息保存起来,基于这些信息,flanneld将数据包发送给合适的容器。
但是现有方案具有以下不足:
Calico需要在所有节点上运行一个代理(Agent)程序,一旦这个代理出现异常,这个节点上所有的网络都会出现异常。BGP模式下,Agent之间运行BGP路由协议,同时还需要维护每个节点上的路由表,BGP本身就是一个复杂的协议,会带来额外的运维运营成本。而如果使用IPIP模式,则由于IP隧道的引入,又会对性能产生一定影响。
Flannel也需要在每个节点上运行一个代理程序,同时,所有网络数据都会通过这个程序进行转发,该程序故障时这个节点上所有的容器网络都会失效。同时,这个程序时运行在用户态的,数据需要不停地在内核态和用户态之间拷贝,这就严重限制了容器的网络能力。
此外,无论Calico和Flannel,它们实现的网络中,只有在Kubernetes集群内部,才能连通容器。Kubernetes集群外部的客户端想要连接容器的话,只能通过Service和专门的负责均衡服务。而现实情况中,Kubernetes集群内外的容器能够互相通信,是很多业务场景的需求,Calico和Flannel都无法很好地满足这一点。
另外,Flannel不支持IPv6协议,并且Kubernetes对IPv6协议的支持性较差,不能很好地满足业务需求。
发明内容
为了解决上述问题。本发明提供一种集群网络通信方法、装置、存储介质和设备。
在一些方面,提供了一种集群网络通信方法,包括:为集群中的多个交换设备中配置所述交换设备各自的IPv6地址,以及在所述交换设备上分配IPv6地址段;
从所述IPv6地址段中,为所述集群中的一个或多个节点分配各自的节点地址段,所述节点地址段用于为所述节点中的Pod提供Pod地址;
在所述节点上创建网桥,使得所述节点的物理网卡和所述节点中的每个所述Pod的Veth Pair的一端桥接。
在一些方面,还包括:从所述IPv6地址段中,为所述集群中的一个或多个服务分配各自的IPv6地址,以作为服务IP地址,以及根据服务IP地址生成对应的服务IPv4地址;
从所述IPv6地址段中,为所述集群的多个服务网关分配各自的IPv6地址,以作为服务网关地址。
在一些方面,还包括:经由所述服务网关,向所述交换设备宣告所述服务IPv4地址、所述服务IP地址和与所述服务对应的一个或多个所述Pod地址;
经由所述服务网关,在所述服务IP地址和与所述服务对应的一个或多个所述Pod地址之间进行数据通信。
在另一些方面,一种集群网络通信装置,包括:交换设备配置模块,用于为集群中的多个交换设备中配置所述交换设备各自的IPv6地址,以及在所述交换设备上分配IPv6地址段;
节点地址配置模块,用于从所述IPv6地址段中,为所述集群中的一个或多个节点分配各自的节点地址段,所述节点地址段用于为所述节点中的Pod提供Pod地址;
网桥创建模块,用于在所述节点上创建网桥,使得所述节点的物理网卡和所述节点中的每个所述Pod的Veth Pair的一端桥接。
在另一些方面,进一步包括:服务地址配置模块,用于从所述IPv6地址段中,为所述集群中的一个或多个服务分配各自的IPv6地址,以作为服务IP地址,以及根据服务IP地址生成对应的服务IPv4地址;
服务网关配置模块,用于从所述IPv6地址段中,为所述集群的多个服务网关分配各自的IPv6地址,以作为服务网关地址。
在另一些方面,进一步包括:经由所述服务网关,向所述交换设备宣告所述服务IPv4地址、所述服务IP地址和与所述服务对应的一个或多个所述Pod地址;
经由所述服务网关,在所述服务IP地址和与所述服务对应的一个或多个所述Pod地址之间进行数据通信。
还有一些方面,提供一种存储介质,所述存储介质具有存储在其中的指令,当所述指令被执行时,使得处理器执行集群网络通信方法,所述集群网络通信方法包括:
为集群中的多个交换设备中配置所述交换设备各自的IPv6地址,以及在所述交换设备上分配IPv6地址段;
从所述IPv6地址段中,为所述集群中的一个或多个节点分配各自的节点地址段,所述节点地址段用于为所述节点中的Pod提供Pod地址;
在所述节点上创建网桥,使得所述节点的物理网卡和所述节点中的每个所述Pod的Veth Pair的一端桥接。
还有一些方面,提供一种设备,包括存储器,存储有计算机可执行指令,处理器,所述处理器被配置为执行所述指令以实施集群网络通信方法,所述集群网络通信方法包括:
为集群中的多个交换设备中配置所述交换设备各自的IPv6地址,以及在所述交换设备上分配IPv6地址段;
从所述IPv6地址段中,为所述集群中的一个或多个节点分配各自的节点地址段,所述节点地址段用于为所述节点中的Pod提供Pod地址;
在所述节点上创建网桥,使得所述节点的物理网卡和所述节点中的每个所述Pod的Veth Pair的一端桥接。
本申请的实施方式与现有技术相比,主要区别及其效果在于:
本申请的实施方式,在Kubernetes架构中使用IPv6,由于IPv6提供了巨大的地址空间,彻底解决了容器地址空间不够用的问题。同一个接入交换机下的节点和容器,处于同一个L2层网络,对于接入交换机来说是对等的。通过给每个节点事先分配一个IP地址段的方式,免去了对Overlay网络(相对复杂,影响可靠性,效率比IPv6低一些)、BGP或其它路由协议、NAT网络的使用。另外,不需要在节点上运行代理,具有高性能和高稳定性。
在Kubernetes集群中都有服务网关,通过进行BGP宣告实现ECMP(Equal-costmulti-path routing),这样实现了能在Kubernetes集群外部直接使用ClusterIP来访问Kubernetes Service,进一步使所有的Pod在全网都路由可达,而非仅仅在一个Kubernetes集群内部。
此外,根据本申请的实施方式,Kubernetes集群服务不再仅依赖于代理或某个或某几个交换机,例如,一个交换机或机房故障都不会影响服务的提供,使得集群具备了跨交换机、跨机房的高可用能力。
附图说明
图1示出了本发明的方法的计算机终端的硬件结构框图。
图2示出了根据本发明实施例的集群网络通信方法的流程图。
图3示出了根据本发明实施例的Kubernetes集群网络拓扑图。
图4示出了根据本发明另一实施例的集群网络通信方法的流程图。
图5示出了根据本发明另一实施例的Kubernetes集群网络拓扑图。
图6示出了根据本发明实施例的集群网络通信装置的模块示意图。
图7示出了根据本发明另一实施例的集群网络通信装置的模块示意图。
具体实施方式
为使本发明实施例的目的和技术方案更加清楚,下面将结合本发明实施例的附图,对本发明实施例的技术方案进行清楚、完整地描述。显然,所描述的实施例是本发明的一部分实施例,而不是全部的实施例。基于所描述的本发明的实施例,本领域普通技术人员在无需创造性劳动的前提下所获得的所有其他实施例,都属于本发明保护的范围。
根据本发明实施方式,提供了一种集群网络通信方法的实施方式,需要说明的是,在附图的流程图示出的步骤可以在诸如一组计算机可执行指令的计算机系统中执行,并且,虽然在流程图中示出了逻辑顺序,但是在某些情况下,可以以不同于此处的顺序执行所示出或描述的步骤。
本申请方式所提供的方法实施方式可以在移动终端、计算机终端或者服务器中执行。以运行在计算机终端上为例,图1是根据本发明实施方式的集群网络通信方法的计算机终端的硬件结构框图。如图1所示,计算机终端100可以包括一个或多个(图中仅示出一个)处理器101(处理器101可以包括但不限于中央处理器CPU、图像处理器GPU、数字信号处理器DSP、微处理器MCU或可编程逻辑器件FPGA等的处理装置)、用于与用户交互的输入输出接口102、用于存储数据的存储器103、以及用于通信功能的传输装置104。本领域普通技术人员可以理解,图1所示的结构仅为示意,其并不对上述电子装置的结构造成限定。例如,计算机终端100还可包括比图1中所示更多或者更少的组件,或者具有与图1所示不同的配置。
存储器103可用于存储数据库、队列、应用软件的软件程序以及模块,如本发明实施方式中的集群网络通信方法对应的程序指令/模块,处理器101通过运行存储在存储器103内的软件程序以及模块,从而执行各种功能应用以及数据处理,即实现上述的集群网络通信方法。存储器103可包括高速随机存储器,还可包括非易失性存储器,如一个或者多个磁性存储装置、闪存、或者其他非易失性固态存储器。在一些实例中,存储器103可进一步包括相对于处理器101远程设置的存储器,这些远程存储器可以通过网络连接至计算机终端100。上述网络的实例包括但不限于互联网、企业内部网、局域网、移动通信网及其组合。
传输装置104用于经由网络接收或者发送数据,网络可以包括各种连接类型,例如有线、无线通信链路或者光纤电缆等等。上述的网络具体实例可包括计算机终端100的通信供应商提供的互联网。
为了方便理解本发明的实施例,首先在此介绍实施例描述中引入的几个要素:
集群(Cluster):集群是一组资源的逻辑抽象。用户可以创建多个集群,每个集群可以包含多个节点。
节点(Node):节点是实际承载容器运行的宿主环境。节点是Kubernetes中计算硬件的最小单元。它表示集群(cluster)中的单台计算机。节点可能是数据中心中的物理机,也可能是托管在云提供商上的虚拟机。
容器(Container):在Kubernetes上运行的程序打包为Linux容器。容器是一种被广泛接受的标准,可以在节点上创建单个容器。
Pod(Pod):Pod是一组同类型、提供同样功能的容器。
在我们创建一个Kubernetes集群时,为了让集群正常工作,我们需要为三类资源对象规划网段,分别是Node,Pod,Service,他们都需要唯一的网络标示。
服务(Service):是Kubernetes集群中的一个资源对象,用于定义如何访问一组带有相同特征的Pods。通过Service,可以使用一个IP,访问到一组提供相同服务的容器。
Kube-proxy:Kubernetes的每个节点中都有该进程,负责实现service功能,这个进程负责感知service。
虚拟以太网卡对(Virtual Ethernet Pair,简称veth pair):是一个成对的端口,所有从这对端口的一端进入的数据包都将从另一端出来,反之也是一样。
在上述运行环境下,本发明提供了如图2所示的集群网络通信方法。该方法可以应用于服务器中,由服务器中的处理器执行。服务器中安装有至少一个应用程序,本发明实施方式并不限定应用程序的种类,可以为系统类应用程序,也可以为软件类应用程序。
图2示出了根据本发明实施例的集群网络通信方法200的流程图。如图2所示,该方法流程如下。
210、为集群中的多个交换设备中配置交换设备各自的IPv6地址,以及在交换设备上分配IPv6地址段;
220、从IPv6地址段中,为集群中的一个或多个节点分配各自的节点地址段,节点地址段用于为节点中的Pod提供Pod地址;
230、在节点上创建网桥,使得节点的物理网卡和节点中的每个Pod的Veth Pair的一端桥接。
以下参考图3具体描述上述流程。图3示出了Kubernetes集群网络拓扑图。节点330a-330d分别经由信号线通信地耦接到接入交换机320a-320b。信号线可以是例如以太网,同轴电缆,光纤电缆等的有线连接,或例如Wi-Fi,蓝牙或其他无线技术的无线连接。在一些实施方式中,节点330a-330d和接入交换机320a-320b之间的通信采用IPv6协议。核心交换机310a-310b各自经由信号线通信地耦接接入交换机320a-320b,核心交换机310a-310b和接入交换机320a-320b之间的通信采用IPv4协议。在接入交换机320a-320b和节点330a-330d上分别采用双协议栈(Dual Stack),以便同时运行IPv4和IPv6两套协议栈。在图3和其余的附图中,引用编号之后的字母,例如“320a”,表示对具有该特定引用编号的元素的引用。文本中没有后续字母的引用编号,例如“320”,表示对带有该引用编号的元素的实施方式的总体引用。
一些实施方式中,每个接入交换机320拥有一个IPv4地址,用于与核心交换机310通信。同时,根据接入交换机320的IPv4地址,使用诸如RFC3056,RFC6343的6to4隧道规则生成接入交换机320的IPv6地址。与接入交换机320连接的所有服务器开启双栈,配置IPv6地址,使得每个交换机连通连接到它的服务器,就组成了一个IPv6孤岛。
基于TOR(Top of Rack)交换机的IPv4地址使用6to4规则,在接入交换机32上生成IPv6地址段,该IPv6地址段例如具有以无类域间路由(classless inter-domain routing,CIDR)表示法声明的前缀长度为/48位。其中,前缀长度还可以是除了/48以外的其他大小,例如/64,本申请在此不作限制。
在一个示例中,从接入交换机的IPv6地址段中选择一段,分配给节点330使用,再从节点330的地址段中分配出很多个小段,指定给每个节点上用作Pod的IP池,为节点中的每个Pod提供IPv6地址,这些地址段通过固定的映射策略方便查询管理。
由此,使用IPv6地址作为Pod和节点的IP地址,这样有足够的地址可以使用,还不会对已有的网络架构造成影响。
在节点330中,使用bridge CNI插件,在节点上创建网桥3311、3321、3331、3341,桥接由eth0表示的物理网卡3312、3322、3332、3342,和每个的Pod 3313a、3313b、3323a、3323b、3333a、3333b、3343a、3343b的对应Veth Pair 3314a、3314b、3324a、3324b、3334a、3334b、3344a、3344b的一端。由此,一个接入交换机下,所有节点和Pod是在同一个L2层网络,可以直接连通。
根据本发明的实施例,在Kubernetes架构中使用IPv6,由于IPv6提供了巨大的地址空间,彻底解决了容器地址空间不够用的问题。同一个接入交换机下的节点和容器,处于同一个L2层网络,对于接入交换机来说是对等的。通过给每个节点事先分配一个IP地址段的方式,免去了对Overlay网络(相对复杂,影响可靠性,效率比IPv6低一些)、BGP或其它路由协议、NAT网络的使用。另外,不需要在节点上运行代理,具有高性能和高稳定性。
图4示出了根据本申请的另一实施例的集群网络通信方法400的流程图。如图4所示,该方法流程如下。
410、为集群中的多个交换设备中配置交换设备各自的IPv6地址,以及在交换设备上分配IPv6地址段;
420、从IPv6地址段中,为集群中的一个或多个节点分配各自的节点地址段,节点地址段用于为节点中的Pod提供Pod地址;
430、在节点上创建网桥,使得节点的物理网卡和节点中的每个Pod的Veth Pair的一端桥接;
440、从IPv6地址段中,为集群中的一个或多个服务分配各自的IPv6地址,以作为服务IP地址,以及根据服务IP地址生成对应的服务IPv4地址;
450、从IPv6地址段中,为集群的多个服务网关分配各自的IPv6地址,以作为服务网关地址;
460、经由服务网关,向交换设备宣告服务IPv4地址、服务IP地址和与服务对应的一个或多个Pod地址;
470、经由服务网关,在服务IP地址和与服务对应的一个或多个Pod地址之间进行数据通信。
块410-430所描述的实施方式与参考图2和图3所描述的块210-230的实施方式相同,在此省略相同描述,不在赘述。
以下参考图5描述方法400的不同部分。图5示出了包含服务网关的Kubernetes集群网络拓扑图。在图5中,接入交换机520a、520b经由网络510与外部服务器连接,在每个接入交换机520a、520b下,选择一个或多个节点作为服务网关(Service Gateway)530a、530b,作为集群外部访问服务的网关,图5中仅示例性地示出了一个服务网关与接入交换机连接,但服务网关可以是2个及以上。服务网关包括BGPD(Border Gateway Protocol daemon)531a、531b和Kube-proxy 532a、532b。Kube-proxy 532a、532b分别连接各自的节点540a、540b,节点540中包含一个或多个Pod 541a-c、542a-c。如上,接入交换机520和节点530、540都采用双协议栈,并且它们之间的连接采用IPv6协议。
通过Kubernetes自己实现的Kube-proxy,可以在集群内部,实现对服务的访问,这称为ClusterIP类型的服务。ClusterIP是Kubernetes中默认的服务类型(ServiceType),选择此种类型,对应的服务将被分配一个集群内部的IP地址,只能在集群内部被访问。
在一些实施方式中,从接入交换机520的IPv6地址段中为Kubernetes集群服务和每个服务网关530分配IPv6地址,并接入交换机520上宣告这些地址。服务的IPv6地址对应的6to4IPv4地址作为服务的IPv4地址,并同样在接入交换机520上宣告。其中,BGPD 531将服务的IPv6地址通过BGP路由协议宣告给接入交换机520。
通过Kube-proxy 532将发往服务的IPv6地址的流量数据转发到对应的Pod。作为一个示例,启动时将Kube-proxy的masquerade-all选项打开,这样Kube-proxy转发给Pod的包会实现源地址转换(Source Network Address Translation,SNAT)。
相对地,从Pod返回的数据,会先回给服务网关530,由于做了SNAT,基于连接追踪(conntrack),Pod的数据会返回给外部请求方。
参考上述实施例,对集群通信进行示例性说明。
在Pod访问集群外部服务器的情况下,例如,集群中的诸如Pod 541a的IPv6地址是2002:ac1c:b2c1:1::2177,接入交换机520a的IPv4地址是172.28.178.193,集群外服务器(未示出)的IPv4地址是172.28.226.101,对应6to4隧道IPv6地址是2002:ac1c:e265::1。
在Pod 541a访问集群外服务器时,原始IPv6包要从Pod 541a(2002:ac1c:b2c1:1::2177)发送到集群外服务器(2002:ac1c:e265::1)。经过接入交换机520a后,该IPv6包封装成6to4IPv4包,外层为从接入交换机520a(172.28.178.193发送到集群外服务器(172.28.226.101),而内层为从2002:ac1c:b2c1:1::2177发送到2002:ac1c:e265::1。当IPv4包到达集群外服务器后,由Linux内核解出6to4隧道内层的包,即,2002:ac1c:b2c1:1::2177到2002:ac1c:e265::1。
在集群外部服务器访问Kubernetes集群服务的情况下,例如,服务的IPv6地址2002:ac1f:91c5:1::fddb,服务的IPv6地址对应的6to4隧道IPv4地址是172.31.145.197,接入交换机520a对外宣告该地址。该服务对应的Pod 541a的IPv6地址是2002:ac1c:b2c1:1::2177,服务网关向接入交换机520a宣告该地址。服务网关的IPv6地址为2002:ac1c:b401:1::3。集群外服务器的IPv4地址172.28.226.101,对应6to4隧道IPv6地址2002:ac1c:e265::1。
在集群外服务器访问服务时,原始IPv6包要从集群外服务器(2002:ac1c:e265::1)发送到服务(2002:ac1f:91c5:1::fddb)。该IPv6包经过Linux内核封装成6to4隧道IPv4包:外层为从集群外服务器(172.28.226.101)发送到服务(172.31.145.197),而内层为从2002:ac1c:e265::1发送到2002:ac1f:91c5:1::fddb。IPv4包经过接入交换机520a,解出6to4隧道内层的包,即从2002:ac1c:e265::1发送到2002:ac1f:91c5:1::fddb,然后传给某个服务网关,例如,服务网关530a。服务网关上运行kube-proxy,实现SNAT,将包发送给Pod541a,即从2002:ac1c:b401:1::3发送到2002:ac1c:b2c1:1::2177。
根据本申请的实施例,在Kubernetes集群中都有服务网关,通过进行BGP宣告实现ECMP(Equal-cost multi-path routing),这样实现了能在Kubernetes集群外部直接使用ClusterIP来访问Kubernetes Service,进一步使所有的Pod在全网都路由可达,而非仅仅在一个Kubernetes集群内部。
此外,根据本申请的实施例,Kubernetes集群服务不再仅依赖于代理或某个或某几个交换机,例如,一个交换机或机房故障都不会影响服务的提供,使得集群具备了跨交换机、跨机房的高可用能力。
此外,还在Kubernetes架构中实现了对IPv6的支持。
本发明的各方法实施方式均可以以软件、磁件、固件等方式实现。不管本发明是以软件、磁件、还是固件方式实现,指令代码都可以存储在任何类型的计算机可访问的存储器中(例如永久的或者可修改的,易失性的或者非易失性的,固态的或者非固态的,固定的或者可更换的介质等等)。同样,存储器可以例如是可编程阵列逻辑(Programmable ArrayLogic,简称“PAL”)、随机存取存储器(Random Access Memory,简称“RAM”)、可编程只读存储器(Programmable Read Only Memory,简称“PROM”)、只读存储器(Read-Only Memory,简称“ROM”)、电可擦除可编程只读存储器(Electrically Erasable Programmable ROM,简称“EEPROM”)、磁盘、光盘、数字通用光盘(Digital Versatile Disc,简称“DVD”)等等。
图6是根据本发明实施例的集群网络通信装置600的示意性框图。该装置用于执行上述方法流程,包括:
交换设备配置模块610,用于为集群中的多个交换设备中配置交换设备各自的IPv6地址,以及在交换设备上分配IPv6地址段;
节点地址配置模块620,用于从IPv6地址段中,为集群中的一个或多个节点分配各自的节点地址段,节点地址段用于为节点中的Pod提供Pod地址;
网桥创建模块630,用于在节点上创建网桥,使得节点的物理网卡和节点中的每个Pod的Veth Pair的一端桥接。
需要说明的是,集群网络通信装置600可以被配置为用于执行方法200中相应的操作、动作以及过程,此处省略对这些操作、动作以及过程的描述。
根据本发明的实施例,在Kubernetes架构中使用IPv6,由于IPv6提供了巨大的地址空间,彻底解决了容器地址空间不够用的问题。同一个接入交换机下的节点和容器,处于同一个L2层网络,对于接入交换机来说是对等的。通过给每个节点事先分配一个IP地址段的方式,免去了对Overlay网络(相对复杂,影响可靠性,效率比IPv6低一些)、BGP或其它路由协议、NAT网络的使用。另外,不需要在节点上运行代理,具有高性能和高稳定性。
图7是根据本发明另一实施例的集群网络通信装置700的示意性框图。该装置用于执行上述方法流程,包括:
交换设备配置模块710,用于为集群中的多个交换设备中配置交换设备各自的IPv6地址,以及在交换设备上分配IPv6地址段;
节点地址配置模块720,用于从IPv6地址段中,为集群中的一个或多个节点分配各自的节点地址段,节点地址段用于为节点中的Pod提供Pod地址;
网桥创建模块730,用于在节点上创建网桥,使得节点的物理网卡和节点中的每个Pod的Veth Pair的一端桥接。
服务地址配置模块740,用于从IPv6地址段中,为集群中的一个或多个服务分配各自的IPv6地址,以作为服务IP地址,以及根据服务IP地址生成对应的服务IPv4地址;
服务网关配置模块750,用于从IPv6地址段中,为集群的多个服务网关分配各自的IPv6地址,以作为服务网关地址。
进一步地,服务网关配置模块750还可以,经由服务网关,向交换设备宣告服务IPv4地址、服务IP地址和与服务对应的一个或多个Pod地址;经由服务网关,在服务IP地址和与服务对应的一个或多个Pod地址之间进行数据通信。
根据本申请的实施例,在Kubernetes集群中都有服务网关,通过进行BGP宣告实现ECMP(Equal-cost multi-path routing),这样实现了能在Kubernetes集群外部直接使用ClusterIP来访问Kubernetes Service,进一步使所有的Pod在全网都路由可达,而非仅仅在一个Kubernetes集群内部。
此外,根据本申请的实施例,Kubernetes集群服务不再仅依赖于带来或某个或某几个交换机,例如,一个交换机或机房故障都不会影响服务的提供,使得集群具备了跨交换机、跨机房的高可用能力。
此外,还在Kubernetes架构中实现了对IPv6的支持。
根据本发明的另一实施例,还提供一种存储介质,该非易失性存储介质具有存储在其中的指令,当该指令被执行时,使得处理器执行集群网络通信方法,包括:
为集群中的多个交换设备中配置交换设备各自的IPv6地址,以及在交换设备上分配IPv6地址段;
从IPv6地址段中,为集群中的一个或多个节点分配各自的节点地址段,节点地址段用于为节点中的Pod提供Pod地址;
在节点上创建网桥,使得节点的物理网卡和节点中的每个Pod的Veth Pair的一端桥接。
进一步的,根据本发明的另一实施例,还提供一种设备,包括存储器,存储有计算机可执行指令,处理器,处理器被配置为执行指令以实施集群网络通信的过程,包括:
为集群中的多个交换设备中配置交换设备各自的IPv6地址,以及在交换设备上分配IPv6地址段;
从IPv6地址段中,为集群中的一个或多个节点分配各自的节点地址段,节点地址段用于为节点中的Pod提供Pod地址;
在节点上创建网桥,使得节点的物理网卡和节点中的每个Pod的Veth Pair的一端桥接。
在此处所提供的说明书中,说明了大量具体细节。然而,能够理解,本发明的实施例可以在没有这些具体细节的情况下实践。在一些实例中,并未详细示出公知的方法、结构和技术,以便不模糊对本说明书的理解。
类似地,应当理解,为了精简本发明并帮助理解各个发明方面中的一个或多个,在上面对本发明的示例性实施例的描述中,本发明的各个特征有时被一起分组到单个实施例、图、或者对其的描述中。然而,并不应将该公开的方法解释成反映如下意图:即所要求保护的本发明要求比在每个权利要求中所明确记载的特征更多的特征。更确切地说,如权利要求书所反映的那样,发明方面在于少于前面公开的单个实施例的所有特征。因此,遵循具体实施方式的权利要求书由此明确地并入该具体实施方式,其中每个权利要求本身都作为本发明的单独实施例。
本领域那些技术人员可以理解,可以对实施例中的设备中的模块进行自适应性地改变并且把它们设置在与该实施例不同的一个或多个设备中。可以把实施例中的模块或单元或组件组合成一个模块或单元或组件,以及此外可以把它们分成多个子模块或子单元或子组件。除了这样的特征和/或过程或者单元中的至少一些是相互排斥之外,可以采用任何组合对本说明书(包括伴随的权利要求、摘要和附图)中公开的所有特征以及如此公开的任何方法或者设备的所有过程或单元进行组合。除非另外明确陈述,本说明书(包括伴随的权利要求、摘要和附图)中公开的每个特征可以由提供相同、等同或相似目的替代特征来代替。
此外,本领域的技术人员能够理解,尽管在此所述的一些实施例包括其它实施例中所包括的某些特征而不是其它特征,但是不同实施例的特征的组合意味着处于本发明的范围之内并且形成不同的实施例。例如,在权利要求书中,所要求保护的实施例的任意之一都可以以任意的组合方式来使用。
单词“包含”不排除存在未列在权利要求中的元件或步骤。位于元件之前的单词“一”或“一个”不排除存在多个这样的元件。本发明可以借助于包括有若干不同元件的硬件以及借助于适当编程的终端设备来实现。在列举了若干终端设备的单元权利要求中,这些终端设备中的若干个可以是通过同一个硬件项来具体体现。单词第一、第二、以及第三等的使用不表示任何顺序。可将这些单词解释为名称。

Claims (8)

1.一种集群网络通信方法,其特征在于,包括:
为集群中的多个交换设备中配置所述交换设备各自的IPv6地址,以及在所述交换设备上分配IPv6地址段;
从所述IPv6地址段中,为所述集群中的一个或多个节点分配各自的节点地址段,所述节点地址段用于为所述节点中的Pod提供Pod地址;
在所述节点上创建网桥,使得所述节点的物理网卡和所述节点中的每个所述Pod的Veth Pair的一端桥接。
2.根据权利要求1所述的集群网络通信方法,其特征在于,所述方法还包括:
从所述IPv6地址段中,为所述集群中的一个或多个服务分配各自的IPv6地址,以作为服务IP地址,以及根据服务IP地址生成对应的服务IPv4地址;
从所述IPv6地址段中,为所述集群的多个服务网关分配各自的IPv6地址,以作为服务网关地址。
3.根据权利要求2所述的集群网络通信方法,其特征在于,所述方法还包括:
经由所述服务网关,向所述交换设备宣告所述服务IPv4地址、所述服务IP地址和与所述服务对应的一个或多个所述Pod地址;
经由所述服务网关,在所述服务IP地址和与所述服务对应的一个或多个所述Pod地址之间进行数据通信。
4.一种集群网络通信装置,其特征在于,包括:
交换设备配置模块,用于为集群中的多个交换设备中配置所述交换设备各自的IPv6地址,以及在所述交换设备上分配IPv6地址段;
节点地址配置模块,用于从所述IPv6地址段中,为所述集群中的一个或多个节点分配各自的节点地址段,所述节点地址段用于为所述节点中的Pod提供Pod地址;
网桥创建模块,用于在所述节点上创建网桥,使得所述节点的物理网卡和所述节点中的每个所述Pod的Veth Pair的一端桥接。
5.根据权利要求4所述的集群网络通信装置,其特征在于,所述集群网络通信装置进一步包括:
服务地址配置模块,用于从所述IPv6地址段中,为所述集群中的一个或多个服务分配各自的IPv6地址,以作为服务IP地址,以及根据服务IP地址生成对应的服务IPv4地址;
服务网关配置模块,用于从所述IPv6地址段中,为所述集群的多个服务网关分配各自的IPv6地址,以作为服务网关地址。
6.根据权利要求5所述的集群网络通信装置,其特征在于,所述服务网关配置模块进一步包括:
经由所述服务网关,向所述交换设备宣告所述服务IPv4地址、所述服务IP地址和与所述服务对应的一个或多个所述Pod地址;
经由所述服务网关,在所述服务IP地址和与所述服务对应的一个或多个所述Pod地址之间进行数据通信。
7.一种存储介质,所述存储介质具有存储在其中的指令,当所述指令被执行时,使得处理器执行集群网络通信方法,所述集群网络通信方法包括:
为集群中的多个交换设备中配置所述交换设备各自的IPv6地址,以及在所述交换设备上分配IPv6地址段;
从所述IPv6地址段中,为所述集群中的一个或多个节点分配各自的节点地址段,所述节点地址段用于为所述节点中的Pod提供Pod地址;
在所述节点上创建网桥,使得所述节点的物理网卡和所述节点中的每个所述Pod的Veth Pair的一端桥接。
8.一种设备,包括存储器,存储有计算机可执行指令,处理器,所述处理器被配置为执行所述指令以实施集群网络通信方法,所述集群网络通信方法包括:
为集群中的多个交换设备中配置所述交换设备各自的IPv6地址,以及在所述交换设备上分配IPv6地址段;
从所述IPv6地址段中,为所述集群中的一个或多个节点分配各自的节点地址段,所述节点地址段用于为所述节点中的Pod提供Pod地址;
在所述节点上创建网桥,使得所述节点的物理网卡和所述节点中的每个所述Pod的Veth Pair的一端桥接。
CN201910257967.0A 2019-04-01 2019-04-01 集群网络通信方法、装置、存储介质和设备 Active CN110012125B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201910257967.0A CN110012125B (zh) 2019-04-01 2019-04-01 集群网络通信方法、装置、存储介质和设备

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201910257967.0A CN110012125B (zh) 2019-04-01 2019-04-01 集群网络通信方法、装置、存储介质和设备

Publications (2)

Publication Number Publication Date
CN110012125A true CN110012125A (zh) 2019-07-12
CN110012125B CN110012125B (zh) 2022-02-01

Family

ID=67169205

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201910257967.0A Active CN110012125B (zh) 2019-04-01 2019-04-01 集群网络通信方法、装置、存储介质和设备

Country Status (1)

Country Link
CN (1) CN110012125B (zh)

Cited By (16)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN110611697A (zh) * 2019-08-02 2019-12-24 杭州网银互联科技股份有限公司 一种混合云的网络架构及网络部署方法
CN111124604A (zh) * 2019-12-05 2020-05-08 北京金山云网络技术有限公司 分配容器组pod IP地址的方法、装置、设备及存储介质
CN111327640A (zh) * 2020-03-24 2020-06-23 广西梯度科技有限公司 一种在Kubernetes中Pod设置IPv6的方法
CN111404753A (zh) * 2020-03-23 2020-07-10 星环信息科技(上海)有限公司 一种扁平网络配置方法、计算机设备及存储介质
CN111740869A (zh) * 2020-08-19 2020-10-02 广东省新一代通信与网络创新研究院 基于物理网卡的kubernetes网络实现方法、系统、设备及介质
CN112751913A (zh) * 2020-12-22 2021-05-04 联奕科技股份有限公司 一种跨Kubernetes集群的网络通信方法及系统
WO2021098819A1 (zh) * 2019-11-22 2021-05-27 北京金山云网络技术有限公司 一种路由更新方法和用户集群
CN112910959A (zh) * 2021-01-15 2021-06-04 北京开物数智科技有限公司 一种基于SDN的多Kubernetes集群的网络互联方法
CN113852573A (zh) * 2021-10-18 2021-12-28 杭州安恒信息技术股份有限公司 一种容器跨宿主机的通信方法、装置、设备及介质
WO2021259111A1 (zh) * 2020-06-23 2021-12-30 中兴通讯股份有限公司 报文处理方法、装置和计算机可读存储介质
US20220006778A1 (en) * 2020-07-02 2022-01-06 Kaloom Inc. Computing device and method for generating a functional ipv6 address of a pod
CN114070822A (zh) * 2021-11-17 2022-02-18 苏州博纳讯动软件有限公司 一种Kubernetes Overlay IP地址管理方法
CN114157455A (zh) * 2021-11-16 2022-03-08 北京达佳互联信息技术有限公司 一种数据传输方法、装置、设备以及存储介质
CN114448805A (zh) * 2021-12-27 2022-05-06 天翼云科技有限公司 虚拟网络设备、虚拟叠加网络及配置、报文传输方法
CN115643227A (zh) * 2022-09-26 2023-01-24 北京沃东天骏信息技术有限公司 报文处理方法、装置、设备及系统
CN115802361A (zh) * 2022-11-28 2023-03-14 广州通则康威智能科技有限公司 一种网络管控方法、装置、设备及存储介质

Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN105893205A (zh) * 2015-11-20 2016-08-24 乐视云计算有限公司 监控基于docker创建的container的方法及系统
CN106506314A (zh) * 2016-09-30 2017-03-15 北京赢点科技有限公司 基于docker的网络高可用方法及装置
CN107113233A (zh) * 2014-10-31 2017-08-29 甲骨文国际公司 用于支持多租户集群环境中的分区感知路由的系统和方法
CN107770066A (zh) * 2017-10-20 2018-03-06 成都精灵云科技有限公司 一种跨主机、跨VLAN、跨集群的Docker容器导流方法
US20180255075A1 (en) * 2017-03-06 2018-09-06 International Business Machines Corporation Creating a Multi-Dimensional Host Fingerprint for Optimizing Reputation for IPV6
CN108924268A (zh) * 2018-09-11 2018-11-30 网宿科技股份有限公司 一种容器云服务系统及pod创建方法、装置

Patent Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN107113233A (zh) * 2014-10-31 2017-08-29 甲骨文国际公司 用于支持多租户集群环境中的分区感知路由的系统和方法
CN105893205A (zh) * 2015-11-20 2016-08-24 乐视云计算有限公司 监控基于docker创建的container的方法及系统
CN106506314A (zh) * 2016-09-30 2017-03-15 北京赢点科技有限公司 基于docker的网络高可用方法及装置
US20180255075A1 (en) * 2017-03-06 2018-09-06 International Business Machines Corporation Creating a Multi-Dimensional Host Fingerprint for Optimizing Reputation for IPV6
CN107770066A (zh) * 2017-10-20 2018-03-06 成都精灵云科技有限公司 一种跨主机、跨VLAN、跨集群的Docker容器导流方法
CN108924268A (zh) * 2018-09-11 2018-11-30 网宿科技股份有限公司 一种容器云服务系统及pod创建方法、装置

Cited By (23)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN110611697A (zh) * 2019-08-02 2019-12-24 杭州网银互联科技股份有限公司 一种混合云的网络架构及网络部署方法
WO2021098819A1 (zh) * 2019-11-22 2021-05-27 北京金山云网络技术有限公司 一种路由更新方法和用户集群
US11997015B2 (en) 2019-11-22 2024-05-28 Beijing Kingsoft Cloud Network Technology Co., Ltd. Route updating method and user cluster
US20240048484A1 (en) * 2019-11-22 2024-02-08 Beijing Kingsoft Cloud Network Technology Co., Ltd. Route updating method and user cluster
CN111124604A (zh) * 2019-12-05 2020-05-08 北京金山云网络技术有限公司 分配容器组pod IP地址的方法、装置、设备及存储介质
CN111404753A (zh) * 2020-03-23 2020-07-10 星环信息科技(上海)有限公司 一种扁平网络配置方法、计算机设备及存储介质
CN111327640B (zh) * 2020-03-24 2022-02-18 广西梯度科技有限公司 一种在Kubernetes中Pod设置IPv6的方法
CN111327640A (zh) * 2020-03-24 2020-06-23 广西梯度科技有限公司 一种在Kubernetes中Pod设置IPv6的方法
WO2021259111A1 (zh) * 2020-06-23 2021-12-30 中兴通讯股份有限公司 报文处理方法、装置和计算机可读存储介质
US20220006778A1 (en) * 2020-07-02 2022-01-06 Kaloom Inc. Computing device and method for generating a functional ipv6 address of a pod
CN111740869A (zh) * 2020-08-19 2020-10-02 广东省新一代通信与网络创新研究院 基于物理网卡的kubernetes网络实现方法、系统、设备及介质
CN112751913A (zh) * 2020-12-22 2021-05-04 联奕科技股份有限公司 一种跨Kubernetes集群的网络通信方法及系统
CN112910959B (zh) * 2021-01-15 2023-06-02 北京开物数智科技有限公司 一种基于SDN的多Kubernetes集群的网络互联方法
CN112910959A (zh) * 2021-01-15 2021-06-04 北京开物数智科技有限公司 一种基于SDN的多Kubernetes集群的网络互联方法
CN113852573A (zh) * 2021-10-18 2021-12-28 杭州安恒信息技术股份有限公司 一种容器跨宿主机的通信方法、装置、设备及介质
CN114157455A (zh) * 2021-11-16 2022-03-08 北京达佳互联信息技术有限公司 一种数据传输方法、装置、设备以及存储介质
CN114157455B (zh) * 2021-11-16 2024-07-12 北京达佳互联信息技术有限公司 一种数据传输方法、装置、设备以及存储介质
CN114070822A (zh) * 2021-11-17 2022-02-18 苏州博纳讯动软件有限公司 一种Kubernetes Overlay IP地址管理方法
CN114070822B (zh) * 2021-11-17 2022-10-14 江苏博云科技股份有限公司 一种Kubernetes Overlay IP地址管理方法
CN114448805A (zh) * 2021-12-27 2022-05-06 天翼云科技有限公司 虚拟网络设备、虚拟叠加网络及配置、报文传输方法
CN115643227A (zh) * 2022-09-26 2023-01-24 北京沃东天骏信息技术有限公司 报文处理方法、装置、设备及系统
CN115802361A (zh) * 2022-11-28 2023-03-14 广州通则康威智能科技有限公司 一种网络管控方法、装置、设备及存储介质
CN115802361B (zh) * 2022-11-28 2023-08-11 广州通则康威智能科技有限公司 一种网络管控方法、装置、设备及存储介质

Also Published As

Publication number Publication date
CN110012125B (zh) 2022-02-01

Similar Documents

Publication Publication Date Title
CN110012125A (zh) 集群网络通信方法、装置、存储介质和设备
US11909586B2 (en) Managing communications in a virtual network of virtual machines using telecommunications infrastructure systems
US10911528B2 (en) Managing replication of computing nodes for provided computer networks
US9654340B2 (en) Providing private access to network-accessible services
US9736016B2 (en) Managing failure behavior for computing nodes of provided computer networks
US8972603B1 (en) Managing encoded multi-part communications
US10355991B1 (en) Managing communications using alternative packet addressing
US8510420B1 (en) Managing use of intermediate destination computing nodes for provided computer networks
US20200084146A1 (en) Routing between software defined networks and physical networks
CN116132542B (zh) 容器网络管理方法、容器网络插件以及相关设备
Marttila Design and Implementation of the clusterf Load Balancer for Docker Clusters
Angelo Migration strategies from IPv4 to IPv6 in a complex service provider environment
Toscano Migration strategies from IPv4 to IPv6 in a complex service provider environment

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