CN114461303A - 一种访问集群内部服务的方法和装置 - Google Patents
一种访问集群内部服务的方法和装置 Download PDFInfo
- Publication number
- CN114461303A CN114461303A CN202210126123.4A CN202210126123A CN114461303A CN 114461303 A CN114461303 A CN 114461303A CN 202210126123 A CN202210126123 A CN 202210126123A CN 114461303 A CN114461303 A CN 114461303A
- Authority
- CN
- China
- Prior art keywords
- service
- request information
- service request
- cluster
- container group
- 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
- 238000000034 method Methods 0.000 title claims abstract description 56
- 230000005540 biological transmission Effects 0.000 claims description 23
- 238000004590 computer program Methods 0.000 claims description 14
- 230000003993 interaction Effects 0.000 claims description 5
- 230000003247 decreasing effect Effects 0.000 claims description 4
- 238000010586 diagram Methods 0.000 description 9
- 238000007726 management method Methods 0.000 description 8
- 238000004891 communication Methods 0.000 description 7
- 230000006870 function Effects 0.000 description 4
- 238000013459 approach Methods 0.000 description 3
- 230000018109 developmental process Effects 0.000 description 3
- 238000005516 engineering process Methods 0.000 description 3
- 230000007246 mechanism Effects 0.000 description 3
- 238000011161 development Methods 0.000 description 2
- 238000012544 monitoring process Methods 0.000 description 2
- 230000003287 optical effect Effects 0.000 description 2
- 230000008569 process Effects 0.000 description 2
- 238000012360 testing method Methods 0.000 description 2
- 238000006243 chemical reaction Methods 0.000 description 1
- 239000000470 constituent Substances 0.000 description 1
- 230000007423 decrease Effects 0.000 description 1
- 230000007547 defect Effects 0.000 description 1
- 238000005538 encapsulation Methods 0.000 description 1
- 238000001914 filtration Methods 0.000 description 1
- 238000012423 maintenance Methods 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 230000035515 penetration Effects 0.000 description 1
- 238000013468 resource allocation Methods 0.000 description 1
- 238000005096 rolling process Methods 0.000 description 1
- 238000006467 substitution reaction Methods 0.000 description 1
- 230000033772 system development Effects 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/445—Program loading or initiating
- G06F9/44505—Configuring for program initiating, e.g. using registry, configuration files
- G06F9/4451—User profiles; Roaming
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/445—Program loading or initiating
- G06F9/44521—Dynamic linking or loading; Link editing at or after load time, e.g. Java class loading
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5005—Allocation of resources, e.g. of the central processing unit [CPU] to service a request
- G06F9/5027—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals
- G06F9/505—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals considering the load
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Data Exchanges In Wide-Area Networks (AREA)
Abstract
本公开提供一种访问集群内部服务的方法和装置,集群包括至少一个服务组件,每个服务组件对应有至少一个容器组,每个容器组加载对应的内部服务;集群连接有负载均衡器;该方法包括:通过外置的负载均衡器接收服务请求信息,其中,所述服务请求信息用于请求访问所述集群的内部服务;基于所述负载均衡器中预存的第一配置文件,确定所述服务请求信息对应的服务组件,并将所述服务请求信息发送至所述服务组件;基于所述服务组件中预存的第二配置文件,确定所述服务请求信息对应的目标容器组,将所述服务请求信息发送至所述目标容器组,并对所述目标容器组内的内部服务进行访问。实现了自动化的服务对外暴露,能够便捷地直接访问集群内部的内部服务。
Description
技术领域
本公开涉及云平台技术领域,尤其涉及一种访问集群内部服务的方法和装置。
背景技术
由于云原生集群的特性,部署在集群内的服务使用的是集群内的互联网协议地址,因此,只有集群内部的服务之间能够相互访问,集群外部的网络无法直接与集群内部的容器组建立通信。现有技术中,云原生通过集群地址、节点端口、负载均衡、入口等方式中的一种或者多种组合方式,对服务进行外部暴露或者内部暴露。但是,在进行服务暴露时,通常需要更多的手段来达成目的。例如使用入口这种方式进行对外服务暴露时,要额外人工申请服务。
发明内容
本公开提供一种自适应的对外暴露方法和***,用以解决现有技术中需要人工申请服务的缺陷,实现自动化的服务对外暴露,能够便捷地直接访问集群内部的内部服务。
第一方面,本公开提供一种访问集群内部服务的方法,所述集群包括至少一个服务组件,每个服务组件对应有至少一个容器组,每个容器组加载对应的内部服务;所述集群连接有负载均衡器;
所述方法包括:
通过外置的负载均衡器接收服务请求信息,其中,所述服务请求信息用于请求访问所述集群的内部服务;
基于所述负载均衡器中预存的第一配置文件,确定所述服务请求信息对应的服务组件,并将所述服务请求信息发送至所述服务组件;
基于所述服务组件中预存的第二配置文件,确定所述服务请求信息对应的目标容器组,将所述服务请求信息发送至所述目标容器组,并对所述目标容器组内的内部服务进行访问。
根据本公开提供的访问集群内部服务的方法,所述服务组件包括:控制器和服务单元;
所述基于所述负载均衡器中预存的第一配置文件,确定所述服务请求信息对应的服务组件,并将所述服务请求信息发送至所述服务组件包括:
基于所述负载均衡器中预存的第一配置文件,确定所述服务请求信息对应的控制器;
基于所述控制器获取所述服务单元,其中,所述控制器与服务单元一一对应;
将所述服务请求信息发送至所述控制器,通过所述控制器将所述服务请求信息发送至所述服务单元。
根据本公开提供的访问集群内部服务的方法,在所述基于所述负载均衡器中预存的第一配置文件,确定所述服务请求信息对应的服务组件之前,包括:
通过所述控制器与所述负载均衡器进行信息交互,获取所述控制器的信息;
基于所述控制器的信息,通过所述负载均衡器对所述控制器配置相应的服务单元;
通过所述负载均衡器将所述控制器的服务单元记录为第一配置文件。
根据本公开提供的访问集群内部服务的方法,在所述基于所述服务组件中预存的第二配置文件,确定所述服务请求信息对应的目标容器组,之前,包括:
添加访问所述目标容器组内的内部服务的入口资源;
通过所述服务组件同步获取所述入口资源,并将所述入口资源转换成对应的第二配置文件。
根据本公开提供的访问集群内部服务的方法,所述确定所述服务请求信息对应的服务组件,并将所述服务请求信息发送至所述服务组件包括:
基于接收服务请求信息的第一入口地址,在第一配置文件中确定与所述第一入口地址对应的第一配置信息,其中,所述第一配置信息包括:第一入口地址、第一传输路径和服务组件标识;
基于所述第一配置信息确定所述服务请求信息对应的服务组件;
基于第一传输路径,将所述服务请求信息发送至所述服务组件标识对应的服务组件。
根据本公开提供的访问集群内部服务的方法,所述确定所述服务请求信息对应的目标容器组,将所述服务请求信息发送至所述目标容器组包括:
基于接收服务请求信息的第二入口地址,在第二配置文件中确定与所述第二入口地址对应的第二配置信息,其中,所述第二配置信息包括:第二入口地址、端口地址、第二传输路径和目标容器组标识;
基于所述第二配置信息确定所述服务请求信息对应的目标容器组;
通过所述服务组件基于所述端口地址接收所述服务请求信息;
基于第二传输路径,将所述服务组件中的服务请求信息发送至所述目标容器组标识对应的目标容器组。
根据本公开提供的访问集群内部服务的方法,所述方法还包括:
在所述控制器增加/减少的情况下,通过所述负载均衡器更新所述第一配置文件。
第二方面,本公开提供一种访问集群内部服务的装置,所述集群包括至少一个服务组件,每个服务组件对应有至少一个容器组,每个容器组加载对应的内部服务;所述集群连接有负载均衡器;
所述装置包括:
接收模块,用于通过外置的负载均衡器接收服务请求信息,其中,所述服务请求信息用于请求访问所述集群的内部服务;
确定模块,用于基于所述负载均衡器中预存的第一配置文件,确定所述服务请求信息对应的服务组件,并将所述服务请求信息发送至所述服务组件;
发送模块,用于基于所述服务组件中预存的第二配置文件,确定所述服务请求信息对应的目标容器组,将所述服务请求信息发送至所述目标容器组,并对所述目标容器组内的内部服务进行访问。
第三方面,本公开提供一种电子设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述程序时实现如上述任一项所述访问集群内部服务的方法的步骤。
第四方面,本公开提供一种非暂态计算机可读存储介质,其上存储有计算机程序,该计算机程序被处理器执行时实现如上述任一项所述访问集群内部服务的方法的步骤。
第五方面,本公开提供一种计算机程序产品,包括计算机程序,所述计算机程序被处理器执行时实现如上述任一项所述访问集群内部服务的方法的步骤。
本公开提供的一种访问集群内部服务的方法和装置,首先在集群外部设置负载均衡器,通过负载均衡器接收访问集群的内部服务的请求信息,基于负载均衡器中预存的第一配置文件,确定集群内与服务请求信息对应的服务组件,并将所述服务请求信息发送至所述服务组件,所述服务组件是集群内部生成的,不需要额外人工申请服务组件;再基于所述服务组件中预存的第二配置文件,确定所述服务请求信息对应的目标容器组,并将所述服务请求信息发送给目标容器组,且对目标容器组内的内部服务进行访问。实现自动化的服务对外暴露,能够便捷地直接访问集群内部的内部服务。
附图说明
为了更清楚地说明本公开或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作一简单地介绍,显而易见地,下面描述中的附图是本公开的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1是为本公开实施例提供的一种访问集群内部服务的方法的流程示意图;
图2是本公开实施例提供的将服务请求信息发送至所述服务组件的流程示意图之一;
图3是本公开实施例提供的获取第一配置文件的流程示意图;
图4是本公开实施例提供的将服务请求信息发送至所述服务组件的流程示意图之二;
图5是本公开实施例提供的服务请求信息发送至目标容器组的流程示意图;
图6是本公开实施例提供的访问集群内部服务的框图;
图7是本公开实施例提供的访问集群内部服务的整体流程示意图;
图8是本公开实施例提供的一种访问集群内部服务的装置的结构示意图;
图9是本公开提供的电子设备的结构示意图。
具体实施方式
为使本公开实施例的目的、技术方案和优点更加清楚,下面将结合本公开实施例中的附图,对本公开实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本公开实施例一部分实施例,而不是全部的实施例。基于本公开实施例中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本公开实施例保护的范围。
云原生是一种软件开发技术,它充分利用了云计算,使用软件技术栈将应用程序部署为微服务。现有技术中,云原生应用程序构建在Docker容器中运行的一组微服务,在Kubernetes中编排,并使用DevOps和GitOps工作流进行管理和部署。使用Docker容器能够将执行所需的所有软件及环境配置打包到一个可执行包中。容器在虚拟化环境中运行,从而将包含的应用程序与其环境隔离。
Kubernetes缩写为K8s,是Google团队发起并维护的一个容器集群管理***,底层基于Docker、Rkt等容器技术,提供强大的应用管理和资源管理调度能力。K8s具有完备的集群管理能力,包括多层次的安全防护和准入机制、多租户应用支撑能力、透明的服务注册和服务发现机制、内建智能负载均衡器、强大的故障发现和自我修复功能、服务滚动升级和在线扩容能力、可扩展的资源自动调度机制,以及多粒度的资源配置额管理能力。同时,K8s提供了完善的管理工具,这些工具覆盖了包括开发、测试部署、运维监控在内的各个环节。因此,K8s是一个全新的、基于容器技术的分布式架构解决方案,并且,是一个一站式的、完备的分布式***开发和支撑平台。
对外服务暴露指的是将集群内部的应用服务暴露在外面,以使集群外部网络能够访问集群内部的应用服务。
对内服务暴露用于集群内部的服务访问,即给定一个集群内的服务,集群内的其它应用都可以访问该服务,集群外部无法访问它。
Kubernetes集群的网络模型是一种被普遍使用的基于容器的分布式架构领先方案,其解决了大规模集群在使用中的管理难题。在Kubernetes集群中,容器组Pod是Kubernetes集群部署的最小单元,为客户端提供某种服务,通常为服务分配集群内的互联网协议地址。
但是,由于Kubernetes集群的特性,部署在Kubernetes集群内的服务使用的是集群内的互联网协议地址,因此,只有Kubernetes集群内部的服务之间能够相互访问,集群外部的网络无法直接与Kubernetes集群内部的Pod建立通信。现有技术中,基于Kubernetes能够提供高可用的微服务,为了访问这些服务,Kubernetes提供了四种方式:ClusterIP、Nodeport、Loadbalancer、Ingress。
1)ClusterIP服务是Kubernetes的默认服务。用于集群内部的服务访问,即给定一个集群内的服务,集群内的其它应用都可以访问该服务,集群外部无法访问它。
2)NodePort服务是引导外部流量到容器组内的服务的最原始方式。这种方式主要是在所有节点(节点可以为虚拟机)上开放一个特定端口,任何发送到该端口的流量都被转发到对应服务。Nodeport使用起来比较方便,适合于开发测试阶段,但是Nodeport个数有限,使用Nodeport方式暴露的Kubernetes服务个数有限。
3)LoadBalancer服务是暴露服务到Internet的标准方式。在GKE上,这种方式会启动一个Network Load Balancer,将会给定一个单独的IP地址,所有通往指定的IP地址的流量都会被转发到对应的服务。这种方式没有过滤条件,没有路由等。即可以发送任何种类的流量到该服务,像HTTP,TCP,UDP,Websocket,gRPC或其它任意种类。但是,这种方式的最大缺点是每一个用LoadBalancer暴露的服务都会有它自己的IP地址,每个用到的LoadBalancer都需要付费,这将是非常昂贵的。
4)Ingress是k8s资源对象,用于对外暴露服务,但是使用Ingress进行对外服务暴露时,要额外人工申请Service。
本公开的实施例提供一种访问集群内部服务的方法,利用集群内置的Ingress-controller以及外置的负载均衡器,实现自动化的服务对外暴露,能够便捷地直接访问集群内部的内部服务。
参照图1所示,为本公开实施例提供的一种访问集群内部服务的方法的流程示意图,所述集群包括至少一个服务组件,每个服务组件对应有至少一个容器组,每个容器组加载对应的内部服务;所述集群连接有负载均衡器。
集群(Cluster)是计算、存储和网络资源的集合,K8s利用这些资源运行各种基于容器的应用,集群可以作为一个虚拟机。集群的每个组成点称为节点(Node),由节点组合形成群集。Node的职责是运行容器应用,Node负责监控并汇报容器的状态,同时根据Cluster的要求管理容器的生命周期。Node运行在Linux的操作***上,也可以是物理机或者是虚拟机。
一个节点(Node)中包括多个容器组,容器组指的是Pod,Pod在K8s中是基本的管理单元,而不是容器(Container),Pod是K8s在容器上的一层封装,由一组运行在同一主机的一个或多个容器组成。
所述方法包括:
110,通过外置的负载均衡器接收服务请求信息,其中,所述服务请求信息用于请求访问所述集群的内部服务。
该步骤中,负载均衡器(Load Balance),其含义就是指负载(服务请求信息)进行平衡、分摊到集群内不同容器组上执行,从而协同完成工作任务。在同一集群内的不同节点所提供的服务一致的情况下,负载均衡器就会起到流量分配的作用,将流量分配到不同的节点(容器组)中。
服务请求信息中可以包括:对服务的请求方法、服务的标识符及使用的协议或Kubernetes集群的内部服务的域名等。
120,基于所述负载均衡器中预存的第一配置文件,确定所述服务请求信息对应的服务组件,并将所述服务请求信息发送至所述服务组件。
该步骤中,第一配置文件可以理解为集群内部的所有的服务组件的关键信息。
服务组件可以理解为是通过规则定义出多个容器组对象组合而成的逻辑集合,以及访问这组容器组的策略。
130,基于所述服务组件中预存的第二配置文件,确定所述服务请求信息对应的目标容器组,将所述服务请求信息发送至所述目标容器组,并对所述目标容器组内的内部服务进行访问。
该步骤中,第二配置文件可以理解为所有容器组的关键信息。
本公开提供的一种访问集群内部服务的方法,首先在集群外部设置负载均衡器,通过负载均衡器接收访问集群的内部服务的请求信息,基于负载均衡器中预存的第一配置文件,确定集群内与服务请求信息对应的服务组件,并将所述服务请求信息发送至所述服务组件,所述服务组件是集群内部生成的,不需要额外人工申请服务组件;再基于所述服务组件中预存的第二配置文件,确定所述服务请求信息对应的目标容器组,并将所述服务请求信息发送给目标容器组,且对目标容器组内的内部服务进行访问。实现自动化的服务对外暴露,能够便捷地直接访问集群内部的内部服务。
基于上述任一实施例,所述服务组件包括:控制器和服务单元。
所述控制器指Ingress-controller。Ingress-controller就是一个Nginx容器,起到转发作用,真实网络中的流量先导入到安装了Ingress-controller所在的Node上,然后Ingress-controller根据Ingress规则,引流到后端Pod上。
Ingress-controller可以由任何具有反向代理功能的服务程序实现,如Nginx、Envoy和Traefik等。Ingress-controller自身也是运行于集群中的Pod资源对象,它与被代理的运行为Pod资源的应用运行于同一网络中。
所述服务单元指Service,具体为NodePort类型的Service,NodePort是引导外部流量到集群内,访问内部服务的一种类型。
通过Service就能访问到后面的Pod服务。需要注意的是,其实Service并不是直接连接到Pod对象,Service和Pod之间还有一个中间层—Endpoints资源对象,它是一个由IP和端口组成的列表。默认情况下,创建Service资源对象时,其关联的Endpoints对象会自动被创建。
参照图2所示,为本公开实施例提供的将服务请求信息发送至所述服务组件的流程示意图之一,包括:
210,基于所述负载均衡器中预存的第一配置文件,确定所述服务请求信息对应的控制器。
该步骤中,第一配置文件中存储着服务组件的关键信息,因此,基于所述负载均衡器中预存的第一配置文件,确定所述服务请求信息对应的Ingress-controller。
220,基于所述控制器获取所述服务单元,其中,所述控制器与服务单元一一对应。
该步骤中,Ingress-controller与Service一一对应生成,在获取Ingress-controller也就相应获取Service。
230,将所述服务请求信息发送至所述控制器,通过所述控制器将所述服务请求信息发送至所述服务单元。
该步骤中,将服务请求信息发送至Ingress-controller,再由Ingress-controller发送至对应的Service。
参照图3所示,为本公开实施例提供的获取第一配置文件的流程示意图,包括:
310,通过所述控制器与所述负载均衡器进行信息交互,获取所述控制器的信息。
该步骤中,集群中所有的Ingress-controller会自动与外置的负载均衡器进行交互,外置的负载均衡器会记录这些Ingress-controller的关键信息。
320,基于所述控制器的信息,通过所述负载均衡器对所述控制器配置相应的服务单元。
该步骤中,负载均衡器会根据关键信息,为集群内的Ingress-controller申请NodePort类型的Service,即配置相应的服务单元。
330,通过所述负载均衡器将所述控制器的服务单元记录为第一配置文件。
该步骤中,在外置的负载均衡器中,将配置的Service记录为第一配置文件,其中包含Ingress-controller所在Node的IP地址,以及Service中port的端口,并且可以在外置负载均衡器中配置负载均衡算法。
基于上述任一实施例,在所述步骤130之前包括下述步骤130~132:
步骤131,添加访问所述目标容器组内的内部服务的入口资源。
该步骤中,入口资源指的是Ingress资源。Ingress是k8s的标准资源类型之一,它其实就是一组基于DNS名称或URL路径把请求转发至指定的Service资源的规则,用于将集群外部的请求流量转发至集群内部完成服务发布。然而,Ingress资源自身并不能进行流量穿透,它仅是规则的集合,这些规则要想真正发挥作用还需要其他功能的辅助,需要配置对应的Ingress-controller。
步骤132,通过所述服务组件同步获取所述入口资源,并将所述入口资源转换成对应的第二配置文件。
该步骤中,所述服务组件同步获取Ingress资源,并将Ingress资源转换成自身能够加载的第二配置文件。
参照图4所示,为本公开实施例提供的将服务请求信息发送至所述服务组件的流程示意图之二,包括:
410,基于接收服务请求信息的第一入口地址,在第一配置文件中确定与所述第一入口地址对应的第一配置信息,其中,所述第一配置信息包括:第一入口地址、第一传输路径和服务组件标识。
该步骤中,第一入口地址指的是Ingress资源中指定的IP地址,即负载均衡器的IP地址,若Ingress资源中没有特别指定,则自动分配的访问IP地址。
420,基于所述第一配置信息确定所述服务请求信息对应的服务组件。
该步骤中,第一配置信息中包括集群内服务组件的相关信息,因此,根据服务请求信息确定对应的服务组件。
430,基于第一传输路径,将所述服务请求信息发送至所述服务组件标识对应的服务组件。
该步骤中,第一传输路径path为Ingress资源中指定的第一传输路径,基于第一传输路径,将服务请求信息发送至服务组件标识对应的服务组件中。
参照图5所示,为本公开实施例提供的服务请求信息发送至目标容器组的流程示意图,包括:
510,基于接收服务请求信息的第二入口地址,在第二配置文件中确定与所述第二入口地址对应的第二配置信息,其中,所述第二配置信息包括:第二入口地址、端口地址、第二传输路径和目标容器组标识。
该步骤中,第二入口地址指的是进入所述集群的入口地址。
520,基于所述第二配置信息确定所述服务请求信息对应的目标容器组。
530,通过所述服务组件基于所述端口地址接收所述服务请求信息。
该步骤中,端口地址与Ingress资源中指定的端口地址一致,即进入集群内服务组件的端口地址。
540,基于第二传输路径,将所述服务组件中的服务请求信息发送至所述目标容器组标识对应的目标容器组。
该步骤中,Path为Ingress资源中指定的第二传输路径,后端为Ingress资源中指定的Service。
基于Ingress资源中指定的第二传输路径将服务组件中的服务请求信息发送至目标容器组标识对应的目标容器组中。
基于上述任一实施例,所述方法还包括:
在所述控制器增加/减少的情况下,通过所述负载均衡器更新所述第一配置文件。
该步骤中,在Ingress-controller发生扩缩容时,即控制器增加/减少时,外置的负载均衡器会自动更新第一配置文件。导致Ingress-controller发生扩缩容的事件可以包括:服务淘汰事件,服务创建事件等。
进一步地,对本公开的实施做进一步补充说明,参照图6所示,为本公开实施例提供的访问集群内部服务的框图,包括外置的负载均衡器,集群内部包括Ingress-controller、Service和Pod。集群内服务组件的数量可以根据具体的场景进行设置,在图6中的一个集群内包括两个Ingress-controller,分别对应两个Service。
参照图7所示,为本公开实施例提供的访问集群内部服务的整体流程示意图,包括下述步骤710~750:
在执行步骤710~750之前,需要提前设置第一配置文件和第二配置文件,具体为:
设置第一配置文件的过程:
通过Ingress-controller与负载均衡器进行信息交互,获取Ingress-controller的信息,根据Ingress-controller的信息,通过负载均衡器对Ingress-controller配置NodePort类型的Service。
设置第二配置文件的过程:
添加访问目标容器组内的内部服务的Ingress资源,并使Ingress-controller和Service同步获取Ingress资源。
710,外置的负载均衡器接收访问集群内容器组的内部服务的服务请求信息。
720,入口地址为负载均衡器的IP地址,基于Ingress资源中指定的第一传输路径,将服务请求信息传输至负载均衡器中,后端是服务组件。
730,基于负载均衡器中的第一配置文件,确定服务请求信息对应的Ingress-controller,根据Ingress-controller确定NodePort类型的Service。
740,入口地址为进入集群的地址,端口地址为进入服务组件的地址,将服务请求信息发送至Ingress-controller,通过Ingress-controller将服务请求信息发送至后端Service中。
750,基于Ingress资源中指定的第二传输路径,将Service服务请求信息发送至目标容器组标识对应的目标容器组中,并对目标容器组内的内部服务进行访问。
下面对本公开实施例提供的一种访问集群内部服务的装置进行描述,下文描述的一种访问集群内部服务的装置与上文描述的一种访问集群内部服务的方法可相互对应参照。
具体参照图8所示,为本公开实施例提供的一种访问集群内部服务的装置的结构示意图,所述集群包括至少一个服务组件,每个服务组件对应有至少一个容器组,每个容器组加载对应的内部服务;所述集群连接有负载均衡器。
所述装置包括:
810接收模块,用于通过外置的负载均衡器接收服务请求信息,其中,所述服务请求信息用于请求访问所述集群的内部服务。
820确定模块,用于基于所述负载均衡器中预存的第一配置文件,确定所述服务请求信息对应的服务组件,并将所述服务请求信息发送至所述服务组件。
830发送模块,用于基于所述服务组件中预存的第二配置文件,确定所述服务请求信息对应的目标容器组,将所述服务请求信息发送至所述目标容器组,并对所述目标容器组内的内部服务进行访问。
本公开提供的一种访问集群内部服务的装置,首先在集群外部设置负载均衡器,通过负载均衡器接收访问集群的内部服务的请求信息,基于负载均衡器中预存的第一配置文件,确定集群内与服务请求信息对应的服务组件,并将所述服务请求信息发送至所述服务组件,所述服务组件是集群内部生成的,不需要额外人工申请服务组件;再基于所述服务组件中预存的第二配置文件,确定所述服务请求信息对应的目标容器组,并将所述服务请求信息发送给目标容器组,且对目标容器组内的内部服务进行访问。实现自动化的服务对外暴露,能够便捷地直接访问集群内部的内部服务。
基于上述任一实施例,所述服务组件包括:控制器和服务单元。
所述820确定模块具体用于:
基于所述负载均衡器中预存的第一配置文件,确定所述服务请求信息对应的控制器。
基于所述控制器获取所述服务单元,其中,所述控制器与服务单元一一对应。
将所述服务请求信息发送至所述控制器,通过所述控制器将所述服务请求信息发送至所述服务单元。
基于上述任一实施例,在所述820确定模块之前,包括:
获取模块,用于通过所述控制器与所述负载均衡器进行信息交互,获取所述控制器的信息。
配置模块,用于基于所述控制器的信息,通过所述负载均衡器对所述控制器配置相应的服务单元。
记录模块,用于通过所述负载均衡器将所述控制器的服务单元记录为第一配置文件。
基于上述任一实施例,在830发送模块之前,包括:
添加模块,用于添加访问所述目标容器组内的内部服务的入口资源。
转换模块,用于通过所述服务组件同步获取所述入口资源,并将所述入口资源转换成对应的第二配置文件。
基于上述任一实施例,所述820确定模块,还用于:
基于接收服务请求信息的第一入口地址,在第一配置文件中确定与所述第一入口地址对应的第一配置信息,其中,所述第一配置信息包括:第一入口地址、第一传输路径和服务组件标识。
基于所述第一配置信息确定所述服务请求信息对应的服务组件。
基于第一传输路径,将所述服务请求信息发送至所述服务组件标识对应的服务组件。
基于上述任一实施例,所述830发送模块,用于:
基于接收服务请求信息的第二入口地址,在第二配置文件中确定与所述第二入口地址对应的第二配置信息,其中,所述第二配置信息包括:第二入口地址、端口地址、第二传输路径和目标容器组标识。
基于所述第二配置信息确定所述服务请求信息对应的目标容器组。
通过所述服务组件基于所述端口地址接收所述服务请求信息。
基于第二传输路径,将所述服务组件中的服务请求信息发送至所述目标容器组标识对应的目标容器组。
基于上述任一实施例,所述装置还包括:
更新模块,用于在所述控制器增加/减少的情况下,通过所述负载均衡器更新所述第一配置文件。
图9示例了一种电子设备的实体结构示意图,如图9所示,该电子设备可以包括:处理器(processor)910、通信接口(Communications Interface)920、存储器(memory)930和通信总线940,其中,处理器910,通信接口920,存储器930通过通信总线940完成相互间的通信。处理器910可以调用存储器930中的逻辑指令,以执行一种访问集群内部服务的方法,所述集群包括至少一个服务组件,每个服务组件对应有至少一个容器组,每个容器组加载对应的内部服务;所述集群连接有负载均衡器;该方法包括:通过外置的负载均衡器接收服务请求信息,其中,所述服务请求信息用于请求访问所述集群的内部服务;基于所述负载均衡器中预存的第一配置文件,确定所述服务请求信息对应的服务组件,并将所述服务请求信息发送至所述服务组件;基于所述服务组件中预存的第二配置文件,确定所述服务请求信息对应的目标容器组,将所述服务请求信息发送至所述目标容器组,并对所述目标容器组内的内部服务进行访问。
此外,上述的存储器930中的逻辑指令可以通过软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本公开实施例的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本公开各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,Random Access Memory)、磁碟或者光盘等各种可以存储程序代码的介质。
另一方面,本公开还提供一种计算机程序产品,所述计算机程序产品包括存储在非暂态计算机可读存储介质上的计算机程序,所述计算机程序包括程序指令,当所述程序指令被计算机执行时,计算机能够执行上述各方法所提供的一种访问集群内部服务的方法,所述集群包括至少一个服务组件,每个服务组件对应有至少一个容器组,每个容器组加载对应的内部服务;所述集群连接有负载均衡器;该方法包括:通过外置的负载均衡器接收服务请求信息,其中,所述服务请求信息用于请求访问所述集群的内部服务;基于所述负载均衡器中预存的第一配置文件,确定所述服务请求信息对应的服务组件,并将所述服务请求信息发送至所述服务组件;基于所述服务组件中预存的第二配置文件,确定所述服务请求信息对应的目标容器组,将所述服务请求信息发送至所述目标容器组,并对所述目标容器组内的内部服务进行访问。
又一方面,本公开还提供一种非暂态计算机可读存储介质,其上存储有计算机程序,该计算机程序被处理器执行时实现以执行上述各提供的一种访问集群内部服务的方法,所述集群包括至少一个服务组件,每个服务组件对应有至少一个容器组,每个容器组加载对应的内部服务;所述集群连接有负载均衡器;该方法包括:通过外置的负载均衡器接收服务请求信息,其中,所述服务请求信息用于请求访问所述集群的内部服务;基于所述负载均衡器中预存的第一配置文件,确定所述服务请求信息对应的服务组件,并将所述服务请求信息发送至所述服务组件;基于所述服务组件中预存的第二配置文件,确定所述服务请求信息对应的目标容器组,将所述服务请求信息发送至所述目标容器组,并对所述目标容器组内的内部服务进行访问。
以上所描述的装置实施例仅仅是示意性的,其中所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部模块来实现本实施例方案的目的。本领域普通技术人员在不付出创造性的劳动的情况下,即可以理解并实施。
通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到各实施方式可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件。基于这样的理解,上述技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品可以存储在计算机可读存储介质中,如ROM/RAM、磁碟、光盘等,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行各个实施例或者实施例的某些部分所述的方法。
最后应说明的是:以上实施例仅用以说明本公开的技术方案,而非对其限制;尽管参照前述实施例对本公开进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本公开各实施例技术方案的精神和范围。
Claims (11)
1.一种访问集群内部服务的方法,其特征在于,所述集群包括至少一个服务组件,每个服务组件对应有至少一个容器组,每个容器组加载对应的内部服务;所述集群连接有负载均衡器;
所述方法包括:
通过外置的负载均衡器接收服务请求信息,其中,所述服务请求信息用于请求访问所述集群的内部服务;
基于所述负载均衡器中预存的第一配置文件,确定所述服务请求信息对应的服务组件,并将所述服务请求信息发送至所述服务组件;
基于所述服务组件中预存的第二配置文件,确定所述服务请求信息对应的目标容器组,将所述服务请求信息发送至所述目标容器组,并对所述目标容器组内的内部服务进行访问。
2.根据权利要求1所述的访问集群内部服务的方法,其特征在于,所述服务组件包括:控制器和服务单元;
所述基于所述负载均衡器中预存的第一配置文件,确定所述服务请求信息对应的服务组件,并将所述服务请求信息发送至所述服务组件包括:
基于所述负载均衡器中预存的第一配置文件,确定所述服务请求信息对应的控制器;
基于所述控制器获取所述服务单元,其中,所述控制器与服务单元一一对应;
将所述服务请求信息发送至所述控制器,通过所述控制器将所述服务请求信息发送至所述服务单元。
3.根据权利要求2所述的访问集群内部服务的方法,其特征在于,在所述基于所述负载均衡器中预存的第一配置文件,确定所述服务请求信息对应的服务组件之前,包括:
通过所述控制器与所述负载均衡器进行信息交互,获取所述控制器的信息;
基于所述控制器的信息,通过所述负载均衡器对所述控制器配置相应的服务单元;
通过所述负载均衡器将所述控制器的服务单元记录为第一配置文件。
4.根据权利要求1所述的访问集群内部服务的方法,其特征在于,在所述基于所述服务组件中预存的第二配置文件,确定所述服务请求信息对应的目标容器组之前,包括:
添加访问所述目标容器组内的内部服务的入口资源;
通过所述服务组件同步获取所述入口资源,并将所述入口资源转换成对应的第二配置文件。
5.根据权利要求1所述的访问集群内部服务的方法,其特征在于,所述确定所述服务请求信息对应的服务组件,并将所述服务请求信息发送至所述服务组件包括:
基于接收服务请求信息的第一入口地址,在第一配置文件中确定与所述第一入口地址对应的第一配置信息,其中,所述第一配置信息包括:第一入口地址、第一传输路径和服务组件标识;
基于所述第一配置信息确定所述服务请求信息对应的服务组件;
基于第一传输路径,将所述服务请求信息发送至所述服务组件标识对应的服务组件。
6.根据权利要求1所述的访问集群内部服务的方法,其特征在于,所述确定所述服务请求信息对应的目标容器组,将所述服务请求信息发送至所述目标容器组包括:
基于接收服务请求信息的第二入口地址,在第二配置文件中确定与所述第二入口地址对应的第二配置信息,其中,所述第二配置信息包括:第二入口地址、端口地址、第二传输路径和目标容器组标识;
基于所述第二配置信息确定所述服务请求信息对应的目标容器组;
通过所述服务组件基于所述端口地址接收所述服务请求信息;
基于第二传输路径,将所述服务组件中的服务请求信息发送至所述目标容器组标识对应的目标容器组。
7.根据权利要求2所述的访问集群内部服务的方法,其特征在于,所述方法还包括:
在所述控制器增加/减少的情况下,通过所述负载均衡器更新所述第一配置文件。
8.一种访问集群内部服务的装置,其特征在于,所述集群包括至少一个服务组件,每个服务组件对应有至少一个容器组,每个容器组加载对应的内部服务;所述集群连接有负载均衡器;
所述装置包括:
接收模块,用于通过外置的负载均衡器接收服务请求信息,其中,所述服务请求信息用于请求访问所述集群的内部服务;
确定模块,用于基于所述负载均衡器中预存的第一配置文件,确定所述服务请求信息对应的服务组件,并将所述服务请求信息发送至所述服务组件;
发送模块,用于基于所述服务组件中预存的第二配置文件,确定所述服务请求信息对应的目标容器组,将所述服务请求信息发送至所述目标容器组,并对所述目标容器组内的内部服务进行访问。
9.一种电子设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,其特征在于,所述处理器执行所述程序时实现如权利要求1至7任一项所述访问集群内部服务的方法的步骤。
10.一种非暂态计算机可读存储介质,其上存储有计算机程序,其特征在于,该计算机程序被处理器执行时实现如权利要求1至7任一项所述访问集群内部服务的方法的步骤。
11.一种计算机程序产品,包括计算机程序,其特征在于,所述计算机程序被处理器执行时实现如权利要求1至7任一项所述访问集群内部服务的方法的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210126123.4A CN114461303A (zh) | 2022-02-10 | 2022-02-10 | 一种访问集群内部服务的方法和装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210126123.4A CN114461303A (zh) | 2022-02-10 | 2022-02-10 | 一种访问集群内部服务的方法和装置 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN114461303A true CN114461303A (zh) | 2022-05-10 |
Family
ID=81413080
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202210126123.4A Pending CN114461303A (zh) | 2022-02-10 | 2022-02-10 | 一种访问集群内部服务的方法和装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN114461303A (zh) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN114938375A (zh) * | 2022-05-16 | 2022-08-23 | 聚好看科技股份有限公司 | 一种容器组更新设备及容器组更新方法 |
CN117453380A (zh) * | 2023-12-25 | 2024-01-26 | 阿里云计算有限公司 | 集群的容器组调度方法、***以及计算机设备 |
Citations (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106302771A (zh) * | 2016-08-23 | 2017-01-04 | 浪潮电子信息产业股份有限公司 | 一种基于Docker容器创建的应用的域名配置方法 |
CN107508795A (zh) * | 2017-07-26 | 2017-12-22 | 中国联合网络通信集团有限公司 | 跨容器集群的访问处理装置及方法 |
US20190173840A1 (en) * | 2017-12-01 | 2019-06-06 | Kohl's Department Stores, Inc. | Cloud services management system and method |
CN110837418A (zh) * | 2019-11-06 | 2020-02-25 | 浪潮云信息技术有限公司 | 一种基于容器的高并发web***及实现方法 |
CN110868465A (zh) * | 2019-11-13 | 2020-03-06 | 北京浪潮数据技术有限公司 | 一种容器云的负载均衡***及方法 |
WO2020253347A1 (zh) * | 2019-06-17 | 2020-12-24 | 深圳前海微众银行股份有限公司 | 一种容器集群管理方法、装置及*** |
US20210089415A1 (en) * | 2019-09-25 | 2021-03-25 | Sap Se | High availability for a relational database management system as a service in a cloud platform |
US11126483B1 (en) * | 2020-04-17 | 2021-09-21 | Oracle International Corporation | Direct message retrieval in distributed messaging systems |
-
2022
- 2022-02-10 CN CN202210126123.4A patent/CN114461303A/zh active Pending
Patent Citations (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106302771A (zh) * | 2016-08-23 | 2017-01-04 | 浪潮电子信息产业股份有限公司 | 一种基于Docker容器创建的应用的域名配置方法 |
CN107508795A (zh) * | 2017-07-26 | 2017-12-22 | 中国联合网络通信集团有限公司 | 跨容器集群的访问处理装置及方法 |
US20190173840A1 (en) * | 2017-12-01 | 2019-06-06 | Kohl's Department Stores, Inc. | Cloud services management system and method |
WO2020253347A1 (zh) * | 2019-06-17 | 2020-12-24 | 深圳前海微众银行股份有限公司 | 一种容器集群管理方法、装置及*** |
US20210089415A1 (en) * | 2019-09-25 | 2021-03-25 | Sap Se | High availability for a relational database management system as a service in a cloud platform |
CN110837418A (zh) * | 2019-11-06 | 2020-02-25 | 浪潮云信息技术有限公司 | 一种基于容器的高并发web***及实现方法 |
CN110868465A (zh) * | 2019-11-13 | 2020-03-06 | 北京浪潮数据技术有限公司 | 一种容器云的负载均衡***及方法 |
US11126483B1 (en) * | 2020-04-17 | 2021-09-21 | Oracle International Corporation | Direct message retrieval in distributed messaging systems |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN114938375A (zh) * | 2022-05-16 | 2022-08-23 | 聚好看科技股份有限公司 | 一种容器组更新设备及容器组更新方法 |
CN114938375B (zh) * | 2022-05-16 | 2023-06-02 | 聚好看科技股份有限公司 | 一种容器组更新设备及容器组更新方法 |
CN117453380A (zh) * | 2023-12-25 | 2024-01-26 | 阿里云计算有限公司 | 集群的容器组调度方法、***以及计算机设备 |
CN117453380B (zh) * | 2023-12-25 | 2024-02-23 | 阿里云计算有限公司 | 集群的容器组调度方法、***以及计算机设备 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11368385B1 (en) | System and method for deploying, scaling and managing network endpoint groups in cloud computing environments | |
US11924068B2 (en) | Provisioning a service | |
CN109194502B (zh) | 多租户容器云计算***的管理方法 | |
US8370481B2 (en) | Inventory management in a computing-on-demand system | |
US9674103B2 (en) | Management of addresses in virtual machines | |
US8589554B2 (en) | Intelligent and elastic resource pools for heterogeneous datacenter environments | |
US11196640B2 (en) | Releasing and retaining resources for use in a NFV environment | |
US10608990B2 (en) | Accessing nodes deployed on an isolated network | |
CN111683074A (zh) | 一种基于nfv的安全网络架构和网络安全管理方法 | |
CN114461303A (zh) | 一种访问集群内部服务的方法和装置 | |
CN115280728A (zh) | 虚拟化计算机***中的软件定义网络协调 | |
US10333901B1 (en) | Policy based data aggregation | |
WO2016106486A1 (en) | Method and apparatus for configuring a communication system | |
CN110661707B (zh) | 一种基于Docker的虚拟路由器平台 | |
CN112882792B (zh) | 信息加载方法、计算机设备及存储介质 | |
US20230094120A1 (en) | Runtime customization of nodes for network function deployment | |
US20220043946A1 (en) | Ict resource management device, ict resource management method, and ict resource management program | |
US11573819B2 (en) | Computer-implemented method for reducing service disruption times for a universal customer premise equipment, uCPE, device with resource constraint in a network functions virtualization, NFV, network infrastructure | |
US10817280B1 (en) | Overriding shared service interfaces | |
CN113127144B (zh) | 一种处理方法、装置及存储介质 | |
US11070515B2 (en) | Discovery-less virtual addressing in software defined networks | |
US20230138867A1 (en) | Methods for application deployment across multiple computing domains and devices thereof | |
CN115185637A (zh) | PaaS组件管理端和虚拟机代理的通信方法及装置 | |
EP4202668A1 (en) | Computer system and container management method and device | |
GORDIN et al. | Web portal development with different cloud containers: Docker vs. Kubernetes. |
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 |