一种残膜回收机防缠绕挑膜装置的制 一种秧草收获机用电力驱动行走机构

多租户跨集群的组网方法、通信系统和可读存储介质与流程

2022-03-08 22:04:02 来源:中国专利 TAG:


1.本公开涉及计算机技术领域,特别涉及一种多租户跨集群的组网方法、通信系统和可读存储介质。


背景技术:

2.目前,运营商在加紧布局与建设面向内部的私有云时,不同于传统业务平台建设,面临整合多个设备厂家、多专业业务以及多地分散的资源池的难题。针对该特点在布局多租户多集群的云化平台时,需要解决多租户跨集群资源的隔离与互通问题。
3.发明人已知的一种技术是:通过在集群内配置网络策略(network policy)实现集群内多租户隔离,再通过在每个集群内配置gateway(网关)节点实现跨集群的服务发现从而达到跨集群网络互通的目的。


技术实现要素:

4.发明人发现:现有技术中需要在每个集群内单独配置租户隔离策略,配置复杂,且不同集群策略容易冲突,gateway节点路由表需要配置集群内所有节点的ip地址,配置复杂,当租户需要跨集群资源互访时,要遍历两个集群内的所有节点ip,寻址效率低。
5.本公开所要解决的一个技术问题是:如何降低多租户跨集群资源的隔离与互通实现的复杂度,提高效率。
6.根据本公开的一些实施例,提供的一种多租户跨集群的组网方法,包括:创建全局虚拟路由器vrouter;针对每个租户,接收该租户选取的工作负载待部署的一个或多个集群和各个集群对应的项目;针对每个租户,为该租户分配租户级vrouter,建立该租户级vrouter与全局vrouter的连接;针对每个项目,为该项目创建项目命名空间ns,为该项目ns分配虚拟交换机vswitch,并建立该项目ns对应的vswitch与该项目ns所属租户对应的租户级vrouter的连接;针对每个项目ns对应的每个集群,在该集群创建本地项目ns,为该集群对应的工作负载分配该集群的资源,并建立该项目ns对应的vswitch与该项目对应的各个集群的主节点的连接。
7.在一些实施例中,该方法还包括:针对每个租户级vrouter,在该租户级vrouter配置租户级路由策略,其中,租户级路由策略包括:该租户级vrouter对应的租户的不同项目ns内的pod之间的路由规则,每个项目ns内包括一个或多个pod;为全局vrouter配置全局路由策略,全局路由策略包括该不同租户的pod之间的路由规则。
8.在一些实施例中,该方法还包括:第一主节点接收集群内第一pod发送的流量包,流量包包括:第二本地项目ns的标识和第二pod的ip地址,其中,第一pod所在的本地项目ns作为第一本地项目ns,第二pod所在的本地项目ns作为第二本地项目ns;第一主节点在确定第二本地项目ns与第一本地项目ns相同的情况下,根据第二pod的ip地址将流量包发送至第二pod。
9.在一些实施例中,该方法还包括:在第二本地项目ns与第一本地项目ns不同的情
况下,第一vswitch接收第一主节点转发的流量包,其中,第一vswitch为第一主节点连接的vswitch;第一vswitch在确定第二本地项目ns所属的第二项目ns与第一vswitch对应的第一项目ns相同的情况下,根据第二本地项目ns的标识,将流量包发送至第二本地项目ns对应的集群的第二主节点,并通过第二主节点发送至第二pod。
10.在一些实施例中,该方法还包括:在第二本地项目ns所属的项目ns与第一vswitch对应的项目ns不同的情况下,第一租户级vrouter接收第一vswitch转发的流量包,其中,第一租户级vrouter为第一vswitch连接的租户级vrouter;第一租户级vrouter在根据第二本地项目ns的标识确定第二本地项目ns所属的第二租户与第一租户级vrouter对应的第一租户相同的情况下,根据租户级路由策略确定第二项目ns是否为第一项目ns的目的项目ns;第一租户级vrouter在第二项目ns为第一项目ns的目的项目ns的情况下,将流量包转发至第二项目ns对应的第二vswitch。
11.在一些实施例中,该方法还包括:第一租户级vrouter在第二项目ns不是第一项目ns的目的项目ns的情况下,将流量包丢弃。
12.在一些实施例中,该方法还包括:第二vswitch接收流量包,根据第二本地项目ns的标识,将流量包发送至第二本地项目ns对应的集群的第二主节点,并通过第二主节点发送至第二pod。
13.在一些实施例中,该方法还包括:在第二本地项目ns所属的租户与第一租户级vrouter对应的租户不同的情况下,全局vrouter接收第一租户级vrouter转发的流量包;全局vrouter根据全局路由策略确定第二租户是否为第一租户的目的租户;全局vrouter在第二租户为第一租户的目的租户的情况下,根据第二租户对应的第二租户级vrouter的ip地址,将流量包转发至第二租户级vrouter。
14.在一些实施例中,该方法还包括:全局vrouter在第二租户不是第一租户的目的租户的情况下,将流量包丢弃。
15.在一些实施例中,该方法还包括:第二租户级vrouter根据第二本地项目ns的标识确定第二项目ns对应的第二vswitch,将流量包转发至第二vswitch;第二vswitch接收流量包,根据第二本地项目ns的标识,将流量包发送至第二本地项目ns对应的集群的第二主节点,并通过第二主节点发送至第二pod。
16.在一些实施例中,第二本地项目ns的标识由第二本地项目ns对应的集群的id和第二本地项目ns所在的项目ns的名称和租户的名称组合而成,第二本地项目ns对应的集群的id或第二本地项目ns所在的项目ns的名称作为前缀或后缀。
17.根据本公开的另一些实施例,提供的一种多租户跨集群的通信系统,包括:组网装置,用于创建全局虚拟路由器vrouter;针对每个租户,接收该租户选取的工作负载待部署的一个或多个集群和各个集群对应的项目;针对每个租户,为该租户分配租户级vrouter,建立该租户级vrouter与全局vrouter的连接;针对每个项目,为该项目创建项目命名空间ns,为该项目ns分配虚拟交换机vswitch,并建立该项目ns对应的vswitch与该项目ns所属租户对应的租户级vrouter的连接;针对每个项目ns对应的每个集群,在该集群创建本地项目ns,为该集群对应的工作负载分配该集群的资源,并建立该项目ns对应的vswitch与该项目对应的各个集群的主节点的连接。
18.在一些实施例中,该系统还包括:组网装置还用于针对每个租户级vrouter,在该
租户级vrouter配置租户级路由策略,其中,租户级路由策略包括:该租户级vrouter对应的租户的不同项目ns内的pod之间的路由规则,每个项目ns内包括一个或多个pod;为全局vrouter配置全局路由策略,全局路由策略包括该不同租户的pod之间的路由规则。
19.在一些实施例中,该系统还包括:设置在每个集群中的主节点,其中,各个主节点作为第一主节点的情况下,第一主节点用于接收集群内第一pod发送的流量包,流量包包括:第二本地项目ns的标识和第二pod的ip地址,其中,第一pod所在的本地项目ns作为第一本地项目ns,第二pod所在的本地项目ns作为第二本地项目ns;在确定第二本地项目ns与第一本地项目ns相同的情况下,根据第二pod的ip地址将流量包发送至第二pod。
20.在一些实施例中,该系统还包括:与各个主节点分别连接的vswitch,其中,在各个vswitch作为第一vswitch的情况下,第一vswitch用于在第二本地项目ns与第一本地项目ns不同的情况下,接收第一主节点转发的流量包,在确定第二本地项目ns所属的第二项目ns与第一vswitch对应的第一项目ns相同的情况下,根据第二本地项目ns的标识,将流量包发送至第二本地项目ns对应的集群的第二主节点,并通过第二主节点发送至第二pod,其中,第一vswitch为第一主节点连接的vswitch。
21.在一些实施例中,该系统还包括:与各个vswitch连接的租户级vrouter,其中,各个租户级vrouter作为第一租户级vrouter的情况下,第一租户级vrouter用于在第二本地项目ns所属的项目ns与第一vswitch对应的项目ns不同的情况下,接收第一vswitch转发的流量包,在根据第二本地项目ns的标识确定第二本地项目ns所属的第二租户与第一租户级vrouter对应的第一租户相同的情况下,根据租户级路由策略确定第二项目ns是否为第一项目ns的目的项目ns,在第二项目ns为第一项目ns的目的项目ns的情况下,将流量包转发至第二项目ns对应的第二vswitch,其中,第一租户级vrouter为第一vswitch连接的租户级vrouter。
22.在一些实施例中,该系统还包括:全局vrouter,用于在第二本地项目ns所属的租户与第一租户级vrouter对应的租户不同的情况下,接收第一租户级vrouter转发的流量包;根据全局路由策略确定第二租户是否为第一租户的目的租户;在第二租户为第一租户的目的租户的情况下,根据第二租户对应的第二租户级vrouter的ip地址,将流量包转发至第二租户级vrouter。
23.根据本公开的又一些实施例,提供的一种通信系统,包括:处理器;以及耦接至处理器的存储器,用于存储指令,指令被处理器执行时,使处理器执行如前述任意实施例的多租户跨集群的组网方法。
24.根据本公开的再一些实施例,提供的一种非瞬时性计算机可读存储介质,其上存储有计算机程序,其中,该程序被处理器执行时实现前述任意实施例的多租户跨集群的组网方法。
25.本公开中针对租户的各个项目分别创建项目ns,项目ns可以是跨多集群的ns,实现项目之间的资源的隔离。针对每个项目ns对应的每个集群,创建本地项目ns,本地项目ns可以实现同一集群内不同租户的资源的隔离。本地项目ns基于集群原生访问机制可以实现内部资源的互通,通过设置项目ns对应的vswitch,可以实现不同集群中本地项目ns之间的资源的互通。通过设置租户级vrouter,可以实现同一租户不同项目ns之间的资源的互通。通过设置全局vrouter,可以实现不同租户之间的资源的互通。
26.本公开的方案通过不同级别的命名空间实现不同资源的隔离,通过虚拟交换机和不同级别的虚拟路由器实现不同资源之间的互通。不需要单独配置隔离策略,vswitch只需要配置本地项目ns主节点的地址,不需要配置集群内所有节点的地址,租户级vrouter上只需要配置该租户级vrouter对应的租户与项目ns的对应关系以及vswitch的地址,全局vrouter只需要配置不同租户的租户级vrouter的地址,从整体上降低了配置复杂度,提高了多租户跨集群资源的隔离与互通实现的效率。
27.通过以下参照附图对本公开的示例性实施例的详细描述,本公开的其它特征及其优点将会变得清楚。
附图说明
28.为了更清楚地说明本公开实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本公开的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
29.图1示出本公开的一些实施例的多租户跨集群的组网方法的流程示意图。
30.图2a示出本公开的一些实施例的组网架构的示意图。
31.图2b示出本公开的另一些实施例的多租户跨集群的组网方法的流程示意图。
32.图3示出本公开的又一些实施例的多租户跨集群的组网方法的流程示意图。
33.图4示出本公开的一些实施例的多租户跨集群的通信系统的结构示意图。
34.图5示出本公开的一些实施例的通信系统的结构示意图。
35.图6示出本公开的另一些实施例的通信系统的结构示意图。
具体实施方式
36.下面将结合本公开实施例中的附图,对本公开实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本公开一部分实施例,而不是全部的实施例。以下对至少一个示例性实施例的描述实际上仅仅是说明性的,决不作为对本公开及其应用或使用的任何限制。基于本公开中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本公开保护的范围。
37.本公开提供一种多租户跨集群的组网方法,下面结合图1~3进行描述。
38.图1为本公开多租户跨集群的组网方法一些实施例的流程图。如图1所示,该实施例的方法包括:步骤s102~s110。
39.在步骤s102中,创建全局vrouter。
40.初始化多租户跨集群的组网方法,创建全局vrouter。全局vrouter对应全局ns(namespace,命名空间)。全局vrouter负责转发不同租户之间的流量。
41.在步骤s104中,针对每个租户,接收该租户选取的工作负载待部署的一个或多个集群和各个集群对应的项目。
42.每个租户可以访问的一个或多个集群(例如为k8s集群),将租户的工作负载部署到该租户允许访问的一个或多个集群。每个项目可以对应一个或多个集群。一个租户可以有多个不同的项目。
43.在步骤s106中,针对每个租户,为该租户分配租户级vrouter,建立该租户级vrouter与全局vrouter的连接。
44.每个租户对应一个租户级vrouter,负责转发同租户跨项目ns的流量。全局vrouter与多个租户级vrouter连接。如图2a所示,如图2a所示,租户a和b分别对应租户级vrouter a和租户级vrouter b,全局vrouter与租户级vrouter a和租户级vrouter b分别连接。
45.在步骤s108中,针对每个项目,为该项目创建项目ns,为该项目ns分配虚拟交换机vswitch,并建立该项目ns对应的vswitch与该项目ns所属租户对应的租户级vrouter的连接。
46.每个项目可以对应创建项目ns,用于隔离不同项目的工作负载(例如,pod)。如图2a所示,租户a,有两个不同的项目,分别创建项目ns a1,项目ns a2,租户b有一个项目,创建项目ns b。创建ns的方法可以参考现有技术,不再赘述。项目ns可以是跨集群的ns。如图2a所示,项目ns b是跨级群的ns,包括集群b和c中的资源。租户级vrouter和该租户对应的各个vswitch可以是一对多的关系。如图2a所示,租户a对应租户级vrouter a,vrouter a分别与vswitch a1和vswitch a2连接。租户b对应租户级vrouter b,vrouter b与vswitch b连接。
47.在步骤s110中,针对每个项目的每个集群,在该集群创建本地项目ns,为该集群对应的工作负载分配该集群的资源,并建立该项目ns对应的vswitch与该项目对应的各个集群的主节点的连接。
48.针对一个项目ns对应的每个集群,可以分别创建本地项目ns。即本地项目ns是在一个集群内创建的ns,项目ns可以包括一个或多个本地项目ns。每个项目ns对应一个vswitch,负责转发同项目ns但是不同本地项目ns之间的流量。每个集群内设置一个主(master)节点,vswitch可以与该项目对应的各个集群的主节点的连接。
49.如图2a所示,项目ns a1可以包括一个本地项目ns a1-a,项目ns a2可以包括一个本地项目ns a2-b,项目ns b包括两个本地项目ns,即ns b-b,ns b-c。项目ns a1对应vswitch a1,项目ns a2对应vswitch a2,项目ns b对应vswitch b。vswitch a1与集群a中master节点连接,vswitch a2与集群b中master节点连接,vswitch b分别与集群b和c中master节点连接。
50.在一些实施例中,针对每个租户级vrouter,在该租户级vrouter配置租户级路由策略,其中,租户级路由策略包括:该租户级vrouter对应的租户的不同项目ns内的pod之间的路由规则,每个项目ns内包括一个或多个pod。如图2a所示,每个本地项目ns内可以包括多个pod,pod创建方法可以参考现有技术,不再赘述。同一本地项目ns的多个pod之间可以基于集群原生访问机制实现资源的互通。不同本地项目ns之间基于vswitch实现资源互通。而不同项目ns内的pod之间是否能够实现资源互通可以通过租户级路由规则进行配置。具体路由规则的内容后续实施例将进行描述。例如,项目ns a1和本地项目ns a2如果允许资源互通,则配置相应的租户级路由规则,如果不允许资源互通,可以不配置相应的租户级路由规则,租户级vrouter在查找不到对应的租户级路由规则的情况下,则不进行流量的转发,从而禁止资源的互通。
51.在一些实施例中,为全局vrouter配置全局路由策略,全局路由策略包括该不同租
户的pod之间的路由规则。不同租户的pod之间是否能够实现资源互通可以通过全局路由规则进行配置。例如,租户a和租户b如果允许资源互通,则配置相应的全局路由规则,如果不允许资源互通,可以不配置相应的全局路由规则,全局vrouter在查找不到对应的全局路由规则的情况下,则不进行流量的转发,从而禁止资源的互通。
52.上述实施例中针对租户的各个项目分别创建项目ns,项目ns可以是跨多集群的ns,实现项目之间的资源的隔离。针对每个项目ns对应的每个集群,创建本地项目ns,本地项目ns可以实现同一集群内不同租户的资源的隔离。本地项目ns基于集群原生访问机制可以实现内部资源的互通,通过设置项目ns对应的vswitch,可以实现不同集群中本地项目ns之间的资源的互通。通过设置租户级vrouter,可以实现同一租户不同项目ns之间的资源的互通。通过设置全局vrouter,可以实现不同租户之间的资源的互通。
53.上述实施例的方案通过不同级别的命名空间实现不同资源的隔离,通过虚拟交换机和不同级别的虚拟路由器实现不同资源之间的互通。不需要单独配置隔离策略,vswitch只需要配置本地项目ns主节点的地址,不需要配置集群内所有节点的地址,租户级vrouter上只需要配置该租户级vrouter对应的租户与项目ns的对应关系以及vswitch的地址,全局vrouter只需要配置不同租户的租户级vrouter的地址,从整体上降低了配置复杂度,提高了多租户跨集群资源的隔离与互通实现的效率。
54.上述实施例的方法适用于初始进行组网的场景,各个租户属于新的租户,没有进行过工作负载的创建。下面结合图2b描述本公开多租户跨集群的组网方法的另一些实施例。
55.图2b为本公开多租户跨集群的组网方法一些实施例的流程图。如图2b所示,该实施例的方法包括:步骤s202~s211。
56.在步骤s202中,创建全局vrouter。
57.在步骤s204中,针对每个租户,接收该租户选取的工作负载待部署的一个或多个集群和各个集群对应的项目。
58.在步骤s205中,针对每个租户,判断本次部署之前该租户是否曾经部署过工作负载,如果是,则执行步骤s207,否则执行步骤s206。
59.在步骤s206中,为该租户分配租户级vrouter,建立该租户级vrouter与全局vrouter的连接。
60.在步骤s207中,针对每个项目,判断该项目是否存在,如果是,则执行步骤s209,否则执行步骤s208。
61.在步骤s208中,为该项目创建项目ns,为该项目ns分配虚拟交换机vswitch,并建立该项目ns对应的vswitch与该项目ns所属租户对应的租户级vrouter的连接。
62.在步骤s209中,针对该项目ns对应的每个集群,判断在该项目是否在该集群部署过资源,如果是,则执行步骤s211,否则执行步骤s210。
63.在步骤s210中,在该集群创建本地项目ns,为该集群对应的工作负载分配该集群的资源,并建立该项目ns对应的vswitch与该项目对应的各个集群的主节点的连接。
64.在步骤s211中,在原有的本地项目ns下为该集群对应的工作负载分配该集群的资源。
65.本公开提出了一种命名空间机制与分布式部署vrouter及vswitch实现多租户跨
集群网络的资源隔离与互通的方法。通过引入全局router对应的全局ns实现多租户多集群的ns的管理,引入租户级vrouter转发同租户不同项目ns间跨集群的流量,引入跨集群vswitch为项目ns划分子网(本地项目ns)分发同租户同项目ns间跨集群的流量。不同ns间默认隔离,租户可通过租户级vrouter自定义路由规则实现跨项目ns流量互通。一个项目ns下资源跨集群分布时,为该项目ns所在的各个集群内分配一个本地项目ns,负责隔离该租户与集群内其他租户的流量。
66.本公开的方案既能实现多租户跨集群的流量隔离又能由租户自定义其所属资源跨集群的流量互通,多租户跨集群分布式组网结构实现多租户跨集群的网络快速通信与统一管理。通过为项目ns自动分配一个vswitch划分子网,加强与其他项目ns间的网络隔离。多级设置的vswitch,租户级vrouter和全局vrouter加速租户内不同通信需求在多集群中的流量通信。租户可自由在租户级vrouter上定义该租户下各项目ns间的路由规则来实现项目ns间的互通与隔离,加强租户对其跨集群资源的可维护性。
67.下面结合图2a和3描述多租户跨集群组网中流量的发送方法的一些实施例。
68.图3为本公开多租户跨集群的组网方法另一些实施例的流程图。如图3所示,该实施例的方法包括:步骤s302~s330。
69.在步骤s302中,第一主节点接收集群内第一pod发送的流量包。
70.第一pod所在的本地项目ns作为第一本地项目ns,第二pod所在的本地项目ns作为第二本地项目ns。流量包例如包括:第二本地项目ns的标识和第二pod的ip地址(即目的ip地址)。第二本地项目ns的标识例如由第二本地项目ns对应的集群的id和第二本地项目ns所在的项目ns的名称和租户的名称组合而成,第二本地项目ns对应的集群的id或第二本地项目ns所在的项目ns的名称作为前缀或后缀。例如,本地项目ns的标识为a1-a,由租户的名称a,项目ns的名称1和集群的ida组成,本地项目ns的标识也可以写成a-1-a等。通过本地项目ns的标识即可获得对应的项目ns的标识和集群的标识,也可以采用其他方法唯一标识地项目ns,不限于所举示例。项目ns的标识可以由项目的名称和租户的名称组合而成,项目的名称可以作为前缀或后缀。例如,项目ns的标识为a1或1a等。
71.在步骤s304中,第一主节点确定第二本地项目ns与第一本地项目ns是否相同,如果相同,则执行步骤s206,否则执行步骤s208。
72.第一主节点可以记录本集群内各个pod与本地项目ns的标识的对应关系,从而确定第一pod和第二pod是否属于同一本地项目ns。
73.在步骤s306中,第一主节点根据第二pod的ip地址将流量包发送至第二pod。
74.在步骤s308中,第一vswitch接收第一主节点转发的流量包。
75.第一vswitch为第一主节点连接的vswitch。如果第一pod和第二pod不属于同一本地项目ns,即第一本地项目ns和第二本地项目ns不同,则第一pod和第二pod不在同一集群,第一主节点向自己连接的第一vswitch进行转发。
76.在步骤s310中,第一vswitch确定第二本地项目ns所属的第二项目ns与第一vswitch对应的第一项目ns是否相同,如果相同,则执行步骤s312,否则,执行步骤s314。
77.由于每个项目ns对应一个vswitch,因此,第一vswitch只需要判断第二本地项目ns所属的第二项目ns是否与自己对应的第一项目ns相同即可。
78.在步骤s312中,第一vswitch根据第二本地项目ns的标识,将流量包发送至第二本
地项目ns对应的集群的第二主节点,并通过第二主节点发送至第二pod。
79.第二主节点根据流量包中携带的第二pod的ip地址,将流量包发送至第二pod。例如,图2a中本地项目ns b-b和ns b-c中的pod互相发送流量包时,可以通过vswitch b进行转发。
80.在步骤s314中,第一租户级vrouter接收第一vswitch转发的流量包。
81.第一租户级vrouter为第一vswitch连接的租户级vrouter。如果第二项目ns与第一项目ns不同,第一vswitch则将流量包继续向上转发。
82.在步骤s316中,第一租户级vrouter根据第二本地项目ns的标识确定第二本地项目ns所属的第二租户与第一租户级vrouter对应的第一租户是否相同,如果相同,则执行步骤s318,否则执行步骤s324。
83.第一租户级vrouter根据第二本地项目ns的标识可以确定所属的项目ns的标识,第一租户级vrouter可以配置自己对应的第一租户的标识,与该第一租户下所有项目ns的标识。进而第一租户级vrouter可以判断第二本地项目ns所属的第二租户与第一租户是否相同。
84.在步骤s318中,第一租户级vrouter根据租户级路由策略确定第二项目ns是否为第一项目ns的目的项目ns,如果是,则执行步骤s320,否则执行步骤s322。
85.第一租户级vrouter配置的租户级路由策略可以包括:源项目ns的标识和目的项目ns的标识,以及目的项目ns对应的vswitch的地址。第一租户级vrouter在租户级路由策略中查找第一项目ns作为源项目ns时,对应的目的项目ns是否包括第二项目ns。
86.在步骤s320中,第一租户级vrouter将流量包转发至第二项目ns对应的第二vswitch。
87.例如,图2a中项目ns a1和ns a2中的pod互相发送流量包时,可以通过租户级vrouter a进行转发。
88.在步骤s321中,第二vswitch接收流量包,根据第二本地项目ns的标识,将流量包发送至第二本地项目ns对应的集群的第二主节点,并通过第二主节点发送至第二pod。
89.在步骤s322中,第一租户级vrouter将流量包丢弃。
90.在步骤s324中,全局vrouter接收第一租户级vrouter转发的流量包。
91.在步骤s326中,全局vrouter根据全局路由策略确定第二租户是否为第一租户的目的租户,如果是,则执行步骤s328,否则执行步骤s330。
92.全局路由策略可以包括:源租户的标识和目的租户的标识,以及目的租户对应的租户级vrouter的ip地址。全局vrouter在全局路由策略中查找第一租户作为源租户时,对应的目的租户是否包括第二租户。
93.在步骤s328中,全局vrouter根据第二租户对应的第二租户级vrouter的ip地址,将流量包转发至第二租户级vrouter。
94.在步骤s329中,第二租户级vrouter根据第二本地项目ns的标识确定第二项目ns对应的第二vswitch,将流量包转发至第二vswitch;第二vswitch接收流量包,根据第二本地项目ns的标识,将流量包发送至第二本地项目ns对应的集群的第二主节点,并通过第二主节点发送至第二pod。
95.例如,图2a中租户a和租户b中的pod互相发送流量包时,可以通过全局vrouter进
行转发。
96.在步骤s330中,全局vrouter将流量包丢弃。
97.本公开还提供一种多租户跨集群的通信系统,下面结合图4进行描述。
98.图4为本公开多租户跨集群的通信系统的一些实施例的结构图。如图4所示,该实施例的系统40包括:组网装置410。
99.组网装置410用于创建全局虚拟路由器vrouter;针对每个租户,接收该租户选取的工作负载待部署的一个或多个集群和各个集群对应的项目;针对每个租户,为该租户分配租户级vrouter,建立该租户级vrouter与全局vrouter的连接;针对每个项目,为该项目创建项目命名空间ns,为该项目ns分配虚拟交换机vswitch,并建立该项目ns对应的vswitch与该项目ns所属租户对应的租户级vrouter的连接;针对每个项目ns对应的每个集群,在该集群创建本地项目ns,为该集群对应的工作负载分配该集群的资源,并建立该项目ns对应的vswitch与该项目对应的各个集群的主节点的连接。
100.在一些实施例中,组网装置410还用于针对每个租户级vrouter,在该租户级vrouter配置租户级路由策略,其中,租户级路由策略包括:该租户级vrouter对应的租户的不同项目ns内的pod之间的路由规则,每个项目ns内包括一个或多个pod;为全局vrouter配置全局路由策略,全局路由策略包括该不同租户的pod之间的路由规则。
101.在一些实施例中,系统40还包括:设置在每个集群中的主节点420,其中,各个主节点420作为第一主节点的情况下,第一主节点用于接收集群内第一pod发送的流量包,流量包包括:第二本地项目ns的标识和第二pod的ip地址,其中,第一pod所在的本地项目ns作为第一本地项目ns,第二pod所在的本地项目ns作为第二本地项目ns;在确定第二本地项目ns与第一本地项目ns相同的情况下,根据第二pod的ip地址将流量包发送至第二pod。
102.在一些实施例中,系统40还包括:与各个主节点420分别连接的vswitch430,其中,在各个vswitch430作为第一vswitch的情况下,第一vswitch用于在第二本地项目ns与第一本地项目ns不同的情况下,接收第一主节点转发的流量包,在确定第二本地项目ns所属的第二项目ns与第一vswitch对应的第一项目ns相同的情况下,根据第二本地项目ns的标识,将流量包发送至第二本地项目ns对应的集群的第二主节点,并通过第二主节点发送至第二pod,其中,第一vswitch为第一主节点连接的vswitch。
103.各个主节点420作为第二主节点时,用于接收第一vswitch发送的流量包,将流量包发送至第二pod。
104.在一些实施例中,系统40还包括:与各个vswitch430连接的租户级vrouter440,其中,各个租户级vrouter440作为第一租户级vrouter的情况下,第一租户级vrouter用于在第二本地项目ns所属的项目ns与第一vswitch对应的项目ns不同的情况下,接收第一vswitch转发的流量包,在根据第二本地项目ns的标识确定第二本地项目ns所属的第二租户与第一租户级vrouter对应的第一租户相同的情况下,根据租户级路由策略确定第二项目ns是否为第一项目ns的目的项目ns,在第二项目ns为第一项目ns的目的项目ns的情况下,将流量包转发至第二项目ns对应的第二vswitch,其中,第一租户级vrouter为第一vswitch连接的租户级vrouter。
105.各个vswitch430作为第二vswitch时,用于接收第一租户级vrouter发送的流量包,根据第二本地项目ns的标识,将流量包发送至第二本地项目ns对应的集群的第二主节
点,并通过第二主节点发送至第二pod。
106.在一些实施例中,系统40还包括:全局vrouter450,用于在第二本地项目ns所属的租户与第一租户级vrouter对应的租户不同的情况下,接收第一租户级vrouter转发的流量包;根据全局路由策略确定第二租户是否为第一租户的目的租户;在第二租户为第一租户的目的租户的情况下,根据第二租户对应的第二租户级vrouter的ip地址,将流量包转发至第二租户级vrouter。
107.各个租户级vrouter440作为第二租户级vrouter时,用于接收全局vrouter450发送的流量包,根据第二本地项目ns的标识确定第二项目ns对应的第二vswitch,将流量包转发至第二vswitch。第二vswitch用于接收流量包,根据第二本地项目ns的标识,将流量包发送至第二本地项目ns对应的集群的第二主节点,并通过第二主节点发送至第二pod。
108.在一些实施例中,系统40还包括:多个pod460,用于发送流量包至对应的主节点420,或者接收主节点420发送的流量包。
109.本公开的多租户跨级群通信系统包括:全局vrouter450、租户级vrouter440、项目ns、项目ns对应的vswitch430、主节点420、本地项目ns和租户pod460。
110.全局vrouter450是所有租户之上的vrouter,负责根据定义的全局路由策略转发跨租户流量。租户级vrouter440是每一个租户分配的一个租户级vrouter,负责根据定义的租户级路由策略转发同租户跨namespace流量。项目ns是每一个租户可以划分一个或多个的项目ns用于隔离不同项目工作负载。项目ns对应的vswitch430是每个项目ns分配的一个vswitch,负责转发同租户同项目ns下的流量。本地项目ns是一个项目ns所在的各个集群内分配的一个本地项目ns,负责隔离集群内其他租户的流量。租户pod460是本地项目ns内的实际工作负载。
111.本公开的实施例中的通信系统,例如组网装置、vswitch、租户级vrouter、全局vrouter等可各由各种计算设备或计算机系统来实现,下面结合图5以及图6进行描述。
112.图5为本公开通信系统的一些实施例的结构图。如图5所示,该实施例的通信系统50包括:存储器510以及耦接至该存储器510的处理器520,处理器520被配置为基于存储在存储器510中的指令,执行本公开中任意一些实施例中的多租户跨集群的组网方法。
113.其中,存储器510例如可以包括系统存储器、固定非易失性存储介质等。系统存储器例如存储有操作系统、应用程序、引导装载程序(boot loader)、数据库以及其他程序等。
114.图6为本公开通信系统的另一些实施例的结构图。如图6所示,该实施例的通信系统60包括:存储器610以及处理器620,分别与存储器510以及处理器520类似。还可以包括输入输出接口630、网络接口640、存储接口650等。这些接口630,640,650以及存储器610和处理器620之间例如可以通过总线660连接。其中,输入输出接口630为显示器、鼠标、键盘、触摸屏等输入输出设备提供连接接口。网络接口640为各种联网设备提供连接接口,例如可以连接到数据库服务器或者云端存储服务器等。存储接口650为sd卡、u盘等外置存储设备提供连接接口。
115.本领域内的技术人员应当明白,本公开的实施例可提供为方法、系统、或计算机程序产品。因此,本公开可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本公开可采用在一个或多个其中包含有计算机可用程序代码的计算机可用非瞬时性存储介质(包括但不限于磁盘存储器、cd-rom、光学存储器等)上实施的计
算机程序产品的形式。
116.本公开是参照根据本公开实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解为可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
117.这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
118.这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
119.以上所述仅为本公开的较佳实施例,并不用以限制本公开,凡在本公开的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本公开的保护范围之内。
再多了解一些

本文用于企业家、创业者技术爱好者查询,结果仅供参考。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

相关文献