CN113835836B - 动态发布容器服务的系统、方法、计算机设备及介质 - Google Patents
动态发布容器服务的系统、方法、计算机设备及介质 Download PDFInfo
- Publication number
- CN113835836B CN113835836B CN202111114108.XA CN202111114108A CN113835836B CN 113835836 B CN113835836 B CN 113835836B CN 202111114108 A CN202111114108 A CN 202111114108A CN 113835836 B CN113835836 B CN 113835836B
- Authority
- CN
- China
- Prior art keywords
- container
- load balancing
- address
- configuration
- information
- 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.)
- Active
Links
- 238000000034 method Methods 0.000 title claims abstract description 40
- 230000006978 adaptation Effects 0.000 claims abstract description 80
- 238000004891 communication Methods 0.000 claims abstract description 50
- 230000008859 change Effects 0.000 claims description 52
- 230000036541 health Effects 0.000 claims description 37
- 230000004044 response Effects 0.000 claims description 30
- 230000003068 static effect Effects 0.000 claims description 19
- 230000015654 memory Effects 0.000 claims description 12
- 238000004590 computer program Methods 0.000 claims description 7
- 238000012986 modification Methods 0.000 claims description 7
- 230000004048 modification Effects 0.000 claims description 7
- 238000012544 monitoring process Methods 0.000 claims description 4
- 238000010586 diagram Methods 0.000 description 18
- 239000008186 active pharmaceutical agent Substances 0.000 description 12
- 230000006870 function Effects 0.000 description 10
- 238000012423 maintenance Methods 0.000 description 9
- 238000005516 engineering process Methods 0.000 description 5
- 230000005856 abnormality Effects 0.000 description 4
- 230000008602 contraction Effects 0.000 description 3
- 238000012217 deletion Methods 0.000 description 3
- 230000037430 deletion Effects 0.000 description 3
- 239000000243 solution Substances 0.000 description 3
- 230000009471 action Effects 0.000 description 2
- 238000013459 approach Methods 0.000 description 2
- 239000002131 composite material Substances 0.000 description 2
- 235000014510 cooky Nutrition 0.000 description 2
- 238000002347 injection Methods 0.000 description 2
- 239000007924 injection Substances 0.000 description 2
- 230000007246 mechanism Effects 0.000 description 2
- 230000003287 optical effect Effects 0.000 description 2
- 230000008569 process Effects 0.000 description 2
- 238000012795 verification Methods 0.000 description 2
- 230000002159 abnormal effect Effects 0.000 description 1
- 238000011161 development Methods 0.000 description 1
- 238000007689 inspection Methods 0.000 description 1
- 238000002955 isolation Methods 0.000 description 1
- 239000004065 semiconductor Substances 0.000 description 1
- 238000012360 testing method Methods 0.000 description 1
- 230000001960 triggered effect Effects 0.000 description 1
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/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
- G06F9/45533—Hypervisors; Virtual machine monitors
- G06F9/45558—Hypervisor-specific management and integration aspects
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/01—Protocols
- H04L67/10—Protocols in which an application is distributed across nodes in the network
- H04L67/1001—Protocols in which an application is distributed across nodes in the network for accessing one among a plurality of replicated servers
- H04L67/1004—Server selection for load balancing
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/50—Network services
- H04L67/56—Provisioning of proxy services
-
- 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/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
- G06F9/45533—Hypervisors; Virtual machine monitors
- G06F9/45558—Hypervisor-specific management and integration aspects
- G06F2009/45562—Creating, deleting, cloning virtual machine instances
-
- 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/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
- G06F9/45533—Hypervisors; Virtual machine monitors
- G06F9/45558—Hypervisor-specific management and integration aspects
- G06F2009/4557—Distribution of virtual machine instances; Migration and load balancing
-
- 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/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
- G06F9/45533—Hypervisors; Virtual machine monitors
- G06F9/45558—Hypervisor-specific management and integration aspects
- G06F2009/45595—Network integration; Enabling network access in virtual machine instances
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Data Exchanges In Wide-Area Networks (AREA)
- Computer And Data Communications (AREA)
Abstract
本发明涉及动态发布容器服务的系统、方法、计算机设备及介质。按照本发明一个方面的动态发布容器服务的系统包括:容器地址获取模块,其配置成动态获取Kubernetes集群中容器的地址信息;负载均衡适配模块,其配置成:根据所述获取的容器的地址信息在负载均衡设备上生成代理地址池;以及从虚拟服务地址池获取空闲的虚拟服务地址,以将所述空闲的虚拟服务地址配置到所述负载均衡设备的虚拟服务并与所述代理地址池关联,其中所述虚拟服务地址为客户端提供统一的访问地址;和路由模块,其配置成根据所述获取的容器的地址信息在所述负载均衡设备和所述容器之间建立通信连接,使得所述负载均衡设备将接收的客户端请求经由所述通信连接转发到代理地址池的容器。
Description
技术领域
本发明涉及计算机技术领域,并且更具体地涉及一种动态发布容器服务的系统、动态发布容器服务的方法、计算机设备及计算机存储介质。
背景技术
随着容器技术的发展,金融行业、互联网行业等众多行业都开始将应用容器化,以实现高的资源利用率、高可移植性、环境标准化和版本控制、环境隔离和资源限制等优点。
对于大规模容器的编排管理,目前的解决方案主要有三种,分别为Docker Swarm、Kubernetes和Mesos,其中应用最广泛的解决方案为Kubernetes。Kubernetes是一种容器集群管理系统,其能够实现容器集群的自动化部署、自动扩缩容、维护等功能。Pod是在Kubernetes平台上部署、创建或管理的最小单位,一个Pod代表正在运行的一个进程,而一个Pod中可以运行一个或多个容器。
在传统的发布容器服务的过程中,需要在Kubernetes集群中创建NodePort类型的Service,将容器服务的IP地址和端口映射到容器的宿主机上,然后在外部负载均衡设备上手动创建代理地址池和虚拟服务。然而,这种发布容器服务的方式需要人工干预,无法实现弹性扩缩容,并且请求转发的效率低下。
发明内容
为了解决或至少缓解以上问题中的一个或多个,提供了以下技术方案。
按照本发明的第一方面,提供一种动态发布容器服务的系统,其包括:容器地址获取模块,其配置成动态获取Kubernetes集群中容器的地址信息;负载均衡适配模块,其配置成:根据所述获取的容器的地址信息在负载均衡设备上生成代理地址池;以及从虚拟服务地址池获取空闲的虚拟服务地址,以将所述空闲的虚拟服务地址配置到所述负载均衡设备的虚拟服务并与所述代理地址池关联,其中所述虚拟服务地址为客户端提供统一的访问地址;和路由模块,其配置成根据所述获取的容器的地址信息在所述负载均衡设备和所述容器之间建立通信连接,使得所述负载均衡设备将接收的客户端请求经由所述通信连接转发到所述代理地址池的容器。
根据本发明一实施例所述的动态发布容器服务的系统,其中所述系统进一步包括:动态配置模块,其配置成检测VirtualService资源对象的配置并且对所述VirtualService资源对象的配置进行解析,以获取与所述VirtualService资源对象的配置相关联的容器控制器信息、负载均衡配置信息和路由配置信息。
根据本发明一实施例或以上任一实施例的所述的动态发布容器服务的系统,其中所述动态配置模块进一步配置成:调用所述容器地址获取模块,使得所述容器地址获取模块基于所述容器控制器信息获取与容器控制器相关联的容器的地址信息。
根据本发明一实施例或以上任一实施例的所述的动态发布容器服务的系统,其中所述动态配置模块进一步配置成:调用所述路由模块,使得所述路由模块基于由所述路由配置信息指示的静态路由的方式或动态路由的方式在所述负载均衡设备和所述容器之间建立通信连接。
根据本发明一实施例或以上任一实施例的所述的动态发布容器服务的系统,其中所述容器地址获取模块进一步配置成:监听所述Kubernetes集群中所述容器的地址信息的变化;响应于所述容器的地址信息的变化来指示所述动态配置模块调用所述负载均衡适配模块,使得所述负载均衡适配模块调整在所述负载均衡设备上生成的代理地址池;以及响应于所述容器的地址信息的变化来指示所述动态配置模块调用所述路由模块,使得所述路由模块调整在所述负载均衡设备和所述容器之间建立的通信连接。
根据本发明一实施例或以上任一实施例的所述的动态发布容器服务的系统,其中所述容器地址获取模块进一步配置成响应于所述容器的地址信息的变化来指示所述动态配置模块执行以下步骤:当所述容器的地址信息的变化为新增时调用所述负载均衡适配模块,使得所述负载均衡适配模块在所述负载均衡设备上生成的代理地址池内新增相应的容器的地址信息;当所述容器的地址信息的变化为修改时调用所述负载均衡适配模块,使得所述负载均衡适配模块在所述负载均衡设备上生成的代理地址池内修改相应的容器的地址信息;以及当所述容器的地址信息的变化为删除时调用所述负载均衡适配模块,使得所述负载均衡适配模块在所述负载均衡设备上生成的代理地址池内删除相应的容器的地址信息。
根据本发明一实施例或以上任一实施例的所述的动态发布容器服务的系统,其中所述动态配置模块进一步配置成:调用所述负载均衡适配模块,使得所述负载均衡适配模块基于所述负载均衡配置信息来配置所述负载均衡设备执行容器健康检查操作、负载均衡操作、会话保持操作和流量控制操作中的一种或多种操作。
根据本发明一实施例或以上任一实施例的所述的动态发布容器服务的系统,其中所述路由模块进一步配置成:合并相邻子网的路由以减少所述负载均衡设备内的路由条目;以及定时检测所述负载均衡设备和所述容器之间建立的通信连接的可用性。
按照本发明的第二方面,提供一种动态发布容器服务的方法,其包括以下步骤:容器地址获取步骤,其用于动态获取Kubernetes集群中容器的地址信息;负载均衡适配步骤,其用于:根据所述获取的容器的地址信息在负载均衡设备上生成代理地址池;以及从虚拟服务地址池获取空闲的虚拟服务地址,以将所述空闲的虚拟服务地址配置到所述负载均衡设备的虚拟服务并与所述代理地址池关联,其中所述虚拟服务地址为客户端提供统一的访问地址;和路由步骤,其用于根据所述获取的容器的地址信息在所述负载均衡设备和所述容器之间建立通信连接,使得所述负载均衡设备将接收的客户端请求经由所述通信连接转发到所述代理地址池的容器。
根据本发明一实施例所述的动态发布容器服务的方法,其中所述方法进一步包括:动态配置步骤,其用于检测VirtualService资源对象的配置并且对所述VirtualService资源对象的配置进行解析,以获取与所述VirtualService资源对象的配置相关联的容器控制器信息、负载均衡配置信息和路由配置信息。
根据本发明一实施例或以上任一实施例的所述的动态发布容器服务的方法,其中所述动态配置步骤进一步包括:调用所述容器地址获取步骤以基于所述容器控制器信息获取与容器控制器相关联的容器的地址信息。
根据本发明一实施例或以上任一实施例的所述的动态发布容器服务的方法,其中所述动态配置步骤进一步包括:调用所述路由步骤以基于由所述路由配置信息指示的静态路由的方式或动态路由的方式在所述负载均衡设备和所述容器之间建立通信连接。
根据本发明一实施例或以上任一实施例的所述的动态发布容器服务的方法,其中所述容器地址获取步骤进一步包括:监听所述Kubernetes集群中所述容器的地址信息的变化;响应于所述容器的地址信息的变化来经由所述动态配置步骤调用所述负载均衡适配步骤,以调整在所述负载均衡设备上生成的代理地址池;以及响应于所述容器的地址信息的变化来经由所述动态配置步骤调用所述路由步骤,以调整在所述负载均衡设备和所述容器之间建立的通信连接。
根据本发明一实施例或以上任一实施例的所述的动态发布容器服务的方法,其中响应于所述容器的地址信息的变化来经由所述动态配置步骤调用所述负载均衡适配步骤进一步包括:当所述容器的地址信息的变化为新增时,调用所述负载均衡适配步骤以在所述负载均衡设备上生成的代理地址池内新增相应的容器的地址信息;当所述容器的地址信息的变化为修改时,调用所述负载均衡适配步骤以在所述负载均衡设备上生成的代理地址池内修改相应的容器的地址信息;以及当所述容器的地址信息的变化为删除时,调用所述负载均衡适配步骤以在所述负载均衡设备上生成的代理地址池内删除相应的容器的地址信息。
根据本发明一实施例或以上任一实施例的所述的动态发布容器服务的方法,其中所述动态配置步骤进一步包括:调用所述负载均衡适配步骤以基于所述负载均衡配置信息来配置所述负载均衡设备执行容器健康检查操作、负载均衡操作、会话保持操作和流量控制操作中的一种或多种操作。
根据本发明一实施例或以上任一实施例的所述的动态发布容器服务的方法,其中所述路由步骤进一步包括:合并相邻子网的路由以减少所述负载均衡设备内的路由条目;以及定时检测所述负载均衡设备和所述容器之间建立的通信连接的可用性。
根据本发明的第三方面,提供一种计算机存储介质,其上存储有计算机程序,该程序可被计算机执行以实现根据本发明第二方面所述的动态发布容器服务的方法的步骤。
根据本发明的第四方面,提供一种计算机设备,包括存储器、处理器及存储在存储器上并在处理器上运行的计算机程序,所述处理器执行所述计算机程序时实现根据本发明第二方面所述的动态发布容器服务的方法的步骤。
附图说明
本发明的上述和/或其它方面和优点将通过以下结合附图的各个方面的描述变得更加清晰和更容易理解,附图中相同或相似的单元采用相同的标号表示。在所述附图中:
图1为按照本发明的一个实施例的动态发布容器服务的系统的框图。
图2为按照本发明的一个实施例的动态发布容器服务的系统的容器地址获取模块的框图。
图3为按照本发明的一个实施例的动态发布容器服务的系统的负载均衡适配模块的框图。
图4为按照本发明的一个实施例的动态发布容器服务的系统的路由模块的框图。
图5为按照本发明的一个实施例的动态发布容器服务的系统的动态配置模块的框图。
图6为按照本发明的一个实施例的动态发布容器服务的方法的流程图。
图7为按照本发明的一个实施例的动态发布容器服务的系统的容器地址获取模块的工作流程图。
图8为按照本发明的一个实施例的动态发布容器服务的系统的负载均衡适配模块的工作流程图。
图9为按照本发明的一个实施例的动态发布容器服务的系统的路由模块的工作流程图。
图10为按照本发明的一个实施例的动态发布容器服务的系统的动态配置模块的工作流程图。
图11为按照本发明的一个实施例的计算机设备的框图。
具体实施方式
以下具体实施方式的描述本质上仅仅是示例性的,并且不旨在限制所公开的技术或所公开的技术的应用和用途。此外,不意图受在前述技术领域、背景技术或以下具体实施方式中呈现的任何明示或暗示的理论的约束。
在实施例的以下详细描述中,阐述了许多具体细节以便提供对所公开技术的更透彻理解。然而,对于本领域普通技术人员显而易见的是,可以在没有这些具体细节的情况下实践所公开的技术。在其他实例中,没有详细描述公知的特征,以避免不必要地使描述复杂化。
诸如“包含”和“包括”之类的用语表示除了具有在说明书中有直接和明确表述的单元和步骤以外,本发明的技术方案也不排除具有未被直接或明确表述的其它单元和步骤的情形。诸如“第一”和“第二”之类的用语并不表示单元在时间、空间、大小等方面的顺序而仅仅是作区分各单元之用。
需要说明的是,术语“VirtualService 资源对象”是本发明自定义的KubernetesCRD(Custom Resource Definitions,自定义资源)资源对象。Kubernetes具有多种内置的资源,例如Pod、Deployment、Service等,而CRD则提供了一种使用户可以自定义新的资源的方式,以扩展Kubernetes的功能。通过创建CRD资源对象可以在API Server中新增RESTful资源路径,通过该RESTful资源路径可以创建自定义类型的资源。
因此,可以理解的是,VirtualService资源对象的配置可以由CRD资源对象定义,其中可以定义容器控制器信息、负载均衡配置信息和路由配置信息等。
需要说明的是,术语“容器控制器信息”可以包括容器控制器名和容器控制器所属的命名空间,容器控制器可以包括Kubernetes中的Deployment、StatefulSet、DaemonSet、ReplicaSet,容器控制器可以用于控制容器的生命周期,实现对容器的升级、扩缩容等操作。负载均衡配置信息可以包括容器健康检查配置、会话保持配置、负载均衡策略配置、流量控制配置、虚拟服务配置、日志配置、指标收集配置等。路由配置信息可以包括路由类别、日志配置、指标收集配置等。
需要说明的是,术语“容器的地址信息”包括容器的IP地址和服务端口。
在下文中,将参考附图详细地描述根据本发明的各示例性实施例。
图1为按照本发明的一个实施例的动态发布容器服务的系统的框图。如图1中所示,动态发布容器服务的系统10包括容器地址获取模块110、负载均衡适配模块120、路由模块130和动态配置模块140。
容器地址获取模块110配置成动态获取Kubernetes集群中容器的地址信息。负载均衡适配模块120配置成根据获取的容器的地址信息在负载均衡设备上生成代理地址池;以及从虚拟服务地址池获取空闲的虚拟服务地址,以将空闲的虚拟服务地址配置到负载均衡设备的虚拟服务并与所述代理地址池关联,其中所述虚拟服务地址为客户端提供统一的访问地址。路由模块130配置成根据获取的容器的地址信息在负载均衡设备和容器之间建立通信连接,使得负载均衡设备将接收的客户端请求经由建立的通信连接转发到所述代理地址池的容器。动态配置模块140配置成检测VirtualService资源对象的配置并且对VirtualService资源对象的配置进行解析,以获取与所述VirtualService资源对象的配置相关联的容器控制器信息、负载均衡配置信息和路由配置信息。
通过在负载均衡设备和容器之间建立通信连接,使得负载均衡设备能够将接收的客户端请求直接转发到容器,从而显著提升了客户端请求的转发效率,并且使得负载均衡设备能够直接感知容器,从而针对容器能够有效地进行健康检查操作、负载均衡操作、会话保持操作和流量控制操作。
可选地,动态配置模块140进一步配置成调用容器地址获取模块110以基于容器控制器信息获取与容器控制器相关联的容器的地址信息。
可选地,动态配置模块140进一步配置成调用路由模块130以基于由路由配置信息指示的静态路由的方式或动态路由的方式在负载均衡设备和容器之间建立通信连接。
可选地,动态配置模块140进一步配置成调用负载均衡适配模块120以基于负载均衡配置信息来配置负载均衡设备执行容器健康检查操作、负载均衡操作、会话保持操作和流量控制操作中的一种或多种操作。
作为示例,容器健康检查操作包括但不限于:HTTP健康检查,用于使用指定的HTTP请求方法(例如,GET、HEAD、POST、PUT、PATCH方法)对容器服务进行健康检查,以根据HTTP请求的响应报文判断容器是否通过健康检查;TCP健康检查,用于检测容器是否监听指定的TCP端口;UDP健康检查,用于检测容器是否监听指定的UDP端口;ICMP健康检查,用于检测容器是否可以正常接收响应ICMP报文;以及SQL健康检查,用于检测数据库类型的容器是否可以正常执行指定的SQL语句。
作为示例,负载均衡操作可以通过以下负载均衡策略中的一个或多个的组合来实现:轮询策略,用于将客户端的请求按照轮询的方式依次分发给每个代理地址池中的容器;随机策略,用于将客户端的请求按照随机的方式分发给代理地址池中的容器;比率策略,用于将客户端的请求按照预定的比例分发给代理地址池中的容器;最小连接数策略,用于将客户端的请求分发给代理地址池中连接数最少的容器;以及最快响应时间策略,用于将客户端的请求分发给代理地址池中响应时间最快的容器。
作为示例,会话保持操作包括但不限于:源地址会话保持操作,用于将具有相同IP地址的客户端请求分发给代理地址池中的同一个容器;Cookie会话保持操作,用于将HTTP头部信息中携带相同Cookie的客户端请求分发给代理地址池中的同一个容器;以及Hash会话保持操作,用于将HTTP头部信息中的Hash值相同的客户端请求分发给代理地址池中的同一个容器。
作为示例,流量控制操作包括但不限于:限速,用于限制客户端每秒请求的速度,所述速度的单位可以是b/s、kb/s、mb/s、gb/s等;限制连接数,用于限制客户端和负载均衡设备之间建立的连接数;限流,用于限制客户端在指定时间范围内和负载均衡设备之间产生的流量,所述流量包括发送和接收的流量;超时时间限制,用于在超时时间大于预定时间阈值的情况下,负载均衡设备主动断开和客户端的连接,所述超时时间可以包括客户端和负载均衡设备之间建立连接的超时时间、客户端向负载均衡设备发送请求后等待响应的超时时间、负载均衡设备和代理地址池中容器建立连接的超时时间、以及负载均衡设备向代理地址池中容器发送请求后等待响应的超时时间;灰度发布,用于根据预定比例将客户端访问同一个虚拟服务的流量分发到新、旧两个版本的代理地址池中;熔断,用于当负载均衡设备上的某些指标超过预定阈值时触发熔断以暂时接收新的客户端请求,所述指标包括但不限于负载均衡设备建立的总连接数、负载均衡设备单位时间内新增的连接数、负载均衡设备单位时间内的流量值、负载均衡设备的CPU使用率、以及负载均衡设备的内存使用率;故障注入,用于根据预定故障注入策略对容器服务注入故障以测试应用程序的弹性,所述注入策略包括但不限于用于增加请求的响应时间的请求延时和直接向客户端发送异常响应码的HTTP abort故障策略;镜像,用于根据规则匹配将客户端请求的流量镜像到另一个代理地址池中。
可以理解的是,以上容器健康检查操作、负载均衡操作、会话保持操作和流量控制操作仅是示例性的。在不脱离本发明的精神和范围的情况下,可以使用以其他方式实现的容器健康检查操作、负载均衡操作、会话保持操作和流量控制操作。
通过上述负载均衡设备对容器进行的健康检查,确保了客户端的请求能够转发到正常工作的容器,以及通过上述负载均衡设备的负载均衡操作、会话保持操作和流量控制操作,有效解决了传统的容器服务发布时负载均衡策略有限、不支持流量控制等问题,从而增加了系统的应用场景。
可选地,容器地址获取模块110进一步配置成监听Kubernetes集群中容器的地址信息的变化;响应于容器的地址信息的变化来指示动态配置模块140调用负载均衡适配模块120来调整在负载均衡设备上生成的代理地址池;以及响应于容器的地址信息的变化来指示动态配置模块140调用路由模块130来调整在负载均衡设备和容器之间建立的通信连接。在一个实施例中,当容器的地址信息的变化为新增时,动态配置模块140调用负载均衡适配模块120以在负载均衡设备上生成的代理地址池内新增相应的容器的地址信息。在另一个实施例中,当容器的地址信息的变化为修改时,动态配置模块140调用负载均衡适配模块120以在负载均衡设备上生成的代理地址池内修改相应的容器的地址信息。在又一个实施例中,当容器的地址信息的变化为删除时,动态配置模块140调用负载均衡适配模块120以在负载均衡设备上生成的代理地址池内删除相应的容器的地址信息。
容器地址获取模块110通过动态获取容器的地址信息的变化并响应于所述容器的地址信息的变化来指示动态配置模块140调用负载均衡适配模块120动态地调整代理地址池,实现了动态的扩缩容。此外,容器地址获取模块110通过动态获取容器的地址信息的变化并响应于所述容器的地址信息的变化来指示动态配置模块140调用路由模块130来调整在负载均衡设备和容器之间建立的通信连接,保证了负载均衡设备和容器之间建立的通信连接的可用性。
可选地,路由模块130进一步配置成合并相邻子网的路由以减少负载均衡设备内的路由条目,以及定时检测负载均衡设备和容器之间建立的通信连接的可用性,从而保证客户端请求经由建立的通信连接转发到容器,并且保证负载均衡设备能够直接感知容器,从而针对容器能够进行相应的健康检查和流量管理。
根据本发明提出的动态发布容器服务的系统能够根据Kuberenetes集群内容器的地址信息的变化动态更新负载均衡配置,并且在负载均衡设备和容器之间建立通信连接,使得负载均衡设备可以直接将接收的客户端请求经由建立的通信连接转发到代理地址池的容器,显著提升了客户端请求的转发效率。此外,根据本发明提出的动态发布容器服务的系统实现了容器健康检查操作、负载均衡操作、会话保持操作和流量控制操作,改进了客户端请求的转发策略和流量管理。
以下将结合图2-5对容器地址获取模块110、负载均衡适配模块120、路由模块130和动态配置模块140进行详细描述,以便提供对本发明的透彻理解。
图2为按照本发明的一个实施例的动态发布容器服务的系统的容器地址获取模块的框图。如图2中所示,容器地址获取模块110包括接口适配单元1101、容器信息查询单元1102、容器信息缓存单元1103、容器事件监听单元1104、缓存同步单元1105、日志记录单元1106和指标收集单元1107。
接口适配单元1101配置成适配不同Kubernetes版本的API接口。可选地,API接口可以包括容器信息查询接口和容器事件监听接口。
容器信息查询单元1102配置成根据与VirtualService资源对象的配置相关联的容器控制器信息,获取与容器控制器相关联的容器的地址信息。
容器信息缓存单元1103配置成将经由容器信息查询单元1102获取的容器的地址信息缓存到内存中,以便减少请求API Server的次数,降低API Server的负载压力,同时缩短动态配置模块140请求容器地址获取模块110查询容器的地址信息的响应时间。
容器事件监听单元1104配置成与API Server建立HTTP长连接,以便采用事件监听机制接收Kubernetes推送的容器事件通知,其指示Kubernetes集群中容器的地址信息的变化。
缓存同步单元1105配置成根据预定的同步周期定期从API Server获取与容器控制器相关联的容器的地址信息并将其同步到本地缓存,从而保持本地缓存和etcd中容器的地址信息的一致性。
日志记录单元1106配置成记录容器地址获取模块110的各个单元的日志信息,以方便后续的分析诊断和审计。可选地,日志可以根据各个单元进行分类存储,并且可以根据预定周期滚动切割,以便按照预定周期划分日志。
指标收集单元1107配置成收集容器地址获取模块110的各个单元的指标信息,以便用于实现数据展示和告警等功能。指标信息包括但不限于容器的地址信息、容器地址获取模块110的各个单元的负载情况、容器地址获取模块110的请求响应成功率等。
图3为按照本发明的一个实施例的动态发布容器服务的系统的负载均衡适配模块的框图。如图3中所示,负载均衡适配模块120包括接口适配单元1201、代理地址池配置单元1202、健康检查单元1203、虚拟服务配置单元1204、流量控制单元1205、会话保持单元1206、负载均衡策略单元1207、配置检查单元1208、配置下发单元1209、日志记录单元1210和指标收集单元1211。
接口适配单元1201配置成适配各种负载均衡设备厂商,包括但不限于F5、Nginx、Envoy、Traefik等。接口适配单元1201将负载均衡配置和底层的真实负载均衡设备进行解耦,以便对不同厂商的负载均衡设备使用相同的负载均衡配置,而无需关注底层的具体实现方式。
代理地址池配置单元1202配置成根据获取的容器的地址信息生成相应负载均衡设备的代理地址池配置。
健康检查单元1203配置成根据与VirtualService资源对象的配置相关联的负载均衡配置信息来针对代理地址池内的容器生成相应的健康检查配置,其用于配置负载均衡设备,使得所述负载均衡设备对代理地址池内的容器执行健康检查操作,以确保负载均衡设备将客户端请求转发给正常工作的容器。健康检查操作在上文中已经详细描述,在此不再赘述。
虚拟服务配置单元1204配置成从虚拟服务地址池获取空闲的虚拟服务地址,以将所述空闲的虚拟服务地址配置到负载均衡设备的虚拟服务并与代理地址池关联,其中所述虚拟服务地址为客户端提供统一的访问地址。
流量控制单元1205配置成根据与VirtualService资源对象的配置相关联的负载均衡配置信息来生成负载均衡流量控制配置,其用于配置负载均衡设备,使得所述负载均衡设备执行流量控制操作。流量控制操作在上文中已经详细描述,在此不再赘述。
会话保持单元1206配置成根据与VirtualService资源对象的配置相关联的负载均衡配置信息来生成负载均衡会话保持配置,其用于配置负载均衡设备,使得所述负载均衡设备执行会话保持操作,以确保将条件相同的客户端请求分发给代理地址池中的同一个容器。会话保持操作在上文中已经详细描述,在此不再赘述。
负载均衡策略单元1207配置成根据与VirtualService资源对象的配置相关联的负载均衡配置信息来生成负载均衡策略配置,其用于配置负载均衡设备,使得所述负载均衡设备执行负载均衡操作。负载均衡操作在上文中已经详细描述,在此不再赘述。
可以理解的是,会话保持单元1206和负载均衡策略单元1207共同确定将客户端请求分发给均衡代理地址池中的合适的容器。
配置检查单元1208配置成对代理地址池配置单元1202、健康检查单元1203、虚拟服务配置单元1204、流量控制单元1205、会话保持单元1206、负载均衡策略单元1207生成的配置进行检查,以确保配置的合规性和安全性。可以理解的是,所述合规性包括但不限于配置语法是否正确、配置是否重复冗余等,所述安全性包括但不限于配置是否会和原有配置发生冲突、配置是否存在导致系统产生异常的安全隐患等。
配置下发单元1209配置成向负载均衡设备下发配置,并检查向负载均衡设备下发的配置和与VirtualService资源对象的配置相关联的负载均衡配置信息中期望的配置是否一致。
日志记录单元1210配置成记录负载均衡适配模块120的各个单元的日志信息,以方便后续的分析诊断和审计。可选地,日志可以根据各个单元进行分类存储,并且可以根据预定周期滚动切割,以便按照预定周期划分日志。
指标收集单元1211配置成收集负载均衡适配模块120的各个单元的指标信息,以便用于实现数据展示和告警等功能。
图4为按照本发明的一个实施例的动态发布容器服务的系统的路由模块的框图。如图4中所示,路由模块130包括路由分析单元1301、静态路由单元1302、动态路由单元1303、路由合并单元1304、配置检查单元1305、路由配置单元1306、路由验证单元1307、日志记录单元1308和指标收集单元1309。
路由分析单元1301配置成根据获取的容器的地址信息和与容器对应的宿主机信息分析路由的下一跳IP地址和出接口信息。
静态路由单元1302配置成当确定通过静态路由的方式在负载均衡设备和Kubernetes集群内容器之间建立通信连接时,在负载均衡设备上生成指向该容器有关宿主机的静态路由。
动态路由单元1303配置成当确定通过动态路由的方式在负载均衡设备和Kubernetes集群内容器之间建立通信连接时,在负载均衡设备和Kubernetes物理节点之间建立BGP邻居,使得容器宿主机将容器的地址信息宣告进BGP网络,以便负载均衡设备可以通过动态路由的方式生成到该容器的路由。
路由合并单元1304配置成合并静态路由和动态路由相邻子网的路由,以减少负载均衡设备内的路由条目。
配置检查单元1305配置成检查生成的路由配置的合规性和安全性。可以理解的是,所述合规性包括但不限于配置语法是否正确、配置是否重复冗余等,所述安全性包括但不限于配置是否会和原有配置发生冲突、配置是否存在导致系统产生异常的安全隐患等。
路由配置单元1306配置成在负载均衡设备和Kubernetes节点上下发所需的静态路由配置或动态路由配置。
路由验证单元1307配置成定时检测负载均衡设备和容器之间建立的通信连接的可用性。
日志记录单元1308配置成记录路由模块130的各个单元的日志信息,以方便后续的分析诊断和审计。可选地,日志可以根据各个单元进行分类存储,并且可以根据预定周期滚动切割,以便按照预定周期划分日志。
指标收集单元1309配置成收集路由模块130的各个单元的指标信息,以便用于实现数据展示和告警等功能。
图5为按照本发明的一个实施例的动态发布容器服务的系统的动态配置模块的框图。如图5中所示,动态配置模块140包括配置解析单元1401、调用单元1402、事务单元1403、日志记录单元1404和指标收集单元1405。
配置解析单元1401配置成检测VirtualService资源对象的配置并且对所述VirtualService资源对象的配置进行解析,以获取与所述VirtualService资源对象的配置相关联的容器控制器信息、负载均衡配置信息和路由配置信息。
调用单元1402配置成:调用容器地址获取模块110,使得容器地址获取模块110基于容器控制器信息获取与容器控制器相关联的容器的地址信息;调用负载均衡适配模块120,使得负载均衡适配模块120基于负载均衡配置信息来配置负载均衡设备执行容器健康检查操作、负载均衡操作、会话保持操作和流量控制操作中的一种或多种操作;以及调用路由模块130,使得路由模块130基于由路由配置信息指示的静态路由的方式或动态路由的方式在负载均衡设备和容器之间建立通信连接。
事务单元1403配置成使得负载均衡适配模块120和路由模块130针对一次容器服务发布的动作结果保持一致。
日志记录单元1404配置成记录动态配置模块140的各个单元的日志信息,以方便后续的分析诊断和审计。可选地,日志可以根据各个单元进行分类存储,并且可以根据预定周期滚动切割,以便按照预定周期划分日志。
指标收集单元1405配置成收集动态配置模块140的各个单元的指标信息,以便用于实现数据展示和告警等功能。
图6为按照本发明的一个实施例的动态发布容器服务的方法的流程图。如图6中所示,动态发布容器服务的方法包括容器地址获取步骤610、负载均衡适配步骤620和路由步骤630。
在容器地址获取步骤610中,动态获取Kubernetes集群中容器的地址信息。在负载均衡适配步骤620中,根据获取的容器的地址信息在负载均衡设备上生成代理地址池;以及从虚拟服务地址池获取空闲的虚拟服务地址,以将空闲的虚拟服务地址配置到负载均衡设备的虚拟服务并与所述代理地址池关联,其中所述虚拟服务地址为客户端提供统一的访问地址。在路由步骤630中,根据获取的容器的地址信息在负载均衡设备和容器之间建立通信连接,使得负载均衡设备将接收的客户端请求经由建立的通信连接转发到所述代理地址池的容器。
可选地,动态发布容器服务的方法可以包括动态配置步骤(图6中未示出),其用于检测VirtualService资源对象的配置并且对VirtualService资源对象的配置进行解析,以获取与所述VirtualService资源对象的配置相关联的容器控制器信息、负载均衡配置信息和路由配置信息。
通过在负载均衡设备和容器之间建立通信连接,使得负载均衡设备能够将接收的客户端请求直接转发到容器,从而显著提升了客户端请求的转发效率,并且使得负载均衡设备能够直接感知容器,从而针对容器能够有效地进行健康检查操作、负载均衡操作、会话保持操作和流量控制操作。
可选地,动态配置步骤进一步包括调用容器地址获取步骤610以基于容器控制器信息获取与容器控制器相关联的容器的地址信息。
可选地,动态配置步骤进一步包括调用路由步骤630以基于由路由配置信息指示的静态路由的方式或动态路由的方式在负载均衡设备和容器之间建立通信连接。
可选地,动态配置步骤进一步包括调用负载均衡适配步骤620以基于负载均衡配置信息来配置负载均衡设备执行容器健康检查操作、负载均衡操作、会话保持操作和流量控制操作中的一种或多种操作。
容器健康检查操作、负载均衡操作、会话保持操作和流量控制操作在上文中已经描述,在此不再赘述。
通过上述负载均衡设备对容器进行的健康检查,确保了客户端的请求能够转发到正常工作的容器,以及通过上述负载均衡设备的负载均衡操作、会话保持操作和流量控制操作,有效解决了传统的容器服务发布时负载均衡策略有限、不支持流量控制等问题,从而增加了系统的应用场景。
可选地,容器地址获取步骤610进一步包括监听Kubernetes集群中容器的地址信息的变化;响应于容器的地址信息的变化来经由动态配置步骤调用负载均衡适配步骤620,以调整在负载均衡设备上生成的代理地址池;以及响应于容器的地址信息的变化来经由动态配置步骤调用路由步骤630,以调整在负载均衡设备和容器之间建立的通信连接。在一个实施例中,当容器的地址信息的变化为新增时,经由动态配置步骤调用负载均衡适配步骤620以在负载均衡设备上生成的代理地址池内新增相应的容器的地址信息。在另一个实施例中,当容器的地址信息的变化为修改时,经由动态配置步骤调用负载均衡适配步骤620以在负载均衡设备上生成的代理地址池内修改相应的容器的地址信息。在又一个实施例中,当容器的地址信息的变化为删除时,经由动态配置步骤调用负载均衡适配步骤620以在负载均衡设备上生成的代理地址池内删除相应的容器的地址信息。
容器地址获取步骤610通过动态获取容器的地址信息的变化并响应于所述容器的地址信息的变化来经由动态配置步骤调用负载均衡适配步骤620以动态地调整代理地址池,实现了动态的扩缩容。此外,容器地址获取步骤610通过动态获取容器的地址信息的变化并响应于所述容器的地址信息的变化来经由动态配置步骤调用路由步骤630以调整在负载均衡设备和容器之间建立的通信连接,保证了负载均衡设备和容器之间建立的通信连接的可用性。
可选地,路由步骤630进一步包括合并相邻子网的路由以减少负载均衡设备内的路由条目,以及定时检测负载均衡设备和容器之间建立的通信连接的可用性,从而保证客户端请求经由所述建立的通信连接转发到容器,并且保证负载均衡设备能够直接感知容器,从而针对容器能够进行相应的健康检查和流量管理。
根据本发明提出的动态发布容器服务的方法,能够根据Kubernetes集群内容器的地址信息的变化动态更新负载均衡配置,并且在负载均衡设备和容器之间建立通信连接,使得负载均衡设备可以直接将接收的客户端请求经由建立的通信连接转发到代理地址池的容器,显著提升了客户端请求的转发效率。此外,根据本发明提出的动态发布容器服务的方法实现了容器健康检查操作、负载均衡操作、会话保持操作和流量控制操作,改进了客户端请求的转发策略和流量管理。
以下将结合图7-10对容器地址获取模块、负载均衡适配模块、路由模块和动态配置模块的工作流程进行详细说明,以便提供对本发明的透彻理解。
图7为按照本发明的一个实施例的动态发布容器服务的系统的容器地址获取模块的工作流程图。
在步骤710中,启动日志记录单元1106,以记录容器地址获取模块110的各个单元的日志信息,以方便后续的分析诊断和审计。可选地,日志可以根据各个单元进行分类存储,并且可以根据预定周期滚动切割,以便按照预定周期划分日志。可选地,可以设置日志记录的日志等级,例如Debug、Info、Notice、Warning、Error、Critical、Alert、Emergency。
在步骤720中,启动指标收集单元1107,以收集容器地址获取模块110的各个单元的指标信息,以便用于实现数据展示和告警等功能。容器地址获取模块110的各个单元的指标信息包括但不限于容器的地址信息、容器地址获取模块110的各个单元的负载情况、容器地址获取模块110的请求响应成功率等。
在步骤730中,容器信息查询单元1102请求API Server,以根据与VirtualService资源对象的配置相关联的容器控制器信息,获取与容器控制器相关联的容器的地址信息。
在步骤740中,启动容器信息缓存单元1103,以将经由容器信息查询单元1102获取的容器的地址信息缓存到内存中,以便减少请求API Server的次数,降低API Server的负载压力,同时缩短动态配置模块140请求容器地址获取模块110查询容器的地址信息的响应时间。
在步骤750中,启动容器事件监听单元1104,以与API Server建立HTTP长连接,以便采用事件监听机制接收Kubernetes推送的容器事件通知,其指示Kubernetes集群中容器的地址信息的变化。在一个实施例中,当容器的地址信息的变化为新增时,动态配置模块140调用负载均衡适配模块120以在负载均衡设备上生成的代理地址池内新增相应的容器的地址信息。在另一个实施例中,当容器的地址信息的变化为修改时,动态配置模块140调用负载均衡适配模块120以在负载均衡设备上生成的代理地址池内修改相应的容器的地址信息。在又一个实施例中,当容器的地址信息的变化为删除时,动态配置模块140调用负载均衡适配模块120以在负载均衡设备上生成的代理地址池内删除相应的容器的地址信息。
在步骤760中,启动缓存同步单元1105,以根据指定的同步周期定期从API Server获取与容器控制器相关联的容器的地址信息并将其同步到本地缓存,从而保持本地缓存和etcd中容器的地址信息的一致性。
图8为按照本发明的一个实施例的动态发布容器服务的系统的负载均衡适配模块的工作流程图。
在步骤810中,启动日志记录单元1210,以记录负载均衡适配模块120的各个单元的日志信息,以方便后续的分析诊断和审计。可选地,日志可以根据各个单元进行分类存储,并且可以根据预定周期滚动切割,以便按照预定周期划分日志。可选地,可以设置日志记录的日志等级,例如Debug、Info、Notice、Warning、Error、Critical、Alert、Emergency。
在步骤820中,启动指标收集单元1211,以收集负载均衡适配模块120的各个单元的指标信息,以便用于实现数据展示和告警等功能。负载均衡适配模块120的各个单元的指标信息包括但不限于负载均衡代理地址池信息、负载均衡虚拟服务信息、负载均衡资源使用率等。
在步骤830中,根据获取的容器的地址信息在负载均衡设备上生成代理地址池配置。
在步骤840中,从虚拟服务地址池获取空闲的虚拟服务地址,以生成负载均衡虚拟服务配置。
在步骤850中,根据与VirtualService资源对象的配置相关联的负载均衡配置信息来生成负载均衡流量控制配置,其用于配置负载均衡设备,使得所述负载均衡设备执行流量控制操作。流量控制操作在上文中已经详细描述,在此不再赘述。
在步骤860中,根据与VirtualService资源对象的配置相关联的负载均衡配置信息来针对代理地址池内的容器生成相应的健康检查配置,其用于配置负载均衡设备,使得所述负载均衡设备对代理地址池内的容器执行健康检查操作,以确保负载均衡设备将客户端请求转发给正常工作的容器。健康检查操作在上文中已经详细描述,在此不再赘述。
在步骤870中,根据与VirtualService资源对象的配置相关联的负载均衡配置信息来生成负载均衡会话保持配置,其用于配置负载均衡设备,使得所述负载均衡设备执行会话保持操作,以确保将条件相同的客户端请求分发给负载均衡代理地址池中的同一个容器。会话保持操作在上文中已经详细描述,在此不再赘述。
在步骤880中,根据与VirtualService资源对象的配置相关联的负载均衡配置信息来生成负载均衡策略配置,其用于配置负载均衡设备,使得所述负载均衡设备执行负载均衡操作。负载均衡操作在上文中已经详细描述,在此不再赘述。
在步骤890中,检查负载均衡虚拟服务配置、流量控制配置、健康检查配置、会话保持配置、负载均衡策略配置的合规性和安全性。可以理解的是,所述合规性包括但不限于配置语法是否正确、配置是否重复冗余等,所述安全性包括但不限于配置是否会和原有配置发生冲突、配置是否存在导致系统产生异常的安全隐患等。
在步骤8100中,向负载均衡设备下发配置,并检查向负载均衡设备下发的配置和与VirtualService资源对象的配置相关联的负载均衡配置信息中期望的配置是否一致。
图9为按照本发明的一个实施例的动态发布容器服务的系统的路由模块的工作流程图。
在步骤910中,启动日志记录单元1308,以记录路由模块130的各个单元的日志信息,以方便后续的分析诊断和审计。可选地,日志可以根据各个单元进行分类存储,并且可以根据预定周期滚动切割,以便按照预定周期划分日志。可选地,可以设置日志记录的日志等级,例如Debug、Info、Notice、Warning、Error、Critical、Alert、Emergency。
在步骤920中,启动指标收集单元1309,以收集路由模块130的各个单元的指标信息,以便用于实现数据展示和告警等功能。路由模块130的各个单元的指标信息包括但不限于路由条目数、路由连通性、路由模块130中每个单元的负载情况等。
在步骤930中,根据获取的容器的地址信息和与容器对应的宿主机信息分析路由的下一跳IP地址和出接口信息。
在步骤940中,根据与VirtualService资源对象的配置相关联的路由配置信息判断使用静态路由的方式还是动态路由的方式来建立负载均衡设备和容器之间的通信连接。如果使用静态路由的方式,则进入步骤950;如果使用动态路由的方式,则进入步骤960。
在步骤950中,生成负载均衡设备的静态路由配置,静态路由目的地址为容器地址,下一跳为容器宿主机地址,出接口为负载均衡设备和容器宿主机地址相同网段的接口。
在步骤960中,判断负载均衡设备是否和容器宿主机建立BGP邻居,如果没有建立BGP邻居,则在负载均衡设备和容器宿主机上分别使用BIRD软件建立BGP邻居。确保负载均衡设备和容器宿主机之间建立BGP邻居后,在容器宿主机上将容器地址信息宣告进BGP网络,使得负载均衡设备可以通过动态路由的方式生成到该容器的路由。
在步骤970中,合并静态路由和动态路由相邻子网的路由,以减少负载均衡设备内的路由条目。
在步骤980中,检查生成的路由配置的合规性和安全性。可以理解的是,所述合规性包括但不限于配置语法是否正确、配置是否重复冗余等,所述安全性包括但不限于配置是否会和原有配置发生冲突、配置是否存在导致系统产生异常的安全隐患等。
在步骤990中,在负载均衡设备和Kubernetes节点上下发所需的静态路由配置或动态路由配置。
在步骤9100中,通过ICMP协议定时检测负载均衡设备和容器之间建立的通信连接的可用性。
图10为按照本发明的一个实施例的动态发布容器服务的系统的动态配置模块的工作流程图。
在步骤1010中,启动日志记录单元1404,以记录动态配置模块140的各个单元的日志信息,以方便后续的分析诊断和审计。可选地,日志可以根据各个单元进行分类存储,并且可以根据预定周期滚动切割,以便按照预定周期划分日志。可选地,可以设置日志记录的日志等级,例如Debug、Info、Notice、Warning、Error、Critical、Alert、Emergency。
在步骤1020中,启动指标收集单元1405,以收集动态配置模块140的各个单元的指标信息,以便用于实现数据展示和告警等功能。动态配置模块140的各个单元的指标信息包括但不限于VirtualService 资源对象信息、调用容器地址获取模块信息、调用负载均衡适配模块信息、调用路由模块信息、事务成功率等。
在步骤1030中,检测VirtualService资源对象的配置并且对所述VirtualService资源对象的配置进行解析,以获取与所述VirtualService资源对象的配置相关联的容器控制器信息、负载均衡配置信息和路由配置信息。
在步骤1040中,调用容器地址获取模块110,使得容器地址获取模块110基于容器控制器信息获取与容器控制器相关联的容器的地址信息。
在步骤1050中,在容器地址获取模块110中注册回调函数,当容器地址信息发生变化时,触发回调函数。
在步骤1060中,启动事务单元1403,保证负载均衡适配模块120和路由模块130针对一次容器服务发布的动作结果保持一致。
在步骤1070中,调用负载均衡适配模块120下发负载均衡配置。
在步骤1080中,调用路由模块130下发路由配置。
在步骤1090中,判断负载均衡适配模块120和路由模块130的配置是否成功。如果成功,则进入步骤10100以提交事务;如果负载均衡适配模块120和路由模块130中的任意一个的配置未成功,则进入步骤10110以回滚事务,从而删除负载均衡配置信息和路由配置信息。
图11为按照本发明的一个实施例的用于实现动态发布容器服务的方法的计算机设备的框图。如图11中所示,计算机设备1100包括存储器1110和处理器1120。虽然未图示,但是计算机设备1100还包括存储在存储器1110上并可在处理器1120上运行的计算机程序。处理器1120执行所述计算机程序时实现例如图6所示的按照本发明的一个方面的动态发布容器服务的方法的各个步骤。
另外,如上所述,本发明也可以被实施为一种计算机存储介质,在其中存储有用于使计算机执行按照本发明的一个方面的动态发布容器服务的方法的程序。
在此,作为计算机存储介质,能采用盘类(例如,磁盘、光盘等)、卡类(例如,存储卡、光卡等)、半导体存储器类(例如,ROM、非易失性存储器等)、带类(例如,磁带、盒式磁带等)等各种方式的计算机存储介质。
在可适用的情况下,可以使用硬件、软件或硬件和软件的组合来实现由本公开提供的各种实施例。而且,在可适用的情况下,在不脱离本公开的范围的情况下,本文中阐述的各种硬件部件和/或软件部件可以被组合成包括软件、硬件和/或两者的复合部件。在可适用的情况下,在不脱离本公开的范围的情况下,本文中阐述的各种硬件部件和/或软件部件可以被分成包括软件、硬件或两者的子部件。另外,在可适用的情况下,预期的是,软件部件可以被实现为硬件部件,以及反之亦然。
根据本公开的软件(诸如程序代码和/或数据)可以被存储在一个或多个计算机存储介质上。还预期的是,可以使用联网的和/或以其他方式的一个或多个通用或专用计算机和/或计算机系统来实现本文中标识的软件。在可适用的情况下,本文中描述的各个步骤的顺序可以被改变、被组合成复合步骤和/或被分成子步骤以提供本文中描述的特征。
提供本文中提出的实施例和示例,以便最好地说明按照本发明及其特定应用的实施例,并且由此使本领域的技术人员能够实施和使用本发明。但是,本领域的技术人员将会知道,仅为了便于说明和举例而提供以上描述和示例。所提出的描述不是意在涵盖本发明的各个方面或者将本发明局限于所公开的精确形式。
Claims (18)
1.一种动态发布容器服务的系统,其特征在于,所述系统包括:
容器地址获取模块,其配置成动态获取Kubernetes集群中容器的地址信息;
负载均衡适配模块,其配置成:
根据所述获取的容器的地址信息在负载均衡设备上生成代理地址池;以及
从虚拟服务地址池获取空闲的虚拟服务地址,以将所述空闲的虚拟服务地址配置到所述负载均衡设备的虚拟服务并与所述代理地址池关联,其中所述虚拟服务地址为客户端提供统一的访问地址;和
路由模块,其配置成根据所述获取的容器的地址信息在所述负载均衡设备和所述容器之间建立通信连接,使得所述负载均衡设备将接收的客户端请求经由所述通信连接转发到所述代理地址池的容器。
2.根据权利要求1所述的动态发布容器服务的系统,其中所述系统进一步包括:
动态配置模块,其配置成检测VirtualService资源对象的配置并且对所述VirtualService资源对象的配置进行解析,以获取与所述VirtualService资源对象的配置相关联的容器控制器信息、负载均衡配置信息和路由配置信息。
3.根据权利要求2所述的动态发布容器服务的系统,其中所述动态配置模块进一步配置成:
调用所述容器地址获取模块,使得所述容器地址获取模块基于所述容器控制器信息获取与容器控制器相关联的容器的地址信息。
4.根据权利要求2所述的动态发布容器服务的系统,其中所述动态配置模块进一步配置成:
调用所述路由模块,使得所述路由模块基于由所述路由配置信息指示的静态路由的方式或动态路由的方式在所述负载均衡设备和所述容器之间建立通信连接。
5.根据权利要求2所述的动态发布容器服务的系统,其中所述容器地址获取模块进一步配置成:
监听所述Kubernetes集群中所述容器的地址信息的变化;
响应于所述容器的地址信息的变化来指示所述动态配置模块调用所述负载均衡适配模块,使得所述负载均衡适配模块调整在所述负载均衡设备上生成的代理地址池;以及
响应于所述容器的地址信息的变化来指示所述动态配置模块调用所述路由模块,使得所述路由模块调整在所述负载均衡设备和所述容器之间建立的通信连接。
6.根据权利要求5所述的动态发布容器服务的系统,其中所述容器地址获取模块进一步配置成响应于所述容器的地址信息的变化来指示所述动态配置模块执行以下步骤:
当所述容器的地址信息的变化为新增时调用所述负载均衡适配模块,使得所述负载均衡适配模块在所述负载均衡设备上生成的代理地址池内新增相应的容器的地址信息;
当所述容器的地址信息的变化为修改时调用所述负载均衡适配模块,使得所述负载均衡适配模块在所述负载均衡设备上生成的代理地址池内修改相应的容器的地址信息;以及
当所述容器的地址信息的变化为删除时调用所述负载均衡适配模块,使得所述负载均衡适配模块在所述负载均衡设备上生成的代理地址池内删除相应的容器的地址信息。
7.根据权利要求2所述的动态发布容器服务的系统,其中所述动态配置模块进一步配置成:
调用所述负载均衡适配模块,使得所述负载均衡适配模块基于所述负载均衡配置信息来配置所述负载均衡设备执行容器健康检查操作、负载均衡操作、会话保持操作和流量控制操作中的一种或多种操作。
8.根据权利要求1所述的动态发布容器服务的系统,其中所述路由模块进一步配置成:
合并相邻子网的路由以减少所述负载均衡设备内的路由条目;以及
定时检测所述负载均衡设备和所述容器之间建立的通信连接的可用性。
9.一种动态发布容器服务的方法,其特征在于,包括以下步骤:
容器地址获取步骤,其用于动态获取Kubernetes集群中容器的地址信息;
负载均衡适配步骤,其用于:
根据所述获取的容器的地址信息在负载均衡设备上生成代理地址池;以及
从虚拟服务地址池获取空闲的虚拟服务地址,以将所述空闲的虚拟服务地址配置到所述负载均衡设备的虚拟服务并与所述代理地址池关联,其中所述虚拟服务地址为客户端提供统一的访问地址;和
路由步骤,其用于根据所述获取的容器的地址信息在所述负载均衡设备和所述容器之间建立通信连接,使得所述负载均衡设备将接收的客户端请求经由所述通信连接转发到所述代理地址池的容器。
10.根据权利要求9所述的动态发布容器服务的方法,其中所述方法进一步包括:
动态配置步骤,其用于检测VirtualService资源对象的配置并且对所述VirtualService资源对象的配置进行解析,以获取与所述VirtualService资源对象的配置相关联的容器控制器信息、负载均衡配置信息和路由配置信息。
11.根据权利要求10所述的动态发布容器服务的方法,其中所述动态配置步骤进一步包括:
调用所述容器地址获取步骤以基于所述容器控制器信息获取与容器控制器相关联的容器的地址信息。
12.根据权利要求10所述的动态发布容器服务的方法,其中所述动态配置步骤进一步包括:
调用所述路由步骤以基于由所述路由配置信息指示的静态路由的方式或动态路由的方式在所述负载均衡设备和所述容器之间建立通信连接。
13.根据权利要求10所述的动态发布容器服务的方法,其中所述容器地址获取步骤进一步包括:
监听所述Kubernetes集群中所述容器的地址信息的变化;
响应于所述容器的地址信息的变化来经由所述动态配置步骤调用所述负载均衡适配步骤,以调整在所述负载均衡设备上生成的代理地址池;以及
响应于所述容器的地址信息的变化来经由所述动态配置步骤调用所述路由步骤,以调整在所述负载均衡设备和所述容器之间建立的通信连接。
14.根据权利要求13所述的动态发布容器服务的方法,其中响应于所述容器的地址信息的变化来经由所述动态配置步骤调用所述负载均衡适配步骤进一步包括:
当所述容器的地址信息的变化为新增时,调用所述负载均衡适配步骤以在所述负载均衡设备上生成的代理地址池内新增相应的容器的地址信息;
当所述容器的地址信息的变化为修改时,调用所述负载均衡适配步骤以在所述负载均衡设备上生成的代理地址池内修改相应的容器的地址信息;以及
当所述容器的地址信息的变化为删除时,调用所述负载均衡适配步骤以在所述负载均衡设备上生成的代理地址池内删除相应的容器的地址信息。
15.根据权利要求10所述的动态发布容器服务的方法,其中所述动态配置步骤进一步包括:
调用所述负载均衡适配步骤以基于所述负载均衡配置信息来配置所述负载均衡设备执行容器健康检查操作、负载均衡操作、会话保持操作和流量控制操作中的一种或多种操作。
16.根据权利要求9所述的动态发布容器服务的方法,其中所述路由步骤进一步包括:
合并相邻子网的路由以减少所述负载均衡设备内的路由条目;以及
定时检测所述负载均衡设备和所述容器之间建立的通信连接的可用性。
17.一种计算机存储介质,其特征在于,所述计算机存储介质包括指令,所述指令在运行时执行权利要求9至16中任一项所述的方法。
18.一种计算机设备,包括存储器、处理器及存储在所述存储器上并在所述处理器上运行的计算机程序,其特征在于,所述处理器执行所述计算机程序时实现权利要求9至16中任一项所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202111114108.XA CN113835836B (zh) | 2021-09-23 | 2021-09-23 | 动态发布容器服务的系统、方法、计算机设备及介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202111114108.XA CN113835836B (zh) | 2021-09-23 | 2021-09-23 | 动态发布容器服务的系统、方法、计算机设备及介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN113835836A CN113835836A (zh) | 2021-12-24 |
CN113835836B true CN113835836B (zh) | 2024-01-30 |
Family
ID=78969243
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202111114108.XA Active CN113835836B (zh) | 2021-09-23 | 2021-09-23 | 动态发布容器服务的系统、方法、计算机设备及介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN113835836B (zh) |
Families Citing this family (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN114938375B (zh) * | 2022-05-16 | 2023-06-02 | 聚好看科技股份有限公司 | 一种容器组更新设备及容器组更新方法 |
CN114866442B (zh) * | 2022-05-31 | 2023-05-26 | 杭州迪普科技股份有限公司 | 基于8583协议跨虚拟服务会话保持的测试方法及装置 |
CN115391215B (zh) * | 2022-08-31 | 2023-11-17 | 江苏安超云软件有限公司 | 微服务架构下全链路调试的方法及应用 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110289983A (zh) * | 2019-05-17 | 2019-09-27 | 平安科技(深圳)有限公司 | 负载均衡应用创建方法、装置、计算机设备及存储介质 |
CN110427194A (zh) * | 2019-06-18 | 2019-11-08 | 平安科技(深圳)有限公司 | 容器应用删除方法、装置、计算机设备及存储介质 |
CN112130965A (zh) * | 2020-10-26 | 2020-12-25 | 腾讯科技(深圳)有限公司 | 部署分布式容器编排管理集群的方法、设备及存储介质 |
CN112437136A (zh) * | 2020-11-12 | 2021-03-02 | 浪潮云信息技术股份公司 | 一种实现云原生负载均衡服务的方法及系统 |
Family Cites Families (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20160212012A1 (en) * | 2013-08-30 | 2016-07-21 | Clearpath Networks, Inc. | System and method of network functions virtualization of network services within and across clouds |
US20150281947A1 (en) * | 2014-03-26 | 2015-10-01 | Qualcomm Incorporated | Method and apparatus for fast ip address assignment |
-
2021
- 2021-09-23 CN CN202111114108.XA patent/CN113835836B/zh active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110289983A (zh) * | 2019-05-17 | 2019-09-27 | 平安科技(深圳)有限公司 | 负载均衡应用创建方法、装置、计算机设备及存储介质 |
CN110427194A (zh) * | 2019-06-18 | 2019-11-08 | 平安科技(深圳)有限公司 | 容器应用删除方法、装置、计算机设备及存储介质 |
CN112130965A (zh) * | 2020-10-26 | 2020-12-25 | 腾讯科技(深圳)有限公司 | 部署分布式容器编排管理集群的方法、设备及存储介质 |
CN112437136A (zh) * | 2020-11-12 | 2021-03-02 | 浪潮云信息技术股份公司 | 一种实现云原生负载均衡服务的方法及系统 |
Non-Patent Citations (1)
Title |
---|
在私有Kubernetes集群中实现服务的负载均衡;李翔;;电子技术与软件工程(第14期);全文 * |
Also Published As
Publication number | Publication date |
---|---|
CN113835836A (zh) | 2021-12-24 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN113835836B (zh) | 动态发布容器服务的系统、方法、计算机设备及介质 | |
US10095864B2 (en) | System and method for performing event inquiries in a network | |
US10931774B2 (en) | Discovery and service mapping of application programming interface proxies | |
US8892737B2 (en) | Network sniffer for performing service level management | |
US20230096032A1 (en) | Hybrid Approach To Data Governance | |
CN112534432A (zh) | 不熟悉威胁场景的实时缓解 | |
US10848839B2 (en) | Out-of-band telemetry data collection | |
CN111371623B (zh) | 业务性能和安全的监测方法、装置、存储介质及电子设备 | |
KR20130126251A (ko) | 웹 서비스 모니터링 시스템 및 방법 | |
CN112364110A (zh) | 元数据管理方法、装置、设备及计算机存储介质 | |
US20150350341A1 (en) | Application gateway for cloud computing systems | |
US20140337471A1 (en) | Migration assist system and migration assist method | |
WO2022042007A1 (zh) | 一种定位微服务熔断异常的方法、系统、设备及介质 | |
US20230164148A1 (en) | Enhanced cloud infrastructure security through runtime visibility into deployed software | |
WO2019019457A1 (zh) | 控制中心装置、业务系统处理的方法、系统及存储介质 | |
CA3138764A1 (en) | Data processing method, device, computer equipment and storage medium | |
US9935867B2 (en) | Diagnostic service for devices that employ a device agent | |
US10180914B2 (en) | Dynamic domain name service caching | |
CN109189652A (zh) | 一种封闭网络终端行为数据的采集方法及系统 | |
US20230229788A1 (en) | Agent-based vulnerability management | |
WO2021097713A1 (zh) | 分布式安全检测系统、方法、设备及存储介质 | |
CN113778709B (zh) | 接口调用方法、装置、服务器及存储介质 | |
CN108270718A (zh) | 一种基于Hadoop集群的控制方法和系统 | |
CN112242027B (zh) | 快递柜故障处理方法和装置、故障处理设备及存储介质 | |
US20240070002A1 (en) | Hang detection models and management for heterogenous applications in distributed environments |
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 |