CN114979104B - 一种实现无服务器的系统、方法、计算机设备及存储介质 - Google Patents

一种实现无服务器的系统、方法、计算机设备及存储介质 Download PDF

Info

Publication number
CN114979104B
CN114979104B CN202210593476.5A CN202210593476A CN114979104B CN 114979104 B CN114979104 B CN 114979104B CN 202210593476 A CN202210593476 A CN 202210593476A CN 114979104 B CN114979104 B CN 114979104B
Authority
CN
China
Prior art keywords
service
keda
zero
copies
creation request
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
Application number
CN202210593476.5A
Other languages
English (en)
Other versions
CN114979104A (zh
Inventor
张荣国
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Suzhou Inspur Intelligent Technology Co Ltd
Original Assignee
Suzhou Inspur Intelligent Technology Co Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Suzhou Inspur Intelligent Technology Co Ltd filed Critical Suzhou Inspur Intelligent Technology Co Ltd
Priority to CN202210593476.5A priority Critical patent/CN114979104B/zh
Publication of CN114979104A publication Critical patent/CN114979104A/zh
Application granted granted Critical
Publication of CN114979104B publication Critical patent/CN114979104B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/02Protocols based on web technology, e.g. hypertext transfer protocol [HTTP]
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L41/00Arrangements for maintenance, administration or management of data switching networks, e.g. of packet switching networks
    • H04L41/08Configuration management of networks or network elements
    • H04L41/0896Bandwidth or capacity management, i.e. automatically increasing or decreasing capacities
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/10Protocols in which an application is distributed across nodes in the network
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
    • Y02D10/00Energy efficient computing, e.g. low power processors, power management or thermal management

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Computer And Data Communications (AREA)
  • Data Exchanges In Wide-Area Networks (AREA)

Abstract

本发明公开了一种实现无服务器的系统、方法、计算机设备及存储介质,系统包括:Kubernetes,以及部署在Kubernetes上的Keda和Istio;Kubernetes配置为基于Kubernetes API服务接收用户的服务创建请求,并基于服务创建请求创建对应的服务和对象存储;Keda配置为响应于监测到有新创建的对象存储,创建缩放器,并从度量源拉取度量以将度量保存在所述缩放器;Keda还配置为基于度量将服务的副本数量从零扩容至第一阈值或从第一阈值缩容至零;Istio配置为基于服务的副本数量是否为零,对请求进行相应的发送处理。通过本发明的方案,实现了无服务器服务的部署和访问。

Description

一种实现无服务器的系统、方法、计算机设备及存储介质
技术领域
本发明涉及服务器技术领域,尤其涉及一种实现无服务器的系统、方法、计算机设备及存储介质。
背景技术
云原生技术,使组织能够在新式动态环境(如公有云、私有云和混合云)中构建和运行可缩放的应用程序。容器、服务网格、微服务、不可变基础结构和声明性API便是此方法的范例。除了云原生以外,很多公司或者机构还采用了另一种服务的编排和部署解决方案,即离线部署,顾名思义,离线的意思就是不将服务部署到云环境中,而是部署在用户自己的数据中心,采用Docker + Kubernetes的方式来实现服务的编排和部署,这种部署方式具备更大的灵活性和更强的安全性。
无服务器技术可使开发人员专注构建和运行服务,而无需管理服务器。服务仅在需要时启动。在有事件触发服务运行时,才会为这一服务分配资源。该服务执行结束后,便可以自动缩容至零。除了成本与效率上的优势外,无服务器也能将开发人员从服务扩展和服务器置备相关的琐碎日常任务中解放出来。
现有技术中,通常通过将KNative部署在Kubernetes实现无服务器技术。KNative是一个开源项目,通过在Kubernetes上部署KNative,用户就可以在Kubernetes中部署、运行和管理无服务器服务。借助KNative,用户可以将服务的代码打包为容器镜像并交给系统,以此来创建相应的服务。用户的服务仅在需要时才会运行,并由KNative来自动启动和停止。
KNative主要由以下3个组件构成:
构建:一种灵活地将源代码构建到容器中的方法;
服务:通过请求驱动模型实现容器的快速部署和自动扩展,以根据需要为工作负载提供服务;
事件:用于使用和发起事件以触发应用的基础架构。应用可能由多种源触发,例如HTTP请求、gRPC请求等。
作为由单一服务提供商控制的FaaS解决方案的替代选择,KNative可以在基于Kubernetes的任何云平台中运行,同时也能在基于Kubernetes的离线环境(本地数据中心)中运行,这让组织在运行无服务器服务时拥有了更大的敏捷性和灵活性。
虽然KNative具有诸多优点,但是它却有着设计过于复杂、不支持Kubernetes的一些声明配置的缺点。比如很多用户希望自己的容器能够具有privilege特权、或者能够mount一些主机目录,但是通过KNative创建的服务却不支持这些功能。
发明内容
有鉴于此,本发明提出了一种实现无服务器的系统、方法、计算机设备及存储介质,基于Keda、Istio、和Kubernetes,针对部署在Kubernetes上的服务,实现了无服务器方案,解决了KNative封闭性带来的问题,即KNative屏蔽了很多Kubernetes支持的特性,降低了用户创建服务时的权限和灵活性的问题。
基于上述目的,本发明实施例的一方面提供了一种实现无服务器的系统,系统具体包括:
Kubernetes,以及部署在所述Kubernetes上的Keda和Istio,其中,所述Kubernetes包括Kubernetes API 服务;
所述Kubernetes配置为基于所述Kubernetes API 服务接收用户的服务创建请求,并基于所述服务创建请求创建对应的服务和对象存储;
所述Keda配置为响应于监测到有新创建的对象存储,创建缩放器,并从度量源拉取度量以将所述度量保存在所述缩放器;
所述Keda还配置为基于所述度量将所述服务的副本数量从零扩容至第一阈值或从第一阈值缩容至零;
响应于服务的副本数量不为零,所述Istio配置为将所述服务创建请求发送到所述服务的副本;
响应于服务的副本数量为零,所述Istio配置为将所述服务创建请求发送给所述Keda,以使所述Keda对所述服务创建请求进行处理后发送到所述服务。
在一些实施方式中,所述Keda包括:Keda操作器和Keda激活器;
响应于所述服务的副本数量为零,所述Keda操作器配置为执行以下步骤:
从所述缩放器读取所述度量,并判断所述度量是否为零;
响应于所述度量不为零,将所述副本数量从零扩容至第一阈值;
修改服务对应的Istio的Virtual Service,以将所述创建服务请求指向所述服务。
在一些实施方式中,响应于所述服务的副本数量为零并且所述度量不为零,所述Istio配置为接收服务创建请求,并将所述服务创建请求发送给所述Keda激活器;
所述Keda激活器配置为为所述服务创建请求添加消息头,并将添加消息头的服务创建请求经由所述Istio发送到所述服务。
在一些实施方式中,响应于所述服务的副本数量从零扩容至第一阈值,所述Keda激活器配置为接收所述服务的副本对应于所述服务创建请求的响应,并将所述响应返回给用户。
在一些实施方式中,响应于所述服务的副本数量不为零,所述Keda操作器配置为执行以下步骤:
从所述缩放器读取所述度量,并判断所述度量是否为零;
响应于所述度量为零且持续第一预设时间均为零,修改服务对应的Istio的Virtual Service,以将所述创建服务请求指向所述Keda激活器;
将所述服务的副本数量从第一阈值缩容至零。
在一些实施方式中,所述Keda还包括Keda度量API服务;
所述Keda操作器配置为执行以下步骤:
监测是否有新创建的对象存储,并响应于有新创建的对象存储而创建对应的HPA和缩放器;
从度量源拉取度量;
将所述度量保存在所述缩放器,并将所述度量发送给所述Keda度量API服务;
所述Keda度量API服务配置为将所述度量发送给所述HPA。
在一些实施方式中,所述HPA配置为基于所述度量将所述服务的副本数量从第一阈值扩容至第二阈值或从第二阈值缩容至第一阈值。
本发明实施例的另一方面,还提供了一种实现无服务器的方法,包括:
在Kubernetes上部署Keda和Istio,其中,所述Kubernetes包括Kubernetes API服务;
所述Kubernetes基于所述Kubernetes API 服务接收用户的服务创建请求,并基于所述服务创建请求创建对应的服务和对象存储;
所述Keda响应于监测到有新创建的对象存储,创建缩放器,并从度量源拉取度量以将所述度量保存在所述缩放器;
所述Keda基于所述度量将所述服务的副本数量从零扩容至第一阈值或从第一阈值缩容至零;
响应于服务的副本数量不为零,所述Istio将所述服务创建请求发送到所述服务的副本;
响应于服务的副本数量为零,所述Istio将所述服务创建请求发送给所述Keda,以使所述Keda对所述服务创建请求进行处理后发送到所述服务。
本发明实施例的又一方面,还提供了一种计算机设备,包括:至少一个处理器;以及存储器,所述存储器存储有可在所述处理器上运行的计算机程序,所述计算机程序由所述处理器执行时实现如上方法的步骤。
本发明实施例的再一方面,还提供了一种计算机可读存储介质,计算机可读存储介质存储有被处理器执行时实现如上方法步骤的计算机程序。
本发明至少具有以下有益技术效果:本发明的方案基于Keda、Istio、和Kubernetes实现了在云环境或者离线环境实现无服务器服务的部署和访问;并且通过对Keda的内部组件进行改进,使其部署在Kubernetes后能够兼容部署在Kubernetes上的流量管理软件,例如Istio,同时还能够支持HTTP、HTTP2、HTTPS、gRPC等流量的缩容至零和从零恢复;并且,解决了KNative封闭性带来的问题,能够将Kubernetes支持的服务相关的各种声明式配置传递到Kubernetes之中,从而达到容器具有privilege特权、或者能够mount一些主机目录等目的。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的实施例。
图1为本发明提供的实现无服务器的系统的一实施例的示意图;
图2为本发明提供的基于如图1的系统实现无服务器的一实施例的流程框图;
图3为本发明提供的Keda的一实施例的结构示意图;
图4为本发明提供的服务的副本数量不为0时,Istio处理请求的一实施例的示意图;
图5为本发明提供的服务的副本数量从零扩容到第一阈值的一实施例的示意图;
图6为本发明提供的服务的副本数量从第一阈值缩容至零的一实施例的示意图;
图7为本发明提供的基于Keda实现无服务器的的一实施例的架构图;
图8为本发明提供的实现无服务器的方法的一实施例的框图;
图9为本发明提供的计算机设备的一实施例的结构示意图;
图10为本发明提供的计算机可读存储介质的一实施例的结构示意图。
具体实施方式
为使本发明的目的、技术方案和优点更加清楚明白,以下结合具体实施例,并参照附图,对本发明实施例进一步详细说明。
为了更好的理解本发明实施例,下面首先对本发明实施例的相关技术术语进行说明。
Kubernetes:Kubernetes是一个可移植的、可扩展的开源平台,用于管理容器化的工作负载和服务,可促进声明式配置和自动化。Kubernetes拥有一个庞大且快速增长的生态系统。Kubernetes的服务、支持和工具广泛可用。
Istio:一个开源的服务网格,可为分布式微服务架构提供所需的基础运行和管理要素。
KNative:一种云原生环境中的无服务器解决方案。
Keda:一个基于事件对Kubernetes服务的副本数进行横向扩缩容的开源软件。
服务:部署在Kubernetes集群中的应用,它可以有多个副本,并且对外提供HTTP、gRPC等访问方式。
副本:副本是可以在Kubernetes中创建和管理的、最小的可部署的计算单元。
Docker:一种容器化技术,可以使用户应用运行在一个容器之中。
Prometheus:一个开源监控系统。
HPA:Horizontal Pod Autoscaling,服务按照CPU、内存、请求量等指标进行横向扩缩容(副本数量的增加或者减少)。
度量:用于监控或者自动扩缩容。
TSDB:时序数据库。
Serverless:无服务器,即用户不需要关心服务器资源的问题,并且只有在特定事件发生时才会为服务分配资源并且运行服务的副本。
FaaS:FaaS是Functions as a Service的缩写,可以广义的理解为功能服务化,也可以解释为函数服务化。使用FaaS只需要关注业务代码逻辑,无需关注服务器资源。
需要说明的是,本发明实施例中所有使用“第一”和“第二”的表述均是为了区分两个相同名称非相同的实体或者非相同的参量,可见“第一”“第二”仅为了表述的方便,不应理解为对本发明实施例的限定,后续实施例对此不再一一说明。
基于上述目的,本发明实施例的第一个方面,提出了一种实现无服务器的系统的实施例。如图1所示,系统具体包括:
Kubernetes 10,以及部署在Kubernetes 10上的Keda 20和Istio 30,其中,Kubernetes包括Kubernetes API 服务,Kubernetes部署在服务器集群中,服务器集群由多个服务器硬件组成,每个服务器硬件均安装了操作系统,例如Linux。
Istio用于对Kubernetes集群进行流量管理。Keda用于基于事件对用户服务的副本数进行扩容和缩容。
上述系统的无服务器实现过程如图2所示,具体步骤如下:
S10、Kubernetes基于Kubernetes API 服务接收用户的服务创建请求,并基于服务创建请求创建对应的服务和对象存储。
S20、Keda监测Kubernetes中是否有新创建的对象存储,响应于监测到有新创建的对象存储而创建缩放器,并从度量源拉取度量以将度量保存在缩放器。
S30、Keda基于度量的值并结合服务的副本数量,可以将服务的副本数量从零扩容至第一阈值或从第一阈值缩容至零。
下面对每种可能的情况进行讨论。
一、度量的值为0,服务的副本数量为0:说明此时无服务请求,服务的副本数量保持为0不变,无需进行任何操作;
二、度量的值为0,服务的副本数量不为0:说明此时无服务请求,但存在服务副本,需对服务副本进行缩容,从副本数量M缩容至0;
三、度量的值不为0,服务的副本数量为0:说明此时有服务请求,但无服务副本,因此需对服务副本进行扩容,从0扩容至预设服务副本数量M;
四、度量的值不为0,服务的副本数量不为0:说明此时有服务请求,也有服务副本,无需进行任何操作。
Keda支持基于事件对Kubernetes服务的副本数进行横向扩容或缩容。但是存在以下两个问题:
一、Keda支持缩容至零或从零扩容的方式是采用一个额外的Keda HTTP插件,然而此插件与Istio等流量管理软件不兼容;如果云平台Kubernetes采用Istio等流量管理软件,那么就无法将Keda HTTP插件集成到Istio等流量管理软件中;
二、Keda HTTP插件仅支持根据HTTP流量进行缩容至零和从零恢复,不支持gRPC等流量。
基于此,本发明实施例对Keda进行了改进,如图3所示,Keda包括Keda操作器和Keda激活器。
Keda激活器为Keda新增组件:在服务的副本数量缩容至零时,如果有流量(服务)请求到服务时,会先经过Keda激活器,而Keda激活器会循环尝试将此请求发送给服务,然后在Keda操作器将服务从零恢复后,Keda激活器成功将请求发送给服务并且收到服务的响应,最后把响应返回给用户。
Keda操作器为Keda现有组件,对其功能进行了以下修改:
在Keda操作器将服务的副本数量缩容至零前,修改Istio的VirtualService(虚拟服务)对象,将用户发起的到服务的HTTP、HTTP2、HTTPS、gRPC请求指向Keda激活器;
在Keda操作器将服务的副本数量从零恢复后,修改Istio的VirtualService(虚拟服务)对象,将用户发起的到服务的HTTP、HTTP2、HTTPS、gRPC请求指向服务本身。
基于上述修改,使Keda能够兼容Istio等流量管理软件,并且能够同时支持HTTP、HTTP2、HTTPS、gRPC等流量的缩容至零和从零恢复。
S40、响应于服务的副本数量不为零,Istio配置为将所述服务创建请求发送到所述服务的副本。
如图4所示,用户请求首先经过Istio入站网关,然后到达服务的某个副本,对应的服务副本处理该请求,并且将该请求的响应发送给用户。
S50、响应于服务的副本数量为零,所述Istio配置为将所述服务创建请求发送给所述Keda,以使所述Keda对所述服务创建请求进行处理后发送到所述服务。
本发明提出的实现无服务器的系统,能够在云环境或者离线环境实现无服务器服务的部署和访问;并且通过对Keda的内部组件进行改进,使其部署在Kubernetes后能够兼容部署在Kubernetes上的流量管理软件,并能够同时支持HTTP、HTTP2、HTTPS、gRPC等流量的缩容至零和从零恢复;并且,解决了KNative封闭性带来的问题,能够将Kubernetes支持的服务相关的各种声明式配置传递到Kubernetes之中,从而达到容器具有privilege特权、或者能够mount一些主机目录等目的。
在一些实施方式中,所述Keda包括:Keda操作器和Keda激活器;
响应于所述服务的副本数量为零,所述Keda操作器配置为执行以下步骤:
从所述缩放器读取所述度量,并判断所述度量是否为零;
响应于所述度量不为零,将所述副本数量从零扩容至第一阈值;
修改服务对应的Istio的Virtual Service,以将所述创建服务请求指向所述服务。
在一些实施方式中,响应于所述服务的副本数量为零并且所述度量不为零,所述Istio配置为接收服务创建请求,并将所述服务创建请求发送给所述Keda激活器;
所述Keda激活器配置为为所述服务创建请求添加消息头,并将添加消息头的服务创建请求经由所述Istio发送到所述服务。
具体的,Keda激活器内部包含多个访问协议代理,例如:HTTP代理、HTTP2代理、gRPC代理,但不限于此,还可扩充其他访问协议。Keda激活器基于用户请求对应的协议类型启动不同的访问协议代理。具体工作流程如下:
启动HTTP代理(端口30010,内部端口,不占用主机端口)用于接收HTTP请求;
启动HTTP2代理(端口30011,内部端口,不占用主机端口)用于接收HTTP2请求;
启动gRPC代理(端口30012,内部端口,不占用主机端口)用于接收gRPC请求;
HTTP代理在接收到HTTP请求后,校验请求、添加消息头,然后转发给对应服务;
HTTP2代理在接收到HTTP2请求后,校验请求、添加消息头,然后转发给对应服务;
gRPC代理在接收到gRPC请求后,校验请求、添加消息头,然后转发给对应服务。
本发明实施例,通过Keda激活器为用户发出的服务创建请求添加消息头,使Istio能够识别其接收的请求是来自用户还是来自Keda激活器,以对请求进行相应的发送处理。
在一些实施方式中,响应于所述服务的副本数量从零扩容至第一阈值,所述Keda激活器配置为接收所述服务的副本对应于所述服务创建请求的响应,并将所述响应返回给用户。
下面通过具体的实施例对服务的副本数量从零扩容到第一阈值的流程进行说明。
如图5所示,服务的副本数量从零扩容到第一阈值的示意图。结合图5的服务的副本数量从零扩容到第一阈值的具体流程如下:
S11、用户发出的请求首先会到达Istio入站网关;
S12、Istio入站网关将请求发送给Keda激活器;
S13、Keda激活器循环尝试将请求发送给服务(仍要经过Istio入站网关);
S14、Istio入站网关记录度量;
S15、Prometheus定时从Istio入站网关拉取度量存入TSDB;
S16、Keda操作器定时从Prometheus中拉取度量,如果发现拉取到的度量值不为0,则标记缩放器为活动状态;
S17、Keda操作器将服务的副本数量从零恢复,然后修改服务对应的Istio的VirtualService,将之后到服务的请求指向服务本身;
S18、Keda激活器在副本数量从零恢复后,成功将请求发送给服务,并从某个服务的副本获取到请求的响应;
S19、Keda激活器将响应发送给用户。
通过上述方案,使Keda部署在Kubernetes后能够兼容部署在Kubernetes上的Istio流量管理软件;并且能够同时支持HTTP、HTTP2、HTTPS、gRPC等流量的缩容至零和从零恢复;并且,同时能够将Kubernetes支持的服务相关的各种声明式配置传递到Kubernetes之中,从而达到容器具有privilege特权、或者能够mount一些主机目录等目的。
在一些实施方式中,响应于所述服务的副本数量不为零,所述Keda操作器配置为执行以下步骤:
从所述缩放器读取所述度量,并判断所述度量是否为零;
响应于所述度量为零且持续第一预设时间均为零,修改服务对应的Istio的Virtual Service,以将所述创建服务请求指向所述Keda激活器;
将所述服务的副本数量从第一阈值缩容至零。
下面通过具体的实施例对服务的副本数量从第一阈值缩容至零的流程进行说明。
如图6所示,服务的副本数量从第一阈值缩容至零的示意图。结合图6的服务的副本数量从第一阈值缩容至零的具体流程如下:
Keda操作器定时从Prometheus中拉取度量,并判断拉取到的度量值是否为0;如果拉取到的度量值为0,则标记缩放器为非活动状态;如果缩放器处于非活动状态持续一定时间(可配置),Keda操作器会将服务对应的Istio VirtualService指向Keda激活器,然后再将服务的副本数量缩容至零。
上述方案通过修改Keda操作器,使Keda部署在Kubernetes后能够兼容部署在Kubernetes上的Istio流量管理软件;通过Keda激活器能够同时支持HTTP、HTTP2、HTTPS、gRPC等流量的缩容至零和从零恢复;并且,通过上述对Keda的改进,能够将Kubernetes支持的服务相关的各种声明式配置传递到Kubernetes之中,从而达到容器具有privilege特权、或者能够mount一些主机目录等目的。
在一些实施方式中,所述Keda还包括Keda度量API服务;
所述Keda操作器配置为执行以下步骤:
监测是否有新创建的对象存储,并响应于有新创建的对象存储而创建对应的HPA和缩放器;
从度量源拉取度量;
将所述度量保存在所述缩放器,并将所述度量发送给所述Keda度量API服务;
所述Keda度量API服务配置为将所述度量发送给所述HPA。
如图3,Keda还包括Keda度量API服务。
如图7所示,为基于Keda实现无服务器的架构图。
结合图7,Keda支持无服务器的具体流程如下:
S21、用户创建服务创建请求,创建的服务创建请求到达Kubernetes API服务;
S22、Kubernetes API服务在接收到请求后,创建对应的服务和ScaledObject;
S23、Keda操作器发现有新创建的ScaledObject后,创建对应的HPA和缩放器(度量源为Istio存入Prometheus的istio_requests_total指标)、并且定时从度量源拉取度量缩放器和Keda度量API服务;
S24、Keda度量API服务将度量提供给HPA;
S25、HPA负责将服务的副本数量从M扩容到N(0<M<N),或者从N缩容到M;
S26、Keda操作器负责将服务的副本数量从M缩容至零或者从零恢复至M。
通过上述方案基于Kubernetes,以及部署在Kubernetes上的Keda和Istio,并且通过Keda与Istio的对接,实现了在Kubernetes部署服务时的无服务器方案。具有以下有益效果:
一方面能够在云环境或者离线环境实现无服务器服务的部署和访问;另一方面Keda部署在Kubernetes后能够兼容部署在Kubernetes上的Istio流量管理软件;又一方面能够同时支持HTTP、HTTP2、HTTPS、gRPC等流量的缩容至零和从零恢复;再一方面,解决了KNative封闭性带来的问题,能够将Kubernetes支持的服务相关的各种声明式配置传递到Kubernetes之中,从而达到容器具有privilege特权、或者能够mount一些主机目录等目的。
在一些实施方式中,所述HPA配置为基于所述度量将所述服务的副本数量从第一阈值扩容至第二阈值或从第二阈值缩容至第一阈值。
基于同一发明构思,根据本发明的另一个方面,如图8所示,本发明的实施例还提供了一种实现无服务器的方法,包括:
S100、在Kubernetes上部署Keda和Istio,其中,所述Kubernetes包括KubernetesAPI 服务;
S200、所述Kubernetes基于所述Kubernetes API 服务接收用户的服务创建请求,并基于所述服务创建请求创建对应的服务和对象存储;
S300、所述Keda响应于监测到有新创建的对象存储,创建缩放器,并从度量源拉取度量以将所述度量保存在所述缩放器;
S400、所述Keda基于所述度量将所述服务的副本数量从零扩容至第一阈值或从第一阈值缩容至零;
S500、响应于服务的副本数量不为零,所述Istio将所述服务创建请求发送到所述服务的副本;
S600、响应于服务的副本数量为零,所述Istio将所述服务创建请求发送给所述Keda,以使所述Keda对所述服务创建请求进行处理后发送到所述服务。
基于同一发明构思,根据本发明的另一个方面,如图9所示,本发明的实施例还提供了一种计算机设备300,在该计算机设备300中包括处理器310以及存储器320,存储器320存储有可在处理器上运行的计算机程序321,处理器310执行程序时执行如上的方法的步骤。
其中,存储器作为一种非易失性计算机可读存储介质,可用于存储非易失性软件程序、非易失性计算机可执行程序以及模块,如本申请实施例中的所述实现无服务器的方法对应的程序指令/模块。处理器通过运行存储在存储器中的非易失性软件程序、指令以及模块,从而执行装置的各种功能应用以及数据处理,即实现上述方法实施例的实现无服务器的方法。
存储器可以包括存储程序区和存储数据区,其中,存储程序区可存储操作系统、至少一个功能所需要的应用程序;存储数据区可存储根据装置的使用所创建的数据等。此外,存储器可以包括高速随机存取存储器,还可以包括非易失性存储器,例如至少一个磁盘存储器件、闪存器件、或其他非易失性固态存储器件。在一些实施例中,存储器可选包括相对于处理器远程设置的存储器,这些远程存储器可以通过网络连接至本地模块。上述网络的实例包括但不限于互联网、企业内部网、局域网、移动通信网及其组合。
基于同一发明构思,根据本发明的另一个方面,如图10所示,本发明的实施例还提供了一种计算机可读存储介质40,计算机可读存储介质40存储有被处理器执行时执行如上方法的计算机程序410。
最后需要说明的是,本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,可以通过计算机程序来指令相关硬件来完成,程序可存储于一计算机可读取存储介质中,该程序在执行时,可包括如上述各方法的实施例的流程。其中,程序的存储介质可为磁碟、光盘、只读存储记忆体(ROM)或随机存储记忆体(RAM)等。上述计算机程序的实施例,可以达到与之对应的前述任意方法实施例相同或者相类似的效果。
本领域技术人员还将明白的是,结合这里的公开所描述的各种示例性逻辑块、模块、电路和算法步骤可以被实现为电子硬件、计算机软件或两者的组合。为了清楚地说明硬件和软件的这种可互换性,已经就各种示意性组件、方块、模块、电路和步骤的功能对其进行了一般性的描述。这种功能是被实现为软件还是被实现为硬件取决于具体应用以及施加给整个系统的设计约束。本领域技术人员可以针对每种具体应用以各种方式来实现的功能,但是这种实现决定不应被解释为导致脱离本发明实施例公开的范围。
以上是本发明公开的示例性实施例,但是应当注意,在不背离权利要求限定的本发明实施例公开的范围的前提下,可以进行多种改变和修改。根据这里描述的公开实施例的方法权利要求的功能、步骤和/或动作不需以任何特定顺序执行。上述本发明实施例公开实施例序号仅仅为了描述,不代表实施例的优劣。此外,尽管本发明实施例公开的元素可以以个体形式描述或要求,但除非明确限制为单数,也可以理解为多个。
应当理解的是,在本文中使用的,除非上下文清楚地支持例外情况,单数形式“一个”旨在也包括复数形式。还应当理解的是,在本文中使用的“和/或”是指包括一个或者一个以上相关联地列出的项目的任意和所有可能组合。
所属领域的普通技术人员应当理解:以上任何实施例的讨论仅为示例性的,并非旨在暗示本发明实施例公开的范围(包括权利要求)被限于这些例子;在本发明实施例的思路下,以上实施例或者不同实施例中的技术特征之间也可以进行组合,并存在如上的本发明实施例的不同方面的许多其它变化,为了简明它们没有在细节中提供。因此,凡在本发明实施例的精神和原则之内,所做的任何省略、修改、等同替换、改进等,均应包含在本发明实施例的保护范围之内。

Claims (6)

1.一种实现无服务器的系统,其特征在于,包括:
Kubernetes,以及部署在所述Kubernetes上的Keda和Istio,其中,所述Kubernetes包括Kubernetes API 服务;
所述Kubernetes配置为基于所述Kubernetes API 服务接收用户的服务创建请求,并基于所述服务创建请求创建对应的服务和对象存储;
所述Keda配置为响应于监测到有新创建的对象存储,创建缩放器,并从度量源拉取度量以将所述度量保存在所述缩放器;
所述Keda还配置为基于所述度量将所述服务的副本数量从零扩容至第一阈值或从第一阈值缩容至零;
响应于服务的副本数量不为零,所述Istio配置为将所述服务创建请求发送到所述服务的副本;
响应于服务的副本数量为零,所述Istio配置为将所述服务创建请求发送给所述Keda,以使所述Keda对所述服务创建请求进行处理后发送到所述服务;
其中,所述服务部署在Kubernetes集群中的应用,存在多个副本,并且对外提供基于多种通信协议的访问;所述度量为由Istio入站网关记录服务请求的数量,所述服务请求作为事件用于使用和发起事件以触发应用的基础架构,所述服务请求包括HTTP请求或gRPC请求;
所述Istio用于对Kubernetes集群进行流量管理,所述Keda用于基于事件对用户服务的副本数进行扩容和缩容;
其中,所述Keda包括:Keda操作器和Keda激活器;
响应于所述服务的副本数量为零,所述Keda操作器配置为执行以下步骤:从所述缩放器读取所述度量,并判断所述度量是否为零;响应于所述度量不为零,将所述副本数量从零扩容至第一阈值;修改服务对应的Istio的Virtual Service,以将所述服务创建请求指向所述服务;
响应于所述服务的副本数量为零并且所述度量不为零,所述Istio配置为接收服务创建请求,并将所述服务创建请求发送给所述Keda激活器;
所述Keda激活器内部包含多个访问协议代理,配置为为所述服务创建请求添加消息头,并将添加消息头的服务创建请求经由所述Istio发送到所述服务;
响应于所述服务的副本数量从零扩容至第一阈值,所述Keda激活器配置为接收所述服务的副本对应于所述服务创建请求的响应,并将所述响应返回给用户;
响应于所述服务的副本数量不为零,所述Keda操作器配置为执行以下步骤:从所述缩放器读取所述度量,并判断所述度量是否为零;响应于所述度量为零且持续第一预设时间均为零,修改服务对应的Istio的Virtual Service,以将所述服务创建请求指向所述Keda激活器;将所述服务的副本数量从第一阈值缩容至零。
2.根据权利要求1所述的系统,其特征在于,所述Keda还包括Keda度量API服务;
所述Keda操作器配置为执行以下步骤:
监测是否有新创建的对象存储,并响应于有新创建的对象存储而创建对应的HPA和缩放器;
从度量源拉取度量;
将所述度量保存在所述缩放器,并将所述度量发送给所述Keda度量API服务;
所述Keda度量API服务配置为将所述度量发送给所述HPA。
3.根据权利要求2所述的系统,其特征在于,所述HPA配置为基于所述度量将所述服务的副本数量从第一阈值扩容至第二阈值或从第二阈值缩容至第一阈值。
4.一种实现无服务器的方法,其特征在于,包括:
在Kubernetes上部署Keda和Istio,其中,所述Kubernetes包括Kubernetes API 服务;
所述Kubernetes基于所述Kubernetes API 服务接收用户的服务创建请求,并基于所述服务创建请求创建对应的服务和对象存储;
所述Keda响应于监测到有新创建的对象存储,创建缩放器,并从度量源拉取度量以将所述度量保存在所述缩放器;
所述Keda基于所述度量将所述服务的副本数量从零扩容至第一阈值或从第一阈值缩容至零;
响应于服务的副本数量不为零,所述Istio将所述服务创建请求发送到所述服务的副本;
响应于服务的副本数量为零,所述Istio将所述服务创建请求发送给所述Keda,以使所述Keda对所述服务创建请求进行处理后发送到所述服务;
其中,所述服务部署在Kubernetes集群中的应用,存在多个副本,并且对外提供基于多种通信协议的访问;所述度量为由Istio入站网关记录服务请求的数量,所述服务请求作为事件用于使用和发起事件以触发应用的基础架构,所述服务请求包括HTTP请求或gRPC请求;
所述Istio用于对Kubernetes集群进行流量管理,所述Keda用于基于事件对用户服务的副本数进行扩容和缩容;
其中,所述Keda包括:Keda操作器和Keda激活器;
响应于所述服务的副本数量为零,所述Keda操作器配置为执行以下步骤:从所述缩放器读取所述度量,并判断所述度量是否为零;响应于所述度量不为零,将所述副本数量从零扩容至第一阈值;修改服务对应的Istio的Virtual Service,以将所述服务创建请求指向所述服务;
响应于所述服务的副本数量为零并且所述度量不为零,所述Istio配置为接收服务创建请求,并将所述服务创建请求发送给所述Keda激活器;
所述Keda激活器内部包含多个访问协议代理,配置为为所述服务创建请求添加消息头,并将添加消息头的服务创建请求经由所述Istio发送到所述服务;
响应于所述服务的副本数量从零扩容至第一阈值,所述Keda激活器配置为接收所述服务的副本对应于所述服务创建请求的响应,并将所述响应返回给用户;
响应于所述服务的副本数量不为零,所述Keda操作器配置为执行以下步骤:从所述缩放器读取所述度量,并判断所述度量是否为零;响应于所述度量为零且持续第一预设时间均为零,修改服务对应的Istio的Virtual Service,以将所述服务创建请求指向所述Keda激活器;将所述服务的副本数量从第一阈值缩容至零。
5.一种计算机设备,包括:
至少一个处理器;以及
存储器,所述存储器存储有可在所述处理器上运行的计算机程序,其特征在于,所述处理器执行所述程序时执行如权利要求4所述的方法的步骤。
6.一种计算机可读存储介质,所述计算机可读存储介质存储有计算机程序,其特征在于,所述计算机程序被处理器执行时执行如权利要求4所述的方法的步骤。
CN202210593476.5A 2022-05-27 2022-05-27 一种实现无服务器的系统、方法、计算机设备及存储介质 Active CN114979104B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202210593476.5A CN114979104B (zh) 2022-05-27 2022-05-27 一种实现无服务器的系统、方法、计算机设备及存储介质

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202210593476.5A CN114979104B (zh) 2022-05-27 2022-05-27 一种实现无服务器的系统、方法、计算机设备及存储介质

Publications (2)

Publication Number Publication Date
CN114979104A CN114979104A (zh) 2022-08-30
CN114979104B true CN114979104B (zh) 2023-07-21

Family

ID=82957744

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202210593476.5A Active CN114979104B (zh) 2022-05-27 2022-05-27 一种实现无服务器的系统、方法、计算机设备及存储介质

Country Status (1)

Country Link
CN (1) CN114979104B (zh)

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN112035123A (zh) * 2020-08-28 2020-12-04 北京浪潮数据技术有限公司 一种基于kubernetes平台实现无服务器的方法
CN112291104A (zh) * 2020-12-30 2021-01-29 望海康信(北京)科技股份公司 微服务自动伸缩系统、方法及相应设备和存储介质
CN114064062A (zh) * 2022-01-17 2022-02-18 北京快成科技有限公司 基于Kubernetes平台和负载均衡组件的缺省灰度发布方法和装置

Family Cites Families (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11915049B2 (en) * 2020-11-19 2024-02-27 Vmware, Inc. Method and apparatus for scaling a custom resource with custom metrics in a containerized application handling system

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN112035123A (zh) * 2020-08-28 2020-12-04 北京浪潮数据技术有限公司 一种基于kubernetes平台实现无服务器的方法
CN112291104A (zh) * 2020-12-30 2021-01-29 望海康信(北京)科技股份公司 微服务自动伸缩系统、方法及相应设备和存储介质
CN114064062A (zh) * 2022-01-17 2022-02-18 北京快成科技有限公司 基于Kubernetes平台和负载均衡组件的缺省灰度发布方法和装置

Non-Patent Citations (2)

* Cited by examiner, † Cited by third party
Title
"KEDA|Kubernetes中基于事件驱动的自动伸缩".百度.2020,全文. *
"基于Knative的Serverless平台函数管理模块的设计和实现";曹经伟;《中国优秀硕士学位论文全文数据库(电子期刊) 信息科技辑》;全文 *

Also Published As

Publication number Publication date
CN114979104A (zh) 2022-08-30

Similar Documents

Publication Publication Date Title
CN109976774B (zh) 区块链节点部署方法、装置、设备和存储介质
CN110737442B (zh) 一种边缘应用管理方法及系统
US10545750B2 (en) Distributed upgrade in virtualized computing environments
EP3234774B1 (en) Elasticity for highly availabile applications
CN109445869B (zh) 一种跨云适配的微服务管理方法、装置和存储介质
US11057471B2 (en) Edge application management method and system
CN113742031B (zh) 节点状态信息获取方法、装置、电子设备及可读存储介质
CN106371889B (zh) 一种调度镜像的高性能集群系统实现方法及装置
CN104935672A (zh) 负载均衡服务高可用实现方法和设备
US6226694B1 (en) Achieving consistency and synchronization among multiple data stores that cooperate within a single system in the absence of transaction monitoring
US10218780B2 (en) Cloud based peer assisted updates in a device management environment
WO2017049997A1 (zh) 一种基于云计算服务的虚拟机监控方法、装置及系统
CN112463290A (zh) 动态调整计算容器的数量的方法、系统、装置和存储介质
CN112187860A (zh) kubernetes集群节点镜像的构建方法及装置
CN109802995B (zh) 消息推送方法、装置、设备及存储介质
He et al. Block-stream as a service: A more secure, nimble, and dynamically balanced cloud service model for ambient computing
EP3079339A1 (en) Method, device, and esb system for data processing
CN110532060B (zh) 一种混合网络环境数据采集方法及系统
CN113419818B (zh) 基础组件部署方法、装置、服务器及存储介质
CN114979104B (zh) 一种实现无服务器的系统、方法、计算机设备及存储介质
CN113726638B (zh) 一种多云多芯容器管理的方法、装置及设备、存储介质
CN112000437A (zh) 一种灾备方法、装置、电子设备及存储介质
CN104348646A (zh) 配置数据处理方法、装置及系统
CN112422598A (zh) 资源调度方法、智能前端设备、智能网关及分布式系统
CN114930313A (zh) 用于管理区块链节点的系统和方法

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