一种边缘节点对外暴露服务的方法和系统
技术领域
本申请涉及云计算技术领域,特别是涉及一种边缘节点对外暴露服务的方法和系统。
背景技术
Kubernetes是自动化容器操作的开源平台,可以实现容器集群的自动化部署、自动扩缩容、维护等功能。在一个中心侧加边缘侧部署的Kubernetes集群中,边缘侧Worker节点通过WebSocket的方式与中心侧Master节点通信,将工作负载同步到边缘侧运行。在这种场景下,由于边缘侧网络与中心测的物理隔离,边缘侧Worker节点上的Pod只能在局域网内提供服务,而无法在互联网上提供服务。
在相关技术中,可以通过在边缘侧节点上设置一个反向代理服务器来对外提供服务,但是,因为边缘侧节点上的设备资源通常都很紧缺,通过在边缘侧节点上设置反向代理服务器来实现对外提供服务需要投入较大的资源成本。
目前针对相关技术中Kubernetes集群下边缘侧Worker节点上的Pod无法在互联网中提供服务的问题,尚未提出有效的解决方案。
发明内容
本申请实施例提供了一种边缘侧节点对外暴露服务的方法、系统、计算机设备和计算机可读存储介质,以至少解决相关技术中Kubernetes集群中边缘侧节点无法在互联网上提供服务的问题。
第一方面,本申请实施例提供了一种边缘节点对外暴露服务的方法,所述方法包括:
Kubernetes集群接收用户上传的服务配置信息;
所述Kubernetes集群指示代理控制器解析所述服务配置信息并生成第一pod配置信息和service配置信息,其中,所述代理控制器设置在集群中心侧;
所述Kubernetes集群调用云管组件,在云管组件的配合下基于所述service配置信息生成带有公网地址的service,并将所述service的后端指向所述第一pod配置信息;
所述Kubernetes集群根据所述第一pod配置信息运行代理服务器;
所述Kubernetes集群指示所述代理控制器根据所述公网地址和所述服务配置信息生成第二pod配置信息,并根据所述第二pod配置信息运行代理客户端,其中,所述代理客户端设置在集群边缘侧;
所述Kubernetes集群通过所述公网地址连接所述代理客户端和所述代理服务器,将所述边缘侧应用的端口通过所述代理客户端映射到所述公网地址的端口,并配置所述边缘侧应用与所述代理服务器之间的通路。
在其中一些实施例中,所述Kubernetes集群调用云管组件,在云管组件的配合下基于所述service配置信息生成带有公网地址的service包括:
所述Kubernetes集群中的所述云管组件接收创建Service请求之后,调用云服务厂商的接口以创建所述公网地址;
所述Kubernetes集群将所述公网地址写入所述service配置信息并在更新后生成带有所述公网地址的所述service。
在其中一些实施例中,所述Kubernetes集群根据所述第一pod配置信息运行代理服务器包括:
所述Kubernetes集群根据所述第一pod配置信息创建第一pod;
所述Kubernetes集群基于所述第一pod运行所述代理服务器,并通过所述service的公网地址提供所述代理服务器的访问通路。
在其中一些实施例中,所述Kubernetes集群指示所述代理控制器根据所述公网地址和所述服务配置信息生成第二pod配置信息,并根据所述第二pod配置信息运行代理客户端包括:
所述代理控制器创建第二pod配置信息,并通过环境变量的方式将所述服务配置信息中服务公网端口、服务边缘侧端口、代理服务器端口和边缘侧应用IP写入所述第二pod配置信息中并将所述第二pod配置信息发送至Kubernetes集群;
所述Kubernetes集群根据所述第二pod配置信息创建第二pod,并基于所述第二pod运行所述代理客户端。
在其中一些实施例中,所述Kubernetes集群根据所述第一pod配置信息和所述service配置信息运行代理服务器包括:
遍历所述Kubernetes集群环境,在所述服务配置信息中没有指定使用新的所述公网地址的情况下,所述Kubernetes集群直接复用现有的所述代理服务器;
在所述服务配置信息中指定使用新的所述公网地址的情况下,所述Kubernetes集群根据所述第一pod配置信息和所述service配置信息运行所述代理服务器。
在其中一些实施例中,所述将所述边缘侧应用的端口通过所述代理客户端映射到所述公网地址的端口之后,所述方法还包括:
所述Kubernetes集群环境接收用户访问所述公网地址的网络流量;
调用负载均衡模块将所述网络流量转发到后端主机的TCP端口,所述后端主机中的kube-proxy模块通过写入iptables规则的方式,将所述网络流量转发到所述代理服务器;
所述代理客户端从所述代理服务器接收所述网络流量,将所述网络流量通过所述边缘侧应用的IP发送至所述边缘侧应用。
在其中一些实施例中,所述接收用户上传的所述服务配置信息包括:服务公网端口、服务边缘侧端口、代理服务器端口和边缘侧服务IP;
所述生成带有公网地址的service之后,所述代理控制器更新所述服务配置信息并将所述公网地址写入所述服务配置信息。
第二方面,本申请实施例提供了一种边缘节点对外暴露服务的系统,所述系统包括:Kubernetes集群和代理控制器;
所述Kubernetes集群用于接收用户上传的服务配置信息;
所述代理控制器用于解析所述服务配置信息并生成第一pod配置信息和service配置信息,其中,所述代理控制器设置在集群中心侧;
所述Kubernetes集群用于调用云管组件,在云管组件的配合下根据所述service配置信息生成带有公网地址的service,并将所述service的后端指向所述第一pod配置信息,或者,根据所述第一pod配置信息运行代理服务器;
所述代理控制器或者用于根据所述公网地址和所述服务配置信息生成第二pod配置信息,并根据所述第二pod配置信息运行代理客户端,其中,所述代理客户端设置在集群边缘侧;
所述Kubernetes集群还用于通过所述公网地址连接所述代理客户端和所述代理服务器,将所述边缘侧应用的端口通过所述代理客户端映射到所述公网地址的端口,并配置所述边缘侧应用与所述代理服务器之间的通路。
第三方面,本申请实施例提供了一种计算机设备,包括存储器、处理器以及存储在所述存储器上并可在所述处理器上运行的计算机程序,所述处理器执行所述计算机程序时实现如上述第一方面所述的一种边缘节点对外暴露服务的方法。
第四方面,本申请实施例提供了一种计算机可读存储介质,其上存储有计算机程序,该程序被处理器执行时实现如上述第一方面所述的一种边缘节点对外暴露服务的方法。
相比于相关技术,本申请实施例提供的一种边缘节点对外暴露服务的方法,通过在Kubernetes集群中心侧添加一个动态代理控制器和代理服务器,在边缘节点增加一个反向代理客户端。当用户新增代理配置时,代理控制器按需选择创建或复用现有的反向代理服务器作为代理服务端,并向边缘侧Worker节点下发反向代理客户端的Pod。代理客户端的Pod在边缘节点运行之后,通过公网地址连接到中心侧节点上的代理服务器,将边缘侧应用的端口映射到公网地址的一个端口。解决了相关技术中Kubernetes集群中边缘侧Worker节点上的Pod无法在互联网中提供服务的问题,实现了边缘侧节点对外暴露服务的技术效果。
附图说明
此处所说明的附图用来提供对本申请的进一步理解,构成本申请的一部分,本申请的示意性实施例及其说明用于解释本申请,并不构成对本申请的不当限定。在附图中:
图1是根据本申请实施例的一种边缘节点对外暴露服务方法的应用环境示意图;
图2是根据本申请实施例的一种边缘侧节点对外暴露服务方法的流程图;
图3是根据本申请实施例生成带有公网地址的service的流程图;
图4是根据本申请实施例的访问流量转发示意图;
图5是根据本申请实施例的一种边缘节点对外暴露服务系统的结构框图;
图6是根据本申请实施例的一种边缘节点对外暴露服务系统的工作示意图;
图7是根据本申请实施例的代理控制器的工作时序示意图;
图8是根据本申请实施例的电子设备的内部结构示意图。
具体实施方式
为了使本申请的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本申请进行描述和说明。应当理解,此处所描述的具体实施例仅仅用以解释本申请,并不用于限定本申请。基于本申请提供的实施例,本领域普通技术人员在没有作出创造性劳动的前提下所获得的所有其他实施例,都属于本申请保护的范围。
显而易见地,下面描述中的附图仅仅是本申请的一些示例或实施例,对于本领域的普通技术人员而言,在不付出创造性劳动的前提下,还可以根据这些附图将本申请应用于其他类似情景。此外,还可以理解的是,虽然这种开发过程中所作出的努力可能是复杂并且冗长的,然而对于与本申请公开的内容相关的本领域的普通技术人员而言,在本申请揭露的技术内容的基础上进行的一些设计,制造或者生产等变更只是常规的技术手段,不应当理解为本申请公开的内容不充分。
在本申请中提及“实施例”意味着,结合实施例描述的特定特征、结构或特性可以包含在本申请的至少一个实施例中。在说明书中的各个位置出现该短语并不一定均是指相同的实施例,也不是与其它实施例互斥的独立的或备选的实施例。本领域普通技术人员显式地和隐式地理解的是,本申请所描述的实施例在不冲突的情况下,可以与其它实施例相结合。
除非另作定义,本申请所涉及的技术术语或者科学术语应当为本申请所属技术领域内具有一般技能的人士所理解的通常意义。本申请所涉及的“一”、“一个”、“一种”、“该”等类似词语并不表示数量限制,可表示单数或复数。本申请所涉及的术语“包括”、“包含”、“具有”以及它们任何变形,意图在于覆盖不排他的包含;例如包含了一系列步骤或模块(单元)的过程、方法、系统、产品或设备没有限定于已列出的步骤或单元,而是可以还包括没有列出的步骤或单元,或可以还包括对于这些过程、方法、产品或设备固有的其它步骤或单元。本申请所涉及的“连接”、“相连”、“耦接”等类似的词语并非限定于物理的或者机械的连接,而是可以包括电气的连接,不管是直接的还是间接的。本申请所涉及的“多个”是指两个或两个以上。“和/或”描述关联对象的关联关系,表示可以存在三种关系,例如,“A和/或B”可以表示:单独存在A,同时存在A和B,单独存在B这三种情况。字符“/”一般表示前后关联对象是一种“或”的关系。本申请所涉及的术语“第一”、“第二”、“第三”等仅仅是区别类似的对象,不代表针对对象的特定排序。
本申请提供的一种边缘节点对外暴露服务的方法,可以应用在图1所示的应用环境中,图1是根据本申请实施例的一种边缘节点对外暴露服务方法的应用环境示意图。如图1所示,终端10与云服务器11通过网络进行通信。用户通过终端10访问云服务器11,其中,在云服务器11的上运行有Kubernetes集群环境,访问流量被转发到Kubernetes集群环境的后端主机上,并通过预设的公网地址访问集群中心测的代理服务器;最后,代理服务器通过该公网地址将流量转发至集群边缘侧的代理客户端,代理客户端根据应用IP转发流量至对应的应用中,从而实现通过互联网对集群边缘侧节点的访问。无需在边缘侧节点长期设置一个反向代理服务器来对外提供服务,降低了资源成本。进一步的,本实施例中的终端10可以是智能手机、平板电脑、台式电脑、笔记本电脑和智能可穿戴设备,云服务器11可以是独立的服务器或者多个服务器组成的服务器集群。
本申请提供了一种边缘节点对外暴露服务的方法,图2是根据本申请实施例的一种边缘侧节点对外暴露服务方法的流程图,如图2所示,该流程包括如下步骤:
步骤S201,Kubernetes集群接收用户上传的服务配置信息;该服务配置信息由开发人员按照需求编写;其中,Kubernetes集群提供有一种CustomResourceDefinition(简称为CRD)功能,用于对用户在集群中添加的服务配置信息进行处理;在本实施例中,Kubernetes集群接收的服务配置信息具体包括:服务公网端口、服务边缘侧端口、代理服务器端口和边缘侧服务IP;
步骤S202,Kubernetes集群指示代理控制器解析服务配置信息并生成第一pod配置信息和service配置信息,基于该第一pod配置信息运行代理服务器,其中,代理控制器设置在集群中心侧;在本实施例中,代理控制器首先从Kubernetes集群中获取服务配置信息,进行解析之后生成第一pod配置信息和service配置信息。需要说明的是,pod是集群环境中负载运行的最小单位,在Kubernetes集群中基于pod配置信息创建出对应的pod并运行的。集群基于该第一pod配置信息创建第一pod之后,再进一步的,再集群中的云管组件的配合下对service配置信息分配公网地址,并在更新后生成带有公网地址的service,同时,将带有公网地址service的后端指向该第一pod。最后Kubernetes集群基于该第一pod运行代理服务器。需要说明的是,在云管组件对service配置信息分配公网地址之后,上述服务配置信息会被代理控制器更新并将该公网地址写入其中;
步骤S203,代理控制器根据公网地址和服务配置信息生成第二pod配置信息,并根据第二pod配置信息运行代理客户端,其中,代理客户端设置在集群边缘侧;本实施例中,代理控制器创建第二pod配置信息,进一步的,通过环境变量的方式将服务配置信息中的公网地址、服务公网端口、服务边缘侧端口、代理服务器端口和边缘侧应用IP写入该第二pod配置信息中。最后,将该第二pod配置信息发送至Kubernetes集群,集群根据第二pod配置信息创建第二pod,并基于第二pod运行代理客户端;需要说明的是,本实施例中对于代理服务器和代理客户端都是动态创建和删除的,当用户在集群中写入动态代理的服务配置信息的情况下,代理控制器才会生成代理服务器和代理客户端相关的配置信息;在用户删除服务配置信息的情况下,上述的pod配置信息和service配置信息都会被删除,从而节约集群的资源;
步骤S204,通过公网地址连接代理客户端和代理服务器,将边缘侧应用的端口通过代理客户端映射到公网地址的端口,并配置边缘侧应用与代理服务器之间的通路。
通过上述步骤S201至S204,相比较于相关技术中在边缘侧长期设置代理服务器的方法实现边缘侧节点对外暴露服务的方法,本申请实施例通过在Kubernetes集群中心侧新增一个动态代理控制器和代理服务器,在边缘节点增加一个反向代理客户端。当用户新增代理配置时,代理控制器按需选择创建或复用现有的反向代理服务器作为代理服务端,并向边缘侧节点下发反向代理客户端的Pod。代理客户端的Pod在边缘节点运行之后,通过公网地址连接到中心侧节点上的反向代理服务端,将边缘侧应用的端口映射到公网地址的一个端口,无需在本就资源紧张的边缘侧节点再创建反向代理服务器,实现了边缘侧节点对外暴露服务,以及节省资源成本的目的。
在其中一些实施例中,图3是根据本申请实施例生成带有公网地址的service的流程图,如图3所示,该流程包括如下步骤:
S301,Kubernetes集群中的云管组件接收创建Service请求之后,调用云服务厂商的接口以创建公网地址;
S302,Kubernetes集群将公网地址写入service配置信息并在更新后生成带有公网地址的service。
在其中一些实施例中,Kubernetes集群指示代理控制器根据公网地址和服务配置信息生成第二pod配置信息,并根据第二pod配置信息运行代理客户端包括:代理控制器创建第二pod配置信息,并通过环境变量的方式将服务配置信息中的公网地址、服务公网端口、服务边缘侧端口、代理服务器端口和边缘侧应用IP写入第二pod配置信息中并将其发送至Kubernetes集群;Kubernetes集群根据第二pod配置信息创建第二pod,并基于第二pod运行代理客户端。
在其中一些实施例中,代理控制器按照业务需求选择创建或者直接复用现有的代理服务器作为代理服务端。其中,具体包括:遍历Kubernetes集群环境,在服务配置信息中没有指定使用新的公网地址的情况下,Kubernetes集群直接复用现有的代理服务器;在服务配置信息中指定使用新的公网地址的情况下,Kubernetes集群根据第一pod配置信息和service配置信息运行代理服务器。
在其中一些实施例中,图4是根据本申请实施例的访问流量转发示意图,如图4所示,将边缘侧应用的端口通过代理客户端映射到公网地址的端口之后, Kubernetes集群环境接收用户访问公网地址的网络流量;调用负载均衡模块将网络流量转发到后端主机的TCP端口,后端主机中的kube-proxy模块通过写入iptables规则的方式,将网络流量转发到代理服务器;进一步的,代理客户端通过公网地址从代理服务器接收网络流量,继而再将网络流量根据边缘侧应用的IP发送至边缘侧应用。
需要说明的是,在上述流程中或者附图的流程图中示出的步骤可以在诸如一组计算机可执行指令的计算机系统中执行,并且,虽然在流程图中示出了逻辑顺序,但是在某些情况下,可以以不同于此处的顺序执行所示出或描述的步骤。
本实施例还提供了一种边缘节点对外暴露服务的系统,该系统用于实现上述实施例及优选实施方式,已经进行过说明的不再赘述。如以下所使用的,术语“模块”、“单元”、“子单元”等可以实现预定功能的软件和/或硬件的组合。尽管以下实施例所描述的装置较佳地以软件来实现,但是硬件,或者软件和硬件的组合的实现也是可能并被构想的。
图5是根据本申请实施例的一种边缘节点对外暴露服务系统的结构框图,如图5所示,该系统包括: Kubernetes集群51和代理控制器52;
Kubernetes集群51用于接收用户上传的服务配置信息;
代理控制器52用于解析服务配置信息并生成第一pod配置信息和service配置信息,其中,代理控制器52设置在集群中心侧;
Kubernetes集群51用于调用云管组件,在云管组件的配合下根据service配置信息生成带有公网地址的service,并将service的后端指向第一pod配置信息,或者,根据第一pod配置信息运行代理服务器;
代理控制器52或者用于根据公网地址和服务配置信息生成第二pod配置信息,并根据第二pod配置信息运行代理客户端,其中,代理客户端设置在集群边缘侧;
Kubernetes集群51还用于通过公网地址连接代理客户端和代理服务器,将边缘侧应用的端口通过代理客户端映射到公网地址的端口,并配置边缘侧应用与代理服务器之间的通路。
在其中一些实施例中,图6是根据本申请实施例的边缘节点对外暴露服务系统的工作示意图,如图6所示,首先用户将编写好的服务配置信息上传至Kubernetes集群51,代理控制器52在Kubernetes集群51中获取服务配置信息后解析该服务配置信息输出pod配置信息和service配置信息,并且,调用云管组件对service配置公网地址,进一步的,Kubernetes集群基于该pod配置信息和公网地址创建并运行代理服务器的pod和代理客户端的pod,其中,该代理服务器在集群中心侧,该代理客户端在集群边缘侧;最后,通过代理客户端连接应用服务,用户通过上述公网地址、代理服务器以及代理客户端访问边缘侧节点。
在其中一些实施例中,图7是根据本申请实施例的代理控制器52的工作时序示意图,如图7所示,用户向Kubernetes集群51的API服务器写入服务配置信息后,该服务配置信息会交给代理控制器52处理。代理控制器52根据该服务配置信息,创建出代理服务器的第一Pod,再创建一个LoadBalancer类型Service指向代理服务器的第一Pod,此时便可以使用上述Service的公网地址访问代理服务器的Pod。最后代理控制器52创建代理客户端的Pod配置信息。
本实施例还提供了一种电子装置,包括存储器和处理器,该存储器中存储有计算机程序,该处理器被设置为运行计算机程序以执行上述任一项方法实施例中的步骤。
可选地,上述电子装置还可以包括传输设备以及输入输出设备,其中,该传输设备和上述处理器连接,该输入输出设备和上述处理器连接。
需要说明的是,本实施例中的具体示例可以参考上述实施例及可选实施方式中所描述的示例,本实施例在此不再赘述。
另外,结合上述实施例中的边缘节点对外暴露服务的方法,本申请实施例可提供一种存储介质来实现。该存储介质上存储有计算机程序;该计算机程序被处理器执行时实现上述实施例中的任意一种边缘节点对外暴露服务的方法。
在一个实施例中,提供了一种计算机设备,该计算机设备可以是终端。该计算机设备包括通过系统总线连接的处理器、存储器、网络接口、显示屏和输入装置。其中,该计算机设备的处理器用于提供计算和控制能力。该计算机设备的存储器包括非易失性存储介质、内存储器。该非易失性存储介质存储有操作系统和计算机程序。该内存储器为非易失性存储介质中的操作系统和计算机程序的运行提供环境。该计算机设备的网络接口用于与外部的终端通过网络连接通信。该计算机程序被处理器执行时以实现一种边缘节点对外暴露服务的方法。该计算机设备的显示屏可以是液晶显示屏或者电子墨水显示屏,该计算机设备的输入装置可以是显示屏上覆盖的触摸层,也可以是计算机设备外壳上设置的按键、轨迹球或触控板,还可以是外接的键盘、触控板或鼠标等。
在一个实施例中,图8是根据本申请实施例的电子设备的内部结构示意图,如图8所示,提供了一种电子设备,该电子设备可以是服务器,其内部结构图可以如图8所示。该电子设备包括通过内部总线连接的处理器、网络接口、内存储器和非易失性存储器,其中,该非易失性存储器存储有操作系统、计算机程序和数据库。处理器用于提供计算和控制能力,网络接口用于与外部的终端通过网络连接通信,内存储器用于为操作系统和计算机程序的运行提供环境,计算机程序被处理器执行时以实现一种边缘节点对外暴露服务的方法,数据库用于存储数据。
本领域技术人员可以理解,图8中示出的结构,仅仅是与本申请方案相关的部分结构的框图,并不构成对本申请方案所应用于其上的电子设备的限定,具体的电子设备可以包括比图中所示更多或更少的部件,或者组合某些部件,或者具有不同的部件布置。
本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,是可以通过计算机程序来指令相关的硬件来完成,该计算机程序可存储于一非易失性计算机可读取存储介质中,该计算机程序在执行时,可包括如上述各方法的实施例的流程。其中,本申请所提供的各实施例中所使用的对存储器、存储、数据库或其它介质的任何引用,均可包括非易失性和/或易失性存储器。非易失性存储器可包括只读存储器(ROM)、可编程ROM(PROM)、电可编程ROM(EPROM)、电可擦除可编程ROM(EEPROM)或闪存。易失性存储器可包括随机存取存储器(RAM)或者外部高速缓冲存储器。作为说明而非局限,RAM以多种形式可得,诸如静态RAM(SRAM)、动态RAM(DRAM)、同步DRAM(SDRAM)、双数据率SDRAM(DDRSDRAM)、增强型SDRAM(ESDRAM)、同步链路(Synchlink) DRAM(SLDRAM)、存储器总线(Rambus)直接RAM(RDRAM)、直接存储器总线动态RAM(DRDRAM)、以及存储器总线动态RAM(RDRAM)等。
本领域的技术人员应该明白,以上所述实施例的各技术特征可以进行任意的组合,为使描述简洁,未对上述实施例中的各个技术特征所有可能的组合都进行描述,然而,只要这些技术特征的组合不存在矛盾,都应当认为是本说明书记载的范围。以上所述实施例仅表达了本申请的几种实施方式,其描述较为具体和详细,但并不能因此而理解为对发明专利范围的限制。应当指出的是,对于本领域的普通技术人员来说,在不脱离本申请构思的前提下,还可以做出若干变形和改进,这些都属于本申请的保护范围。因此,本申请专利的保护范围应以所附权利要求为准。