CN112596762A - 一种滚动升级方法及装置 - Google Patents
一种滚动升级方法及装置 Download PDFInfo
- Publication number
- CN112596762A CN112596762A CN202011486828.4A CN202011486828A CN112596762A CN 112596762 A CN112596762 A CN 112596762A CN 202011486828 A CN202011486828 A CN 202011486828A CN 112596762 A CN112596762 A CN 112596762A
- Authority
- CN
- China
- Prior art keywords
- sidecar
- pod
- container
- rolling
- rolling upgrade
- 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
- 238000005096 rolling process Methods 0.000 title claims abstract description 58
- 238000000034 method Methods 0.000 title claims abstract description 56
- 238000012423 maintenance Methods 0.000 claims abstract description 13
- 238000011065 in-situ storage Methods 0.000 claims abstract description 9
- 238000004590 computer program Methods 0.000 claims description 21
- 238000003860 storage Methods 0.000 claims description 14
- 230000008569 process Effects 0.000 claims description 11
- 238000012544 monitoring process Methods 0.000 claims description 4
- 230000005540 biological transmission Effects 0.000 abstract description 5
- 238000010586 diagram Methods 0.000 description 15
- 230000006870 function Effects 0.000 description 11
- 239000008186 active pharmaceutical agent Substances 0.000 description 9
- 239000000306 component Substances 0.000 description 8
- 230000008859 change Effects 0.000 description 5
- 238000012545 processing Methods 0.000 description 5
- 238000005516 engineering process Methods 0.000 description 3
- 230000004048 modification Effects 0.000 description 3
- 238000012986 modification Methods 0.000 description 3
- 230000002159 abnormal effect Effects 0.000 description 2
- 230000008878 coupling Effects 0.000 description 2
- 238000010168 coupling process Methods 0.000 description 2
- 238000005859 coupling reaction Methods 0.000 description 2
- 230000000694 effects Effects 0.000 description 2
- 230000003287 optical effect Effects 0.000 description 2
- 230000002829 reductive effect Effects 0.000 description 2
- 230000004075 alteration Effects 0.000 description 1
- 238000004891 communication Methods 0.000 description 1
- 239000008358 core component Substances 0.000 description 1
- 238000013461 design Methods 0.000 description 1
- 230000006872 improvement Effects 0.000 description 1
- 238000002347 injection Methods 0.000 description 1
- 239000007924 injection Substances 0.000 description 1
- 230000000670 limiting effect Effects 0.000 description 1
- 238000004519 manufacturing process Methods 0.000 description 1
- 230000005055 memory storage Effects 0.000 description 1
- 238000010606 normalization Methods 0.000 description 1
- 230000008520 organization Effects 0.000 description 1
- 230000036961 partial effect Effects 0.000 description 1
- 230000000750 progressive effect Effects 0.000 description 1
- 230000010076 replication Effects 0.000 description 1
- 230000002441 reversible effect Effects 0.000 description 1
- 230000003068 static effect Effects 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/60—Software deployment
- G06F8/65—Updates
-
- 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
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Computer Security & Cryptography (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明公开了一种滚动升级方法和系统,涉及计算机技术领域。该方法的一具体实施方式包括:在pod中为每个Kubernetes主业务容器添加相应的SideCar辅助容器;对Kubernetes原生的StatefulSet进行扩展,使得扩展后的StatefulSet在做滚动升级时保留pod;将StatefulSet中的MaxUnavailable的值设定为不大于pod的数量,以保持最大不可用的应用实例数不超过MaxUnavailable限定的值;通过编写SideCar使得所述Kubernetes主业务容器与SideCar辅助容器的运维模式解耦;以及在不重建pod的情况下原地升级SideCar辅助容器。该实施方式在做滚动更新的时候不会销毁并且重建pod,从而能够适用于大规模体量的场景,且不会产生不必要的开销,无需占用资源并且具有高亲和特性,同时也避免了网络流量传输的不确定性。
Description
技术领域
本发明涉及计算机技术领域,尤其涉及一种具备丰富发布策略、支持原地升级的滚动升级方法及装置。
背景技术
Kubernetes(简称K8s)作为跨主机集群的开源容器调度平台,提供了以容器为中心的基础架构,并已经成为了容器编排领域的事实标准。
然而,在实现本发明过程中,发明人发现现有技术中至少存在如下问题:在大规模体量的场景下,Kubernetes原生的控制器StatefulSet在做滚动更新(rolling update)时会引起大量不必要的开销,导致代价巨大。
发明内容
有鉴于此,本发明实施例提供一种容器部署方法,其能够以小的代价支持原地升级并且具备丰富的发布策略。
为实现上述目的,根据本发明实施例的一个方面,提供了一种滚动升级方法,其特征在于,包括:
在pod中为每个Kubernetes主业务容器添加相应的SideCar辅助容器;
对Kubernetes原生的StatefulSet进行扩展,使得扩展后的StatefulSet在做滚动升级时保留pod;
将StatefulSet中的MaxUnavailable的值设定为不大于pod的数量,以保持最大不可用的应用实例数不超过MaxUnavailable限定的值;
通过编写SideCar使得所述Kubernetes主业务容器与SideCar辅助容器的运维模式解耦;以及
在不重建pod的情况下原地升级SideCar辅助容器。
可选地,根据本发明的一个方面的方法,其中,
以在Kubernetes的主节点中添加控制器模块的方式扩展原生StatefulSet,以控制扩展后的StatefulSet支持原地升级并且允许应用实例被并行升级。
可选地,根据本发明的一个方面的方法,其中,
将StatefulSet中的MaxUnavailable的值设定为不大于1。
可选地,根据本发明的一个方面的方法,其中,
将StatefulSet中的MaxUnavailable的值设定为0。
可选地,根据本发明的一个方面的方法,其中,
所述SideCar辅助容器是monitoring容器。
可选地,根据本发明的一个方面的方法,其中,
所述SideCar辅助容器是log collection容器。
根据本发明的另一方面,提供一种滚动升级系统,包括:
StatefulSet扩展模块,对Kubernetes原生的StatefulSet进行扩展,使得扩展后的StatefulSet在做滚动升级时保留pod,并且保持滚动升级过程中最大不可用的应用实例数不超过MaxUnavailable限定的值;以及
SideCar模块,对于pod中为每个Kubernetes主业务容器添加的SideCar辅助容器,编写SideCar使得所述Kubernetes主业务容器与SideCar辅助容器的运维模式解耦;以及
升级执行模块,在不重建pod的情况下原地升级SideCar辅助容器。
可选地,根据本发明的另一方面的滚动升级系统,其中,
所述StatefulSet扩展模块包括控制器,该控制器进行操作以控制扩展后的StatefulSet支持原地升级并且允许应用实例被并行升级。
根据本发明的又一方面,一种滚动升级装置,包含至少一个处理器以及与所述至少一个处理器耦合的存储器,所述存储器存储有可执行指令;
所述可执行指令在被所述至少一个处理器执行时使得实现根据本发明的一个方面所述的滚动升级方法。
根据本发明的又一方面,一种芯片,包含处理器,用于从存储器中调用并运行计算机程序,使得安装有所述芯片的设备执行根据本发明的一个方面所述的滚动升级方法。
根据本发明的又一方面,一种计算机可读存储介质,所述计算机可读存储介质上存储有计算机程序,所述计算机程序被处理器执行时实现如根据本发明的一个方面所述的滚动升级方法。
根据本发明的又一方面,一种计算机程序产品,包含计算机程序指令,该计算机程序指令使得计算机执行根据本发明的一个方面所述的滚动升级方法。
根据本发明的方法,在做滚动更新的时候不会销毁并且重建pod,从而能够适用于大规模体量的场景。具体地,首先,在滚动更新时,由于不删除和重建应用的pod,所以无需进行重新调度,所以即使pod数量巨大,也不会产生不必要的开销,而且无需占用资源并且具有高亲和特性。此外,不重新调度pod使得pod保留了原来的本地状态,进一步减少开销,也不需要重新申请IP,因此即使是依赖IP保持的应用也可以维持正常工作。另外,通过本发明的方法,也避免了网络流量传输的不确定性。
上述的非惯用的可选方式所具有的进一步效果将在下文中结合具体实施方式加以说明。
附图说明
附图用于更好地理解本发明,不构成对本发明的不当限定。其中:
图1是Kubernetes集群架构示意图;
图2是根据本发明实施例滚动升级系统的主要模块的示意图;
图3是根据本发明实施例的计算机设备的结构框图。
具体实施方式
以下结合附图对本发明的示范性实施例做出说明,其中包括本发明实施例的各种细节以助于理解,应当将它们认为仅仅是示范性的。因此,本领域普通技术人员应当认识到,可以对这里描述的实施例做出各种改变和修改,而不会背离本发明的范围和精神。
为了便于说明,首先介绍Kubernetes及Kubernetes集群的相关内容。
<关于Kubernetes>
作为一款开源的容器操作平台,Kubernetes能够实现对容器的部署、调度以及节点集群间扩展等功能,将配置有Kubernetes环境的物理机节点或虚拟机称作Kubernetes节点。Kubernetes集群通常由多个Kubernetes节点组建而成,可实现对容器的部署和管理。
在一个Kubernetes集群内有且只有一套控制单元,如图1所示,即Kubernetes主节点(Master),主要负责调度和管理Kubernetes服务,如分配某个服务的某个容器到某个从节点(Node)上。Kubernetes的Master节点包含四个子组件,分别为数据库(etcd)组件、接口服务(API Server)组件、调度(scheduler)组件和控制(Controller Manager)组件。
除了的作为集群管理节点的Master节点之外,Kubernetes集群还包括多个Kubernetes从节点(node),用于实际运行由Master节点分配的容器。其中,每个node节点都会启动kubelet进程来处理Master节点下发到本节点的任务,管理pod和其中的容器。Kubelet会在API Server上注册节点信息,定期向master汇报节点资源使用情况,并通过cAdvisor监控容器和节点资源。
Kubernetes项目编排能力的核心在于其声明式API的设计和使用,通过对REST路径下API群组进行CRUD操作(即,增加(Create)、检索(Retrieve)、更新(Update)和删除(Delete)),可以获取和变更资源信息。
Kubernetes中存在多种资源类型,如Pod、Service(服务)和Event(事件)等。
Pod是Kubernetes中能够创建和部署的最小单元,是Kubernetes集群中的一个应用实例,总是部署在同一个node节点上。Pod中包含了一个或多个容器,还包括了存储、网络等各个容器共享的资源。Pod支持多种容器环境,docker则是最流行的容器环境。单容器pod是最常见的应用方式,而多容器Pod是相对高阶的使用方式,主要在应用耦合特别严重的情况下使用。。此外,Pods是有生命周期的,其能够被创建和终止,但不能被复活。在Kubernetes中通过Replication Controllers动态地创建和删除pod。然后,每一个Pod都拥有自己的IP地址,但是这些IP地址随着时间会发生变化。一个Pod内的容器共享IP地址和端口范围,容器之间可以通过Localhost互相访问。
Service是一个抽象的概念,它定义了Pod逻辑集合和访问这些Pod的策略。Service通过Label Selector选择pod。例如,在后端运行着有3个副本的pod,这些副本是可互相替换的,前端不需要关注使用那个副本,service就是用来实现此解耦的能力的。对于Kubernetes本地的应用,当service中的pod发生变化时,Kubernetes通过Endpoints API类进行更新。对于非本地的应用,Kubernetes提供了virtual-IP-based桥,通过它重定向后端的pod。
Events用于展示集群内发生的情况。Kubernetes系统中的各个组件会将运行时发生的各种事件(例如,调度器做了什么决定,某些pod为什么被从节点中驱逐)上报给APIServer,API Server将Event存储在etcd内,记录集群运行所遇到的各种大事件。
通常情况下,大部分使用者只关心pod、service这种直接关乎服务运行成功与否的资源类型,而只有在集群发生异常或是服务部署发生异常,需要进行问题追踪时,才会关注集群运行信息。
如上所述目前针对集群内部运行信息的记录,主要通过events进行。Events包含了Kubernetes运行过程中核心组件kubelet和Controller Manager(控制管理器)产生的信息,分析Events包含信息和events变更历史可以有效追踪问题,从而有的放矢的解决。业内目前查看Events主要通过kubectl(二进制可执行文件,通过访问kube-API Server产生效果)命令进行,具体命令例如为“kubectl get events”和“kubectl describe[resourceName]”,通过二者均可以获得Events内容。现有方式为命令行级别操作,需要具备访问集群权限。要获取准确的Events信息需要设置繁杂的参数做多条件匹配,且最终的查询结果显示不够友好。对于一些特定需求,如查询一个应用升级前后对应pod名字变化,需要多次查询人工匹配,且不容易进行操作常态化。
<关于Sidecar模式>
Sidecar模式即将应用程序的功能划分为单独的进程。Sidecar应用于主应用程序松耦合。
Sidecar在Kubernetes中是一个辅助容器的概念,和主容器跑在同一个pod中。Sidecar容器一般是一些基础服务组件如monitoring容器,log collection容器等。
通常在一个公司中,主业务容器和基础组件容器通常由不同的团队开发和维护,多个团队同时操作和修改同一份yaml文件,同一个API资源对象,时常会产生一些冲突,且不便于管理。SidecarSet的理念在于将主业务容器和辅助容器的运维模式解耦。当业务用户提交应用时,不需要显示指定sidecar容器,由sidecar容器相应的团队编写规则负责自动注入。并且在容器运维和升级时候,利用Advanced Statefulset原地升级的功能,业务团队,和基础架构团队分别按照自己定义的策略升级各自相应的容器,而不需要耦合在一起升级,产生不必要的影响。
注意,Istio其实采用类似的思想自动给业务容器注入sidecar容器的功能,但是其缺乏sidecar容器后续升级运维的能力。SidecarSet有效地把Sidecar容器的部署和管理抽象出来。
<关于滚动更新>
滚动更新(rolling update)一般是指从集群中取出一个或者多个服务器节点停止服务,并执行更新,更新成功后重新将其投入使用,再停止并更新其它服务器节点,直到集群中所有服务器节点都更新成新版本。滚动更新的优点在于零停机,整个更新过程始终有副本在运行,从而保证了业务的连续性。因此,滚动更新是一种自动化程度较高的升级方式,用户体验比较平滑,是目前成熟型技术组织所采用的主流升级方式。
Kubernetes提供了一种管理有状态应用的负载管理控制器API,即StatefulSet,其适用于需要按顺序滚动更新的应用。然而,Kubernetes原生的StatefulSet在做滚动更新的时候会销毁并且重建pod。这在大规模体量的场景下代价巨大。
首先,在滚动更新时,所有被删除的应用的pod需要被重新调度一遍,由于pod数量大,这对调度带来了不必要的开销。更糟的是,由于资源被占用以及亲和特性等其他原因,重新调度的pod无法被继续正常调度。Pod被重新调度到新的node上,损失了原来的本地状态,虽然状态通常可以被重建,但是还是带来额外开销。重调度后的pod很有可能分布在不同的机器上,由于网络拓扑结构的改变,需要重新申请IP,因此有些依赖IP保持的应用无法正常工作。
此外,网络流量的传输也带来了不确定性。针对多容器的pod,升级sidecar容器而导致主容器重建,这通常是不可接受的。Kubernetes原生的StatefulSet在升级的过程中是不允许同时升级多个实例的,这主要是为了某些有状态应用需要依次按序升级的需求。但是,从实际的客户了解到,许多应用不需要依次按序升级的语义,这样带来的问题是效率太低。
对此,根据本发明的实施例,为了提高滚动升级的效率,编写一种KubernetesController(控制器)并将其并入Master节点中,以扩展Kubernetes原生的StatefulSet,使得即使针对多容器的pod,在升级sidecar容器时也不重建主容器,并且支持原地升级且允许同时升级多个实例。此外,设置StatefulSet中的MaxUnavailable,并且使得在并行升级多个实例时,始终保持最大的不可用实例的数量不超过MaxUnavailable。其中,编写sidecar,使得主业务容器与辅助容器的模式运维模式解耦,从而能够原地升级辅助容器,而无需重建pod。
更具体地,根据本发明的实施例的滚动升级方法包括:在pod中为每个Kubernetes主业务容器添加相应的SideCar辅助容器;对Kubernetes原生的StatefulSet进行扩展,使得扩展后的StatefulSet在做滚动升级时保留pod;将StatefulSet中的MaxUnavailable的值设定为不大于pod的数量,以保持最大不可用的应用实例数不超过MaxUnavailable限定的值;通过编写SideCar使得所述Kubernetes主业务容器与SideCar辅助容器的运维模式解耦;以及在不重建pod的情况下原地升级SideCar辅助容器。
其中,StatefulSet中的MaxUnavailable的值可以根据pod的数量来设置,例如可以设定为不大于1,优选地将MaxUnavailable的值设定为0。
此外,SideCar辅助容器可以是monitoring容器,或者可以是log collection容器。
根据本发明的上述方法,在做滚动更新的时候不会销毁并且重建pod,从而能够适用于大规模体量的场景。具体地,首先,在滚动更新时,由于不删除和重建应用的pod,所以无需进行重新调度,所以即使pod数量巨大,也不会产生不必要的开销,而且无需占用资源并且具有高亲和特性。此外,不重新调度pod使得pod保留了原来的本地状态,进一步减少开销,也不需要重新申请IP,因此即使是依赖IP保持的应用也可以维持正常工作。另外,通过本发明的方法,也避免了网络流量传输的不确定性。
如图2所示,与上述根据本发明的的滚动升级方法对应,本发明一些实施例的滚动升级装置可以包括:StatefulSet扩展模块,能够执行控制,以在升级sidecar容器时不重建主容器;以及sidecar模块,使得辅助容器与主业务容器解耦,从而能够原地升级辅助容器;以及滚动升级执行模块,执行滚动升级。
更具体地,根据本发明的实施例的滚动升级系统包括:StatefulSet扩展模块,对Kubernetes原生的StatefulSet进行扩展,使得扩展后的StatefulSet在做滚动升级时保留pod,并且保持滚动升级过程中最大不可用的应用实例数不超过MaxUnavailable限定的值;以及SideCar模块,对于pod中为每个Kubernetes主业务容器添加的SideCar辅助容器,编写SideCar使得所述Kubernetes主业务容器与SideCar辅助容器的运维模式解耦;以及升级执行模块,在不重建pod的情况下原地升级SideCar辅助容器。
其中,StatefulSet扩展模块包括控制器,该控制器进行操作以控制扩展后的StatefulSet支持原地升级并且允许应用实例被并行升级。
为了描述的方便,描述以上装置时以功能分为各种模块分别描述。当然,在实施本发明时可以把各模块的功能在同一个或多个软件和/或硬件中实现。
如图3所示,与上述根据本发明的滚动升级方法对应,本发明一些实施例的计算机设备,包括存储器、处理器、以及存储在所述存储器上的计算机程序,所述计算机程序被所述处理器运行时执行上述根据本发明的滚动升级方法。
与上述根据本发明的滚动升级方法对应,本发明一些实施例的计算机存储介质上存储有计算机程序,所述计算机程序被处理器执行时实现上述根据本发明的滚动升级方法。
本发明是参照根据本发明实施例的方法、设备(系统)和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
在一个典型的配置中,计算设备包括一个或多个处理器(CPU)、输入/输出接口、网络接口和内存。
内存可能包括计算机可读介质中的非永久性存储器,随机存取存储器(RAM)和/或非易失性内存等形式,如只读存储器(ROM)或闪存(flash RAM)。内存是计算机可读介质的示例。
计算机可读介质包括永久性和非永久性、可移动和非可移动媒体可以由任何方法或技术来实现信息存储。信息可以是计算机可读指令、数据结构、程序的模块或其他数据。计算机的存储介质的例子包括,但不限于相变内存(PRAM)、静态随机存取存储器(SRAM)、动态随机存取存储器(DRAM)、其他类型的随机存取存储器(RAM)、只读存储器(ROM)、电可擦除可编程只读存储器(EEPROM)、快闪记忆体或其他内存技术、只读光盘只读存储器(CD-ROM)、数字多功能光盘(DVD)或其他光学存储、磁盒式磁带,磁带磁磁盘存储或其他磁性存储设备或任何其他非传输介质,可用于存储可以被计算设备访问的信息。按照本文中的界定,计算机可读介质不包括暂存电脑可读媒体(transitory media),如调制的数据信号和载波。
本领域技术人员应明白,本说明书的实施例可提供为方法、系统或计算机程序产品。因此,本说明书可采用完全硬件实施例、完全软件实施例或结合软件和硬件方面的实施例的形式。而且,本说明书可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
本发明可以在由计算机执行的计算机可执行指令的一般上下文中描述,例如程序模块。一般地,程序模块包括执行特定任务或实现特定抽象数据类型的例程、程序、对象、组件、数据结构等等。也可以在分布式计算环境中实践本说明书,在这些分布式计算环境中,由通过通信网络而被连接的远程处理设备来执行任务。在分布式计算环境中,程序模块可以位于包括存储设备在内的本地和远程计算机存储介质中。
本发明中的各个实施例均采用递进的方式描述,各个实施例之间相同相似的部分互相参见即可,每个实施例重点说明的都是与其他实施例的不同之处。尤其,对于系统实施例而言,由于其基本相似于方法实施例,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。
附图中的流程图或框图,图示了按照本发明各种实施例的系统、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段、或代码的一部分,上述模块、程序段、或代码的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。也应当注意,在有些作为替换的实现中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个接连地表示的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图或流程图中的每个方框、以及框图或流程图中的方框的组合,可以用执行规定的功能或操作的专用的基于硬件的系统来实现,或者可以用专用硬件与计算机指令的组合来实现。
以上所述仅为本说明书的实施例,并不用于限制本说明书。对于本领域技术人员来说,本说明书可以有各种更改和变化。凡在本说明书的精神和原理之内所作的任何修改、等同替换、改进等,均应包含在本说明书的权利要求范围之内。
Claims (12)
1.一种滚动升级方法,其特征在于,包括:
在pod中为每个Kubernetes主业务容器添加相应的SideCar辅助容器;
对Kubernetes原生的StatefulSet进行扩展,使得扩展后的StatefulSet在做滚动升级时保留pod;
将StatefulSet中的MaxUnavailable的值设定为不大于pod的数量,以保持最大不可用的应用实例数不超过MaxUnavailable限定的值;
通过编写SideCar使得所述Kubernetes主业务容器与SideCar辅助容器的运维模式解耦;以及
在不重建pod的情况下原地升级SideCar辅助容器。
2.根据权利要求1所述的滚动升级方法,其特征在于,其中,
以在Kubernetes的主节点中添加控制器模块的方式扩展原生StatefulSet,以控制扩展后的StatefulSet支持原地升级并且允许应用实例被并行升级。
3.根据权利要求1或2所述的滚动升级方法,其特征在于,其中,
将StatefulSet中的MaxUnavailable的值设定为不大于1。
4.根据权利要求1或2所述的滚动升级方法,其特征在于,其中,
将StatefulSet中的MaxUnavailable的值设定为0。
5.根据权利要求1或2所述的滚动升级方法,其特征在于,其中,
所述SideCar辅助容器是monitoring容器。
6.根据权利要求1或2所述的滚动升级方法,其特征在于,其中,
所述SideCar辅助容器是log collection容器。
7.一种滚动升级系统,其特征在于,包括:
StatefulSet扩展模块,对Kubernetes原生的StatefulSet进行扩展,使得扩展后的StatefulSet在做滚动升级时保留pod,并且保持滚动升级过程中最大不可用的应用实例数不超过MaxUnavailable限定的值;以及
SideCar模块,对于pod中为每个Kubernetes主业务容器添加的SideCar辅助容器,编写SideCar使得所述Kubernetes主业务容器与SideCar辅助容器的运维模式解耦;以及
升级执行模块,在不重建pod的情况下原地升级SideCar辅助容器。
8.根据权利要求7所述的滚动升级系统,其特征在于,
所述StatefulSet扩展模块包括控制器,该控制器进行操作以控制扩展后的StatefulSet支持原地升级并且允许应用实例被并行升级。
9.一种滚动升级装置,其特征在于,包含至少一个处理器以及与所述至少一个处理器耦合的存储器,所述存储器存储有可执行指令;
所述可执行指令在被所述至少一个处理器执行时使得实现根据权利要求1至6中任一项所述方法。
10.一种芯片,其特征在于,包含处理器,用于从存储器中调用并运行计算机程序,使得安装有所述芯片的设备执行:如权利要求1至6中任一项所述方法。
11.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质上存储有计算机程序,所述计算机程序被处理器执行时实现如权利要求1至6中任一项所述方法。
12.一种计算机程序产品,其特征在于,包含计算机程序指令,该计算机程序指令使得计算机执行如权利要求1至6中任一项所述方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202011486828.4A CN112596762A (zh) | 2020-12-16 | 2020-12-16 | 一种滚动升级方法及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202011486828.4A CN112596762A (zh) | 2020-12-16 | 2020-12-16 | 一种滚动升级方法及装置 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN112596762A true CN112596762A (zh) | 2021-04-02 |
Family
ID=75196326
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202011486828.4A Pending CN112596762A (zh) | 2020-12-16 | 2020-12-16 | 一种滚动升级方法及装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN112596762A (zh) |
Cited By (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113422700A (zh) * | 2021-06-22 | 2021-09-21 | 汇付天下有限公司 | 无感升级方法及无感升级装置 |
CN113986468A (zh) * | 2021-11-04 | 2022-01-28 | 马上消费金融股份有限公司 | 一种容器注入方法及装置 |
CN114221773A (zh) * | 2021-12-17 | 2022-03-22 | 北京邮电大学 | 一种基于容器云自动添加代理的方法 |
US20230065431A1 (en) * | 2021-08-31 | 2023-03-02 | Salesforce.Com, Inc. | Controlled updates of containers in a distributed application deployment environment |
CN117270916A (zh) * | 2023-11-21 | 2023-12-22 | 北京凌云雀科技有限公司 | 一种基于Istio的Sidecar热更新方法及装置 |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20190377604A1 (en) * | 2018-06-11 | 2019-12-12 | Nuweba Labs Ltd. | Scalable function as a service platform |
CN110750332A (zh) * | 2019-10-23 | 2020-02-04 | 广西梯度科技有限公司 | 一种在Kubernetes中Pod设置静态IP的方法 |
CN111258609A (zh) * | 2020-01-19 | 2020-06-09 | 北京百度网讯科技有限公司 | Kubernetes集群的升级方法、装置、电子设备和介质 |
CN111782253A (zh) * | 2020-06-29 | 2020-10-16 | 中国工商银行股份有限公司 | 滚动升级控制方法、装置、设备及存储介质 |
CN111880816A (zh) * | 2020-07-24 | 2020-11-03 | 北京浪潮数据技术有限公司 | Kubernetes工作负载升级方法、装置及设备 |
-
2020
- 2020-12-16 CN CN202011486828.4A patent/CN112596762A/zh active Pending
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20190377604A1 (en) * | 2018-06-11 | 2019-12-12 | Nuweba Labs Ltd. | Scalable function as a service platform |
CN110750332A (zh) * | 2019-10-23 | 2020-02-04 | 广西梯度科技有限公司 | 一种在Kubernetes中Pod设置静态IP的方法 |
CN111258609A (zh) * | 2020-01-19 | 2020-06-09 | 北京百度网讯科技有限公司 | Kubernetes集群的升级方法、装置、电子设备和介质 |
CN111782253A (zh) * | 2020-06-29 | 2020-10-16 | 中国工商银行股份有限公司 | 滚动升级控制方法、装置、设备及存储介质 |
CN111880816A (zh) * | 2020-07-24 | 2020-11-03 | 北京浪潮数据技术有限公司 | Kubernetes工作负载升级方法、装置及设备 |
Non-Patent Citations (3)
Title |
---|
MOB604756F3C518: "腾讯游戏 K8s 应用实践|更贴近业务场景的 K8s 工作负载:GameDeployment & GameStatefulSet", pages 1 - 9, Retrieved from the Internet <URL:https://blog.51cto.com/u_15127585/2825306> * |
WEIXIN_33832340: "如何在Kubernetes中实现容器原地升级", pages 1 - 2, Retrieved from the Internet <URL:https://blog.csdn.net/weixin_33832340/article/details/92574503> * |
王思宇(酒祝) 阿里云技术专家: "揭秘:如何为 Kubernetes 实现原地升级", pages 1 - 4, Retrieved from the Internet <URL:https://zhuanlan.zhihu.com/p/149207901> * |
Cited By (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113422700A (zh) * | 2021-06-22 | 2021-09-21 | 汇付天下有限公司 | 无感升级方法及无感升级装置 |
US20230065431A1 (en) * | 2021-08-31 | 2023-03-02 | Salesforce.Com, Inc. | Controlled updates of containers in a distributed application deployment environment |
CN113986468A (zh) * | 2021-11-04 | 2022-01-28 | 马上消费金融股份有限公司 | 一种容器注入方法及装置 |
CN114221773A (zh) * | 2021-12-17 | 2022-03-22 | 北京邮电大学 | 一种基于容器云自动添加代理的方法 |
CN114221773B (zh) * | 2021-12-17 | 2024-02-06 | 北京邮电大学 | 一种基于容器云自动添加代理的方法 |
CN117270916A (zh) * | 2023-11-21 | 2023-12-22 | 北京凌云雀科技有限公司 | 一种基于Istio的Sidecar热更新方法及装置 |
CN117270916B (zh) * | 2023-11-21 | 2024-02-06 | 北京凌云雀科技有限公司 | 一种基于Istio的Sidecar热更新方法及装置 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US10579364B2 (en) | Upgrading bundled applications in a distributed computing system | |
CN112596762A (zh) | 一种滚动升级方法及装置 | |
JP6607901B2 (ja) | スケーラブル分散ストレージアーキテクチャ | |
US20140188888A1 (en) | Assigning shared catalogs to cache structures in a cluster computing system | |
US8972695B2 (en) | Automatic allocation of data replicas | |
JP4693540B2 (ja) | データベース再構成装置、およびデータベース再構成プログラム | |
CN110119308B (zh) | 管理大规模容器应用的系统 | |
CN115587118A (zh) | 任务数据的维表关联处理方法及装置、电子设备 | |
US9798483B2 (en) | Object storage power consumption optimization | |
CN109885642B (zh) | 面向全文检索的分级存储方法及装置 | |
CN116049207A (zh) | 应用程序sql脚本处理方法、装置、处理器及电子设备 | |
CN113110918A (zh) | 读写速率管控方法、装置、节点设备及存储介质 | |
CN110298031B (zh) | 一种词典服务系统及模型版本一致性配送方法 | |
CN105653566B (zh) | 一种实现数据库写访问的方法及装置 | |
CN115543548A (zh) | 一种容器组的配置方法、装置、设备及可读存储介质 | |
CN115617459A (zh) | 一种用于资源调度的方法、装置及设备 | |
US11720348B2 (en) | Computing node allocation based on build process specifications in continuous integration environments | |
CN114827177A (zh) | 一种分布式文件系统的部署方法、装置及电子设备 | |
CN115080309A (zh) | 数据备份系统、方法、存储介质以及电子设备 | |
CN107102898B (zh) | 一种基于numa架构的内存管理、构建数据结构的方法及装置 | |
Morisawa et al. | Flexible executor allocation without latency increase for stream processing in apache spark | |
CN111435299B (zh) | 一种应用程序的处理方法及装置 | |
KR102456017B1 (ko) | 응용 프로그램간 파일 공유 장치 및 방법 | |
Nonava | Hdfs blocks placement strategy | |
CN112685130A (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 |