一种基于Kubernetes的网络服务网格系统转让专利

申请号 : CN202011611246.4

文献号 : CN112702211B

文献日 :

基本信息:

PDF:

法律信息:

相似专利:

发明人 : 郑强张东海王刚高传集

申请人 : 浪潮云信息技术股份公司

摘要 :

本发明提供一种基于Kubernetes的网络服务网格系统,属于云计算技术中的Kubernetes网络治理系统领域,本发明包括终端,客户端,注册表,管理器,网格转发器;其中,终端负责对外提供网络服务,它负责接收来自一个或者一个以上客户端的请求,向客户端提供网络服务;客户端是需要使用动态的高级网络功能的客户端;网络服务网格中相关对象和组件的注册表;管理器是网络服务网格的控制组件;网格转发器是提供从客户端到网络服务终端之间的端到端连接的数据面组件。本发明够为Kubernetes中部署的应用提供动态的高级网络功能,补齐Kubernetes对云原生应用网络支持的短板。

权利要求 :

1.一种基于Kubernetes的网络服务网格系统,其特征在于,包括终端,客户端,注册表,管理器,网格转发器

其中,

终端负责对外提供网络服务,它负责接收来自一个或者一个以上客户端的请求,向客户端提供网络服务;

客户端是需要使用动态的高级网络功能的客户端;

网络服务网格中相关对象和组件的注册表,包含网络服务终端、管理器的实例信息;

管理器是网络服务网格的控制组件;

网格转发器是提供从客户端到网络服务终端之间的端到端连接的数据面组件;

所述管理器将部署在集群里的每个节点上,不同节点上的管理器可以相互通信和协商,形成一个分布式控制面,这些相互通信的管理器组成了一个连接终端和客户端的网格;

所述管理器主要负责两件事情:

1)处理来自客户端的网络服务使用请求,为请求匹配符合要求的网络服务终端,并为客户端创建到网络服务终端的虚拟连接;

2)将其所在节点上的网络服务终端注册到注册表上;

网格转发器直接配置linux内核的转发规则,也可以是一个第三方的网络控制面;

网格转发器负责在网络服务终端和客户端的两个新创建的网络接口之间搭建一条虚拟点对点链路,该链路可以看做这两个网络接口之间的一条虚拟网线,从一端进入的数据,会从另一端出来,从而确保客户端到终端的网络连通性;

负责提供网络服务的终端所在节点的管理器负责将网络服务的终端注册到注册表中,客户端应用Pod中的Init Container根据yaml向同一节点上的管理器发起使用网络服务的请求;接着管理器会向注册表查询可用的网络服务终端。

2.根据权利要求1所述的系统,其特征在于,

终端可位于和客户端相同的节点上,或在不同的节点上。

3.根据权利要求2所述的系统,其特征在于,

如果在相同的节点上,管理器会和终端所在节点上的管理器进行通信,转发请求,发起请求连接,终端根据自己的业务逻辑进行判断,如果可以接受该客户端的使用网络服务的请求,则接受该请求连接;终端所在节点的管理器调用网格转发器创建一个网络接口,加入到终端的Pod中。

4.根据权利要求2所述的系统,其特征在于,

如果终端和客户端在不同的节点上,终端所在节点的管理器会通知客户端所在节点的管理器,接受该使用网络服务的请求;客户端所在节点的管理器调用网格转发器创建一个网络接口,加入到客户端应用Pod中,并进行相应的网络配置,保证到终端的网络打通。

说明书 :

一种基于Kubernetes的网络服务网格系统

技术领域

[0001] 本发明涉及云计算技术中的Kubernetes网络治理系统领域,尤其涉及一种基于Kubernetes的网络服务网格系统。

背景技术

[0002] 随着云计算和微服务领域的技术不断成熟,越来越多的传统单体应用被拆分成的大量的微服务并开始上云,而Kubernetes已经成为云原生应用编排的事实标准,微服务部署在Kubernetes上,从而产生了大量的服务间东西向网络流量,为了满足集群内部应用之间的这些东西向流量需求,Kubernetes采用了一个扁平的三层网络模型,这个网络模型的目的是为了处理同一个集群内pod的东西向网络流量,因此设计的非常简单清晰,对于普通的IT和企业应用场景,该模型已经完全够用。但对于电信和一些高级的企业网络需求来说,Kubernetes的网络还存在一些局限性,比如pod在创建后网络就固定下来了,不能再进行动态更新,因此不能满足应用的动态网络需求。此外,Kubernetes的网络主要针对集群内部流量,缺乏对跨云和跨集群连通性的支持。

发明内容

[0003] 为了解决以上技术问题,本发明提供了一种基于Kubernetes的网络服务网格系统,旨在为Kubernetes中部署的应用提供一些高级网络功能服务,补齐Kubernetes对云原生应用网络支持的短板。通过部署各种提供高级网络服务的终端,应用只需要结合简单易用的yaml声明配置,就能自动连接到终端,获取各种高级网络功能,动态的满足应用的不同网络需求。
[0004] 本发明的技术方案是:
[0005] 一种基于Kubernetes的网络服务网格系统,包括终端,客户端,注册表,管理器,网格转发器
[0006] 其中,
[0007] 终端负责对外提供网络服务,它负责接收来自一个或者一个以上客户端的请求,向客户端提供网络服务;
[0008] 客户端是需要使用动态的高级网络功能的客户端;
[0009] 网络服务网格中相关对象和组件的注册表,包含网络服务终端、管理器的实例信息;
[0010] 管理器是网络服务网格的控制组件;
[0011] 网格转发器是提供从客户端到网络服务终端之间的端到端连接的数据面组件。
[0012] 进一步的,
[0013] 所述管理器将部署在集群里的每个节点上,不同节点上的管理器可以相互通信和协商,形成一个分布式控制面,这些相互通信的管理器组成了一个连接终端和客户端的网格。
[0014] 所述管理器主要负责两件事情:
[0015] 1)处理来自客户端的网络服务使用请求,为请求匹配符合要求的网络服务终端,并为客户端创建到网络服务终端的虚拟连接;
[0016] 2)将其所在节点上的网络服务终端注册到注册表上。
[0017] 进一步的,
[0018] 网格转发器直接配置linux内核的转发规则,也可以是一个第三方的网络控制面。
[0019] 网格转发器负责在网络服务终端和客户端的两个新创建的网络接口之间搭建一条虚拟点对点链路,该链路可以看做这两个网络接口之间的一条虚拟网线,从一端进入的数据,会从另一端出来,从而确保客户端到终端的网络连通性。
[0020] 进一步的,
[0021] 负责提供网络服务的终端所在节点的管理器负责将网络服务的终端注册到注册表中,客户端应用Pod中的Init Container根据yaml向同一节点上的管理器发起使用网络服务的请求;接着管理器会向注册表查询可用的网络服务终端。终端可位于和客户端相同的节点上,或在不同的节点上。
[0022] 如果在相同的节点上,管理器会和终端所在节点上的管理器进行通信,转发请求,发起请求连接,终端根据自己的业务逻辑进行判断,如果可以接受该客户端的使用网络服务的请求,则接受该请求连接;终端所在节点的管理器调用网格转发器创建一个网络接口,加入到终端的Pod中。
[0023] 如果终端和客户端在不同的节点上,终端所在节点的管理器会通知客户端所在节点的管理器,接受该使用网络服务的请求;客户端所在节点的管理器调用网格转发器创建一个网络接口,加入到客户端应用Pod中,并进行相应的网络配置,保证到终端的网络打通。
[0024] 本发明基于Kubernetes的网络服务网格设计能够为Kubernetes中部署的应用提供动态的高级网络功能,并且还支持虚拟机和服务器,是一个跨云平台的云原生网络解决方案,从而补齐了Kubernetes对云原生应用网络支持的这一块短板。
[0025] 本发明的有益效果是
[0026] 简单易用,客户端只需通过Yaml声明就能使用高级网络服务。
[0027] 不需要手动配置客户端到网络服务终端之间的连接、IP地址、子网、路由等,这些业务逻辑细节被网络服务网格框架处理,客户端无感知。
[0028] 灵活可配置,可以根据需求向网络服务网格中添加新的网络服务类型,这些网络服务可以由第三方实现和提供。
[0029] 网络服务终端的数量可以根据工作负载进行水平扩展,确保服务的稳定性。

具体实施方式

[0030] 为使本发明实施例的目的、技术方案和优点更加清楚,下面将对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例,基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动的前提下所获得的所有其他实施例,都属于本发明保护的范围。
[0031] 本发明提供一种基于Kubernetes的网络服务网格设计,该设计的核心由五部分组成,包括终端,客户端,注册表,管理器,网格转发器。网络服务网格提供了一种声明式yaml的方式来为客户端提供网络服务,它会通过Kubernetes的admission webhook功能在需要使用网络服务的客户端Pod中注入一个Init Container,由该Init Container来负责根据yaml声明文件来向管理器请求对应的网络服务,因此应用程序不需要关注网络服务的请求和连接创建过程。
[0032] 以下进一步说明:
[0033] (一)、终端
[0034] 终端负责对外提供网络服务,它负责接收来自一个或者多个客户端的请求,向客户端提供网络服务。
[0035] (二)、客户端
[0036] 需要使用动态的高级网络功能的客户端。
[0037] (三)、注册表
[0038] 网络服务网格中相关对象和组件的注册表,包含网络服务终端、管理器的实例信息。
[0039] (四)、管理器
[0040] 管理器是网络服务网格的控制组件,将部署在集群里的每个节点上,不同节点上的管理器可以相互通信和协商,形成一个分布式控制面,这些相互通信的管理器组成了一个连接终端和客户端的网格,管理器主要负责两件事情:
[0041] 1)处理来自客户端的网络服务使用请求,为请求匹配符合要求的网络服务终端,并为客户端创建到网络服务终端的虚拟连接。
[0042] 2)将其所在节点上的网络服务终端注册到注册表上。
[0043] (五)、网格转发器
[0044] 网格转发器是提供从客户端到网络服务终端之间的端到端连接的数据面组件,它可以直接配置linux内核的转发规则,也可以是一个第三方的网络控制面。它负责在网络服务终端和客户端的两个新创建的网络接口之间搭建一条虚拟点对点链路,该链路可以看做这两个网络接口之间的一条虚拟网线,从一段进入的数据,会从另一端出来,从而确保客户端到终端的网络连通性。
[0045] 首先要有负责提供网络服务的终端,该终端所在节点的管理器负责将其注册到注册表中,客户端应用Pod中的Init Container根据yaml向同一节点上的管理器发起使用网络服务的请求。接着管理器会向注册表查询可用的网络服务终端,终端可能位于和客户端相同的节点上,也可能在不同的节点上,如果在不同的节点上,管理器会和终端所在节点上的管理器进行通信,转发请求,发起请求连接,终端根据自己的业务逻辑进行判断,如果可以接受该客户端的服务请求,则接受该连接请求。终端所在节点的管理器调用网格转发器创建一个网络接口,加入到终端的Pod中。如果终端和客户端在不同的节点上,终端所在节点的管理器会通知客户端所在节点的管理器,接受该服务请求。客户端所在节点的管理器调用网格转发器创建一个网络接口,加入到客户端应用Pod中,并进行相应的网络配置,保证到终端的网络打通。
[0046] 本发明基于Kubernetes的声明式yaml配置,再结合网络服务终端,能够为Kubernetes中部署的应用提供高级的网络服务。
[0047] 通过yaml配置自动打通客户端到网络服务终端的网络连接,保证网络服务的可用性,无需客户端手动配置。
[0048] 可以根据需要向网络服务网格中添加新的网络服务类型,满足不同的客户端对各种高级网络服务的需求。
[0049] 提供网络服务的终端数量可以根据工作负载进行水平扩展,确保服务的可用性和稳定性。
[0050] 以上所述仅为本发明的较佳实施例,仅用于说明本发明的技术方案,并非用于限定本发明的保护范围。凡在本发明的精神和原则之内所做的任何修改、等同替换、改进等,均包含在本发明的保护范围内。