CN111176804A - 包括容器的集群环境中的自动基础设施更新 - Google Patents

包括容器的集群环境中的自动基础设施更新 Download PDF

Info

Publication number
CN111176804A
CN111176804A CN201911101071.XA CN201911101071A CN111176804A CN 111176804 A CN111176804 A CN 111176804A CN 201911101071 A CN201911101071 A CN 201911101071A CN 111176804 A CN111176804 A CN 111176804A
Authority
CN
China
Prior art keywords
nodes
cluster
node
update
computer
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
Application number
CN201911101071.XA
Other languages
English (en)
Inventor
M·萨巴斯
J·J·B·卢姆
A·尤瑟夫
M·斯坦德
A·N·坦塔维
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.)
International Business Machines Corp
Original Assignee
International Business Machines Corp
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 International Business Machines Corp filed Critical International Business Machines Corp
Publication of CN111176804A publication Critical patent/CN111176804A/zh
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/46Multiprogramming arrangements
    • G06F9/48Program initiating; Program switching, e.g. by interrupt
    • G06F9/4806Task transfer initiation or dispatching
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5083Techniques for rebalancing the load in a distributed system
    • G06F9/5088Techniques for rebalancing the load in a distributed system involving task migration
    • 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
    • H04L67/1001Protocols in which an application is distributed across nodes in the network for accessing one among a plurality of replicated servers
    • H04L67/1031Controlling of the operation of servers by a load balancer, e.g. adding or removing servers that serve requests
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/60Software deployment
    • G06F8/65Updates
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/46Multiprogramming arrangements
    • G06F9/48Program initiating; Program switching, e.g. by interrupt
    • G06F9/4806Task transfer initiation or dispatching
    • G06F9/4843Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
    • G06F9/485Task life-cycle, e.g. stopping, restarting, resuming execution
    • G06F9/4856Task life-cycle, e.g. stopping, restarting, resuming execution resumption being on a different machine, e.g. task migration, virtual machine migration
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/46Multiprogramming arrangements
    • G06F9/48Program initiating; Program switching, e.g. by interrupt
    • G06F9/4806Task transfer initiation or dispatching
    • G06F9/4843Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
    • G06F9/4881Scheduling strategies for dispatcher, e.g. round robin, multi-level priority queues
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5005Allocation of resources, e.g. of the central processing unit [CPU] to service a request
    • G06F9/5027Allocation 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/5038Allocation 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 execution order of a plurality of tasks, e.g. taking priority or time dependency constraints into consideration
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5005Allocation of resources, e.g. of the central processing unit [CPU] to service a request
    • G06F9/5027Allocation 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/505Allocation 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
    • 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/0803Configuration setting
    • H04L41/0813Configuration setting characterised by the conditions triggering a change of settings
    • H04L41/082Configuration setting characterised by the conditions triggering a change of settings the condition being updates or upgrades of network functionality
    • 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/0876Aspects of the degree of configuration automation
    • H04L41/0886Fully automatic configuration
    • 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/0895Configuration of virtualised networks or elements, e.g. virtualised network function or OpenFlow elements
    • 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/40Arrangements for maintenance, administration or management of data switching networks, e.g. of packet switching networks using virtualisation of network functions or resources, e.g. SDN or NFV entities
    • 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/50Network service management, e.g. ensuring proper service fulfilment according to agreements
    • H04L41/5003Managing SLA; Interaction between SLA and QoS
    • H04L41/5019Ensuring fulfilment of SLA
    • 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/50Network service management, e.g. ensuring proper service fulfilment according to agreements
    • H04L41/5041Network service management, e.g. ensuring proper service fulfilment according to agreements characterised by the time relationship between creation and deployment of a service
    • H04L41/5054Automatic deployment of services triggered by the service manager, e.g. service implementation by automatic configuration of network components
    • 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/50Network service management, e.g. ensuring proper service fulfilment according to agreements
    • H04L41/508Network service management, e.g. ensuring proper service fulfilment according to agreements based on type of value added network service under agreement
    • H04L41/5096Network service management, e.g. ensuring proper service fulfilment according to agreements based on type of value added network service under agreement wherein the managed service relates to distributed or central networked applications

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 Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Automation & Control Theory (AREA)
  • Computer Security & Cryptography (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
  • Debugging And Monitoring (AREA)

Abstract

本发明的各方面包括选择用于基础设施更新的节点。所选择的节点被包括在执行包括容器的工作负载的节点集群中。将来的工作负载被阻止在所选择的节点上被调度。将当前在所选择的节点上执行的工作负载迁移到节点集群中包括的另一节点。更新所选择的节点上的基础设施代码,并且响应于该更新,支持在所选择的节点上调度将来的工作负载的能力。

Description

包括容器的集群环境中的自动基础设施更新
背景技术
本发明总体上涉及更新基础设施,并且更具体地涉及在包括容器的集群环境中提供自动化基础设施更新。
集群环境包括一组服务器和其他资源,其表现得像单个系统并且可以用于提供高可用性并且在某些情况下提供负载平衡和并行处理。集群基础设施为一组计算机或节点提供作为集群一起工作的基本功能。集群基础设施代码在集群中的节点上执行以执行诸如集群管理、锁定管理、隔离和集群配置管理等功能。
容器将应用及其依赖项隔离到可以从一个计算环境移动到另一计算环境的独立单元中。容器包括整个运行时环境,包括应用及其所有依赖项、库和其他二进制文件、以及运行该应用所需要的配置文件,所有这些都捆绑在一个软件包中。可以将应用拆分为模块(诸如数据库、应用前端等),而不是在单个容器内运行整个复杂应用。这称为微服务方法,其中每个模块称为微服务。
发明内容
根据本发明的一个或多个实施例,提供了用于在包括容器的集群环境中执行自动化基础设施更新的计算机实现的方法。计算机实现的方法的非限制性示例包括使用处理器选择用于基础设施更新的节点。所选择的节点被包括在执行包括容器的工作负载的节点集群中。将来的工作负载被阻止在所选择的节点上被调度。将当前在所选择的节点上执行的工作负载将迁移到节点集群中包括的另一节点。更新所选择的节点上的基础设施代码,并且响应于该更新,支持在所选择的节点上调度将来的工作负载的能力。
本发明的其他实施例在计算机系统和计算机程序产品中实现上述方法的特征。
通过本发明的技术实现了附加的技术特征和益处。本发明的实施例和方面在本文中详细描述,并且被视为所要求保护的主题的一部分。为了更好地理解,请参考具体实施方式和附图。
附图说明
本文中描述的专有权的细节在权利要求书中特别指出并且明确要求保护。通过以下结合附图的详细描述,本发明的实施例的前述和其他特征以及优点将变得很清楚,在附图中:
图1描绘了根据本发明的一个或多个实施例的云计算环境;
图2描绘了根据本发明的一个或多个实施例的抽象模型层;
图3描绘了用于实现本发明的一个或多个实施例的处理系统;
图4描绘了根据本发明的一个或多个实施例的用于在包括容器的集群环境中执行自动化基础设施更新的系统的高层框图;
图5描绘了根据本发明的一个或多个实施例的使用三层架构部署在集群中的示例应用的框图;
图6描绘了根据本发明的一个或多个实施例的部署在图4的系统上的图5的示例应用的框图;以及
图7描绘了根据本发明的一个或多个实施例的用于在包括容器的集群环境中执行自动化基础设施更新的集群升级过程的流程图。
本文中描绘的图是说明性的。在不脱离本发明的精神的情况下,图或在其中描述的操作可以有很多变化。例如,可以以不同的顺序执行动作,或者可以添加、删除或修改动作。而且,术语“耦合”及其变型描述在两个元件之间具有通信路径,而非表示元件之间的直接连接并且在它们之间没有中间元件/连接。所有这些变化都被视为本说明书的一部分。
在附图和以下对所公开的实施例的详细描述中,附图中示出的各个元素设置有两个或三个数字的附图标记。除了少数例外,每个附图标记的(多个)最左边的数字与该元素首次被示出的图相对应。
具体实施方式
本发明的一个或多个实施例提供了在包括容器的集群环境中的自动化基础设施更新。可以对该全自动化更新过程进行优化,以使被托管的工作负载的性能和可用性最大化,并且提供快速的部署时间和低的部署成本。另外,本发明的一个或多个实施例提供了自动验证和测试以及回滚能力。本发明的一个或多个实施例包括更新服务,该更新服务包括用于选择集群中的一个或多个节点的最佳集合以进行更新的计划器微服务、以及用于管理最佳节点集合中的一个或多个节点的锁定、排出、重新加载和测试的执行器微服务。至少部分基于由计划器微服务执行的分析,最佳集合可以包括用于同时更新的单个节点或多个节点。
本发明的一个或多个实施例提供了如下能力:当预期或要求基础设施更新时,将在集群中的节点上放置新的作业和工作负载的调度器(例如,位于集群中的主节点上)切换到更新模式。在正常模式下,调度器通常将作业和工作负载跨集群中的节点放置以产生对于在正常条件下高效运行工作负载的良好平衡的集群。根据本发明的一个或多个实施例,当调度器在更新模式下时,调度器将新的作业和工作负载打包到集群中所选择的一组节点中,从而将新的工作负载引导到集群中的节点的子集。打包可以释放集群中的其他节点,以使这些节点被轻度占用并且成为基础设施更新期间的初始驱逐的良好候选。同时驱逐和更新的节点越多,工作负载就可以越早移动到它们,从而释放了另一批节点以进行更新。将工作负载移动到已更新的节点比移动到需要将来驱逐的另一节点更为高效。
如前所述,集群环境包括一组计算机或节点,它们表现得像单个系统,并且集群基础设施为该组计算机提供基本功能。包括由节点使用的集群基础设施代码的基础设施代码可以在集群中的每个节点上执行。集群基础设施的功能包括但不限于:编排和启动容器,实施资源限制,支持网络和磁盘通信,事件管理和监测。在包括容器的集群中,基础设施代码还可以包括与基础服务相关的代码,诸如但不限于操作系统(OS)的内核代码、容器编排代码、容器运行时和网络插件。
同样如前所述,容器用于将应用及其依赖项隔离到可以在集群中的任何节点上执行的独立单元中。容器包括整个运行时环境,其可以包括例如应用及其所有依赖项、库和其他二进制文件、以及运行该应用所需要的配置文件,所有这些都捆绑在一个包中。可以将应用拆分为微服务,而不是在单个容器内运行整个复杂应用。如本文中使用的,术语“荚”是指一组一个或多个容器,并且术语“工作负载”是指当前在集群中的节点上执行的一个或多个荚或一个或多个容器。
容器与虚拟化形成对比,在虚拟化中在节点之间传递的包是虚拟机(VM),该VM包括整个OS和应用。通常,容器提供一种用于虚拟化OS的方式,使得多个工作负载可以在单个OS实例上运行,而在VM中,硬件被虚拟化以运行多个OS实例。例如,运行三个VM的物理服务器或节点通常具有管理程序和在其之上运行的三个单独的OS。相比之下,运行三个容器化应用的服务器运行单个OS,并且每个容器与其他容器共享OS内核。OS的共享部分是只读的,而每个容器具有自己的挂载(即,访问容器的方式)以进行写入。因此,与VM相比,容器通常更轻量且使用更少资源。使用容器而不是VM的好处在于,容器的尺寸较小,因此单个服务器可以托管比VM多的容器。使用容器而不是VM的另一好处在于,每次移动到不同的服务器时,VM都需要启动OS,而容器可以快速移入和移出,因为它们使用已经在节点上执行的OS。
从Linux
Figure BDA0002269882210000041
可获取的
Figure BDA0002269882210000042
是市售产品的一个示例,其可以由本发明的一个或多个示例性实施例利用以提供用于集群和管理正在执行包括容器的工作负载的多组节点的框架或集群基础设施代码。应当预先理解,尽管本公开内容涉及Kubernetes实施例,但是本文中记载的教导的实现并不限于Kubernetes实施例。相反,本发明的实施例能够与现在已知或以后开发的任何其他类型的容器基础设施代码相结合实现。可以由本发明的一个或多个实施例利用的其他市售产品的示例包括但不限于:从Docker公司可获取的Docker和从Mesosphere公司可获取的Apache Mesos。
基础设施代码的更新定期发生,并且有时可能包括必须尽快应用的关键更新或补丁。关键补丁的一个示例是安全补丁,它可以阻止服务提供商遭受高成本的安全漏洞。检测遭到破坏系统(例如,未经授权的人能够访问的系统或允许执行未经授权的程序的系统)可能需要完全重建集群,理想情况下不会影响被托管服务和应用。遭到破坏系统无法被信任,并且必须与可能已经被遭到破坏系统访问或影响的其他系统一起重新创建。
为了执行更新,必须将活动工作负载从工作者节点迁移到另一工作者节点。如果不能高效地进行迁移,则迁移将非常耗时且成本高昂,并且迁移可能影响在集群中运行的应用。可以在不关闭节点的情况下执行对基础设施代码的某些更新(本文中称为“热修复”)。诸如涉及对内核的重大更新的其他更新需要完全重新启动节点。术语“主机”和“节点”在本文中可互换使用以指代集群中的处理器。
本发明的一个或多个实施例提供了对用于更新执行容器工作负载的节点集群中的节点的当前方法的技术改进。当前方法以随机节点批次和/或以基于节点名称而确定的顺序一次一个地执行节点的排出和更新。现代方法的缺点在于,就工作负载从一个节点移动到另一节点的次数而言,它们的效率不高。现代方法的另一缺点在于,每次选择新节点以进行更新时,它们都没有考虑不断变化的实际工作负载分配。现代方法的再一缺点在于顺序执行每个更新所花费的时间。
本发明的示例实施例通过基于标准来选择要更新的下一组节点来为现有解决方案的上述缺点提供技术解决方案,这些标准诸如但不限于执行升级所花费的时间、每个荚或工作负载的移动次数方面的成本、以及由执行更新而导致的服务中断量方面的弹性。例如,最小数目的特定类型的工作负载或荚可以一直保持运行,以避免更新期间的响应时间劣化。
本发明的示例实施例通过允许同时迁移多个节点(例如,迁移可以在时间上重叠)来提供进一步的技术解决方案,从而减少了集群中所有要更新的节点的经过时间。本发明的示例实施例通过提供将调度器移动到更新模式的能力来提供进一步的技术解决方案,该更新模式引起调度器用新的作业和工作负载来打包所选择的节点子集。通过缩短更新时间,这可以优化更新过程,从而提高被托管工作负载的性能和可用性。现代方法假定管理操作(诸如应用更新和其他维护操作)是定期执行或者基于一些经过仔细计算的时间来执行的。现代方法没有解决为在任何时间点可能发生的更新操作做准备的问题。本发明的一个或多个实施例通过改变调度器的模式以在集群中的工作者节点之间转移工作负载来在任何时间点准备更新操作,从而实现了高效的基础设施更新操作。
首先应当提前理解,尽管本公开包括关于云计算的详细描述,但其中记载的技术方案的实现却不限于云计算环境,而是能够结合现在已知或以后开发的任何其它类型的计算环境而实现。
云计算是一种服务交付模式,用于对共享的可配置计算资源池进行方便、按需的网络访问。可配置计算资源是能够以最小的管理成本或与服务提供者进行最少的交互就能快速部署和释放的资源,例如可以是网络、网络带宽、服务器、处理、内存、存储、应用、虚拟机和服务。这种云模式可以包括至少五个特征、至少三个服务模型和至少四个部署模型。
特征包括:
按需自助式服务:云的消费者在无需与服务提供者进行人为交互的情况下能够单方面自动地按需部署诸如服务器时间和网络存储等的计算能力。
广泛的网络接入:计算能力可以通过标准机制在网络上获取,这种标准机制促进了通过不同种类的瘦客户机平台或厚客户机平台(例如移动电话、膝上型电脑、个人数字助理PDA)对云的使用。
资源池:提供者的计算资源被归入资源池并通过多租户(multi-tenant)模式服务于多重消费者,其中按需将不同的实体资源和虚拟资源动态地分配和再分配。一般情况下,消费者不能控制或甚至并不知晓所提供的资源的确切位置,但可以在较高抽象程度上指定位置(例如国家、州或数据中心),因此具有位置无关性。
迅速弹性:能够迅速、有弹性地(有时是自动地)部署计算能力,以实现快速扩展,并且能迅速释放来快速缩小。在消费者看来,用于部署的可用计算能力往往显得是无限的,并能在任意时候都能获取任意数量的计算能力。
可测量的服务:云系统通过利用适于服务类型(例如存储、处理、带宽和活跃用户帐号)的某种抽象程度的计量能力,自动地控制和优化资源效用。可以监测、控制和报告资源使用情况,为服务提供者和消费者双方提供透明度。
服务模型如下:
软件即服务(SaaS):向消费者提供的能力是使用提供者在云基础架构上运行的应用。可以通过诸如网络浏览器的瘦客户机接口(例如基于网络的电子邮件)从各种客户机设备访问应用。除了有限的特定于用户的应用配置设置外,消费者既不管理也不控制包括网络、服务器、操作系统、存储、乃至单个应用能力等的底层云基础架构。
平台即服务(PaaS):向消费者提供的能力是在云基础架构上部署消费者创建或获得的应用,这些应用利用提供者支持的程序设计语言和工具创建。消费者既不管理也不控制包括网络、服务器、操作系统或存储的底层云基础架构,但对其部署的应用具有控制权,对应用托管环境配置可能也具有控制权。
基础架构即服务(IaaS):向消费者提供的能力是消费者能够在其中部署并运行包括操作系统和应用的任意软件的处理、存储、网络和其他基础计算资源。消费者既不管理也不控制底层的云基础架构,但是对操作系统、存储和其部署的应用具有控制权,对选择的网络组件(例如主机防火墙)可能具有有限的控制权。
部署模型如下:
私有云:云基础架构单独为某个组织运行。云基础架构可以由该组织或第三方管理并且可以存在于该组织内部或外部。
共同体云:云基础架构被若干组织共享并支持有共同利害关系(例如任务使命、安全要求、政策和合规考虑)的特定共同体。共同体云可以由共同体内的多个组织或第三方管理并且可以存在于该共同体内部或外部。
公共云:云基础架构向公众或大型产业群提供并由出售云服务的组织拥有。
混合云:云基础架构由两个或更多部署模型的云(私有云、共同体云或公共云)组成,这些云依然是独特的实体,但是通过使数据和应用能够移植的标准化技术或私有技术(例如用于云之间的负载平衡的云突发流量分担技术)绑定在一起。
云计算环境是面向服务的,特点集中在无状态性、低耦合性、模块性和语意的互操作性。云计算的核心是包含互连节点网络的基础架构。
现在参考图1,其中显示了示例性的云计算环境50。如图所示,云计算环境50包括云计算消费者使用的本地计算设备可以与其相通信的一个或者多个云计算节点10,本地计算设备例如可以是个人数字助理(PDA)或移动电话54A,台式电脑54B、笔记本电脑54C和/或汽车计算机系统54N。云计算节点10之间可以相互通信。可以在包括但不限于如上所述的私有云、共同体云、公共云或混合云或者它们的组合的一个或者多个网络中将云计算节点10进行物理或虚拟分组(图中未显示)。这样,云的消费者无需在本地计算设备上维护资源就能请求云计算环境50提供的基础架构即服务(IaaS)、平台即服务(PaaS)和/或软件即服务(SaaS)。应当理解,图1显示的各类计算设备54A-N仅仅是示意性的,云计算节点10以及云计算环境50可以与任意类型网络上和/或网络可寻址连接的任意类型的计算设备(例如使用网络浏览器)通信。
现在参考图2,其中显示了云计算环境50(图1)提供的一组功能抽象层。首先应当理解,图2所示的组件、层以及功能都仅仅是示意性的,本发明的实施例不限于此。如图2所示,提供下列层和对应功能:
硬件和软件层60包括硬件和软件组件。硬件组件的例子包括:主机61;基于RISC(精简指令集计算机)体系结构的服务器62;服务器63;刀片服务器64;存储设备65;网络和网络组件66。软件组件的例子包括:网络应用服务器软件67以及数据库软件68。
虚拟层70提供一个抽象层,该层可以提供下列虚拟实体的例子:虚拟服务器71、虚拟存储72、虚拟网络73(包括虚拟私有网络)、虚拟应用和操作系统74,以及虚拟客户端75。
在一个示例中,管理层80可以提供下述功能:资源供应功能81:提供用于在云计算环境中执行任务的计算资源和其它资源的动态获取;计量和定价功能82:在云计算环境内对资源的使用进行成本跟踪,并为此提供帐单和发票。在一个例子中,该资源可以包括应用软件许可。安全功能:为云的消费者和任务提供身份认证,为数据和其它资源提供保护。用户门户功能83:为消费者和系统管理员提供对云计算环境的访问。服务水平管理功能84:提供云计算资源的分配和管理,以满足必需的服务水平。服务水平协议(SLA)计划和履行功能85:为根据SLA预测的对云计算资源未来需求提供预先安排和供应。
工作负载层90提供云计算环境可能实现的功能的示例。在该层中,可提供的工作负载或功能的示例包括:地图绘制与导航91;软件开发及生命周期管理92;虚拟教室的教学提供93;数据分析处理94;交易处理95;以及自动化基础架构更新层96。
应当理解,本发明的一个或多个实施例能够与现在已知或以后开发的任何其他类型的计算环境相结合实现。例如,图3描绘了用于实现本文中描述的技术的处理系统300的框图。处理系统300是图1的计算节点10的示例。在图3所示的实施例中,处理系统300具有一个或多个中央处理单元(处理器)21a、21b、21c等(统称为或总体上称为(多个)处理器21和/或(多个)处理设备)。根据本发明的一个或多个实施例,每个处理器21可以包括精简指令集计算机(RISC)微处理器。处理器21经由系统总线33耦合到系统存储器(例如,随机存取存储器(RAM)24)和各种其他组件。只读存储器(ROM)22耦合到系统总线33,并且可以包括基本输入/输出系统(BIOS),BIOS控制处理系统300的某些基本功能。
还示出了耦合到系统总线33的输入/输出(I/O)适配器27和通信适配器26。I/O适配器27可以是与硬盘23和/或磁带存储驱动器25或任何其他类似组件通信的小型计算机系统接口(SCSI)适配器。I/O适配器27、硬盘23和磁带存储驱动器25在本文中统称为大容量存储装置34。用于在处理系统300上执行的操作系统40可以存储在大容量存储装置34中。RAM22、ROM 24和大容量存储装置34是处理系统300的存储器19的示例。网络适配器26将系统总线33与外部网络36互连,从而使得处理系统300能够与其他这样的系统通信。
显示器(例如,显示监视器)通过显示适配器32连接到系统总线33,显示适配器32可以包括图形适配器以改善图形密集型应用和视频控制器的性能。根据本发明的一个或多个实施例,适配器26、27和/或32可以连接到一个或多个I/O总线,该I/O总线经由中间总线桥(未示出)连接到系统总线33。用于连接外围设备(诸如硬盘控制器、网络适配器和图形适配器)的适当I/O总线通常包括通用协议,诸如外围组件互连(PCI)。附加的输入/输出设备被示出为经由用户接口适配器28和显示适配器32连接到系统总线33。键盘29、鼠标30和扬声器31可以经由用户接口适配器28互连到系统总线33,用户接口适配器28可以包括例如将多个设备适配器集成到单个集成电路中的超级I/O芯片。
根据本发明的一个或多个实施例,处理系统300包括图形处理单元37。图形处理单元37是被设计为操纵和改变存储器以加速意图用于输出到显示器的帧缓冲器中的图像的创建的专用电子电路。通常,图形处理单元37在操纵计算机图形和图像处理方面非常高效,并且具有高度并行结构,这使其对于并行处理大数据块的算法而言比通用CPU更有效。
因此,如本文中配置的,处理系统300包括处理器21形式的处理能力、包括系统存储器(例如,RAM 24)和大容量存储装置34的存储能力、诸如键盘29和鼠标30等输入装置、以及包括扬声器31和显示器35的输出能力。根据本发明的一个或多个实施例,系统存储器(例如,RAM 24)和大容量存储装置34的一部分共同存储操作系统(诸如IBM公司的
Figure BDA0002269882210000111
操作系统)以协调处理系统300中所示的各个组件的功能。
现在转向图4,总体上示出了根据本发明的一个或多个实施例的用于包括容器的集群环境中的自动化基础设施更新的系统400的高级框图。至少系统400的组件的子集可以由图1的一个或多个云计算节点10和本地计算设备54A-N来实现。为了便于描述,图4所示的集群包括五个工作者节点410a、410b、410c、410d、410e(本文中统称为工作者节点410)、用作更新器节点的一个工作者节点410x、和一个主节点402。本领域技术人员将认识到,典型的集群可以包括数百或数千个工作者节点410、以及多个更新器节点和主节点402。图4所示的主节点402托管支持容器的应用,诸如但不限于:应用程序编程接口(API)服务器、调度器、队列和事件管理。主节点402包括基础设施代码的主副本,如在图4中示出为主基础设施节点406。图4所示的工作者节点410、更新器节点410x和主节点402经由作为诸如图1的云计算环境50等云计算环境的一部分的网络408进行通信。
图4所示的更新器节点410x包括基础设施代码414x和包括更新服务代码404的工作负载。根据本发明的一个或多个实施例,更新器节点410x中的更新服务代码404跟踪在工作者节点410上运行的当前工作负载412a、412b、412c、412d、412e(本文中统称为工作负载412)以及每个工作者节点410可用的资源。主基础设施代码406执行集群控制功能,诸如但不限于在工作者节点410上调度工作负载和集群配置管理。根据本发明的一个或多个实施例,主基础设施代码406实现本文中描述的调度器,该调度器以更新模式或正常模式操作以在工作者节点上调度工作负载。根据本发明的一个或多个实施例,更新服务代码404与主节点402上的主基础设施代码406通信以获取由更新服务代码404用来确定节点更新顺序并且执行更新的关于工作者节点的信息。节点更新顺序可以例如使用更新服务代码404的计划器微服务容器来确定,诸如下面参考图7的框702描述的。
图4的系统400中的工作者节点每个包括工作负载412和基础设施代码414a、414b、414c、414d、414e(本文中统称为基础设施代码414)。每个基础设施代码414处于更新前软件级别或更新后软件级别。
现在转向图5,总体上示出了根据本发明的一个或多个实施例的使用三层架构部署在集群中的示例应用的框图500。图5所示的示例应用包括三个层:第1层514,它是前端表示层;第2层516,它是web应用逻辑层;以及第3层518,它是用于提供持久性数据的数据层。在图5所示的示例应用中,表示层(第1层514)由web服务器实现,该web服务器被示出为一组web服务器容器501a、501b、501c、501d(本文中统称为web服务器容器501)。web服务器容器501可以由本领域中已知的任何web服务器来实现。第1层514还包括作为例如在图4的主节点402上执行的服务的T1负载平衡器510,其在活动的web服务器容器501之间分配请求。根据本发明的一个或多个实施例,T1负载平衡器510是服务,并且与web服务器容器501不同,T1负载平衡器510不需要迁移。第1层514从用户508接收请求,并且创建对第2层516的调用以进行进一步处理。在从第2层516接收到响应之后,第1层514对一个或多个用户508做出响应。
在图5所示的示例应用中,web应用逻辑层(第2层516)由应用逻辑来实现,该应用逻辑被示出为一组应用逻辑容器502a、502b、502c、502d(本文中统称为应用逻辑容器502)。web服务器容器501可以通过本领域已知的任何编程语言来实现。第2层516还包括作为例如在图4的主节点402上执行的服务的T2负载平衡器512,其在活动的应用逻辑容器502之间分配调用。根据本发明的一个或多个实施例,T2负载平衡器512是服务,并且与应用逻辑容器502不同,T2负载平衡器512不需要迁移。第2层516从第1层514接收调用,并且向第3层518进行数据调用。在完成第2层逻辑和业务流程之后,第2层516将结果返回到第1层514。
在图5所示的示例应用中,数据层(第3层518)由数据存储方案实现,该数据存储方案被示出为一组数据容器503a、503b、503c(本文中统称为数据容器503)。数据容器501可以通过本领域中已知的用于在集群中存储数据的任何数据方案来实现。第3层518从第2层514接收数据调用,并且将结果返回到第2层514。
在图5所示的示例中,可以将用于web服务器容器501和应用逻辑容器502的中断预算参数设置为50%,这表示在任何给定时间这些类型的所有容器中的至少50%必须是活动且健康的(例如,在没有错误的情况下操作)。
应当理解,图5所示的示例应用(包括层的数目、层的类型和层的实现)仅旨在说明,并且本发明的实施例不限于此。
现在转向图6,总体上示出了图示根据本发明的一个或多个实施例的图4所示的样本集群中的来自图5的工作负载的样本分布的框图600。在图6所示的初始状态下,web服务器容器501分布在工作负载412a、412b、412c和412d之间;应用逻辑容器502分布在工作负载412b、412c、412d和412e之间;并且数据容器503分布在工作负载412b、412c、412d和412e之间。
基础设施更新可以应用于图4所示的示例集群。为了便于描述,假定可以迁移当前工作负载的其他工作者节点可用,并且所有当前工作负载消耗相同数量的资源(例如,CPU、存储器、磁盘等)。根据本发明的一个或多个实施例,更新服务代码,诸如图4的更新服务代码404,检查容器在集群中的当前部署并且开始驱逐过程。在一个实施例中,更新服务代码可以选择工作者节点410a和410e作为要更新的第一节点,因为它们具有最少数目的容器。根据本发明的一个或多个实施例,一旦web服务器容器501a在新位置处于活动状态,更新服务代码就可以开始排出工作者节点410d或410c。
现在转向图7,总体上示出了根据本发明的一个或多个实施例的用于包括容器的集群环境中的自动化基础设施更新的集群升级过程700的流程图。根据本发明的一个或多个实施例,图7所示的处理由更新服务代码(诸如图4的更新服务代码404)来执行。更新服务代码由处理器可执行的程序指令实现。根据本发明的一个或多个实施例,图7所示的集群升级过程700在需要新版本时(例如,由于安全问题)由集群管理员或自动化过程来启动。根据本发明的一个或多个实施例,集群具有在诸如图4的主节点402等主节点上运行的API服务器,更新服务代码可以从该主节点获取集群的配置。由API服务器提供的服务是可以在其中检索和设置有关集群的配置和信息的服务。根据本发明的一个或多个实施例,为了执行更新,创建更新请求对象,该对象详细说明应当执行哪种类型的更新、步骤(执行命令)、参数(何时应当执行更新)、以及将用于执行更新的更新速度(例如,权重可用性和其他控制钮)。
根据本发明的一个或多个实施例,存在被部署为集群中的容器服务的更新服务,诸如图4的更新服务代码404。该更新服务查找更新请求对象,并且在检测到更新请求对象的创建时,将检索请求并且开始更新过程。根据本发明的一个或多个实施例,更新服务代码404包括两个容器,一个容器包括计划器微服务以确定更新顺序,另一容器包括执行器微服务。
图7所示的集群升级过程700重复或迭代,直到集群中的所有节点都已经更新。在图7的框702处,在节点集群中选择用于更新的一个或多个节点的集合,诸如图4的工作者节点410。根据本发明的一个或多个实施例,选择由计划器微服务执行以选择用于在当前迭代期间进行更新的一个或多个节点的最佳集合。由计划器微服务在选择一个或多个节点的集合时所考虑的各方面可以包括但不限于:执行更新所需要的时间、尝试最小化冗余荚或容器移动方面的成本、以及试图最小化由节点之间的工作负载迁移而引起的任何服务中断方面的弹性。
根据本发明的一个或多个实施例,计划器微服务查看每个节点上的资源(例如,容器或荚)的数目以及每个节点上的存储器利用率。根据该信息,计划器微服务选择一个或多个节点的集合,该一个或多个节点的集合最小化可能导致服务中断的冗余工作,诸如但不限于尚未更新的节点上的容器的启动(因此,作为集群升级的一部分,必须将移动到这些节点的任何容器再次移动)。计划器微服务还可以选择可能会最小化执行集群的完全升级所需要的时间量的集合。此外,计划器微服务还可以确保在集群升级期间的任何时间点处集群中一定百分比的资源正在运行。根据本发明的一个或多个实施例,计划器微服务具有两个阶段——测量升级阶段和快速升级阶段。
第一阶段(测量升级阶段)选择用于升级的一个或多个节点的一个或多个第一集合,该一个或多个节点的一个或多个第一集合将最小化未更新节点上的荚或容器的启动。在集群升级开始时,当没有已更新节点时,使用测量升级阶段来仔细选择要升级的前几个节点。根据本发明的一个或多个实施例,使用排名函数逼近来执行选择,其中向每个节点提供排名值,该排名值表示该节点将满足一个或多个限制的可能性。节点列表基于排名而分类,并且要包括在用于升级的节点集合中的(多个)节点的选择至少部分基于排名。限制的示例包括但不限于:节点上的松弛量或未使用资源量、以及进入节点的边缘权重。通常,节点的限制越多,它对集群的可用性就越重要,并且进入节点的边缘的权重就越高。当前工作负载较轻的节点比当前工作负载较重的节点进行迁移所花费的时间较少,因此,工作负载较轻的节点可以是第一阶段的用于更新的更好选择。另外,本发明的一个或多个实施例在选择要更新的节点时将考虑不同节点上的工作负载之间的依赖性。执行测量升级阶段,直到阈值百分比(例如,25%、50%)的节点已经被升级。一旦满足阈值百分比,则测量升级阶段结束,并且快速升级阶段开始。在快速升级阶段,所有现有的未升级节点都将快速连续升级。
根据本发明的一个或多个实施例,由计划器微服务选择用于升级的节点集合至少部分基于三个考虑:满足中断预算参数或集群可用性要求(例如,在集群升级期间的任何时间点都应当运行50%的容器);满足所需要的容量(例如,给定潜在配置,集群是否具有足够的资源来在节点集合上执行升级);以及集群升级是否已经从测量升级阶段转移到快速升级阶段(例如,集群升级不再需要使用未升级节点来存储迁移的工作负载)。当集群包括在两个或多个地理位置中的节点时,其他考虑因素可以包括地理区域。在这种情况下,在由集群覆盖的每个不同地理位置中执行集群内的每种类型的至少指定最小数目的荚或容器可能很重要。其他考虑因素可以包括特定区域或节点的可用性,诸如用于灾难恢复的区域或节点。对于灾难恢复站点,在每个灾难恢复站点中执行集群内的每种类型的至少指定最小数目的荚或容器可能很重要。
再次参考图7,在框704处,向执行器微服务通知由计划器微服务在框702处为当前迭代中的升级而选择的节点集合中的一个或多个节点。在框704处,执行器微服务锁定集合中的(多个)节点以阻止例如由集群中的主节点(诸如图4的主节点402)在(多个)节点上调度将来的工作负载。在框706处,排除或排出集合中的(多个)节点以将现有工作负载从集合中的(多个)节点迁移到在当前迭代期间未更新的(多个)其他节点。(多个)目标节点可以是更新节点,也可以是未更新节点,这例如取决于更新是处于测量升级阶段还是快速升级阶段。目标节点的选择可以考虑潜在目标节点是否具有足够的资源来运行正在迁移的工作负载。工作负载所需要的资源的示例可以包括但不限于:磁盘空间、存储器容量、中央处理单元(CPU)速度、网络带宽、吞吐量和/或输入/输出(I/O)能力。另外,目标节点的选择可以考虑与可以执行特定工作负载的位置有关的法律要求。例如,特定工作负载可能无法在特定国家运行。
在框708处,集合中的(多个)所选择的节点被重新部署,或者用基础设施代码的新版本而被更新。在框710处,例如,使用预定义的测试脚本来自动测试(多个)已更新节点。根据本发明的一个或多个实施例,如果测试成功,则处理在框712处继续,而如果测试不成功,则重复框708的更新,或者将基础设施代码回滚到在更新之前在节点上执行的基础设施代码。在框712处,将(多个)节点解锁并且放回集群中以使得调度器能够使用该节点托管工作负载。处理在框714处继续,在框714处,确定集群中是否还有任何要更新的节点。如果还有要更新的节点,则由计划器微服务执行框702以选择用于更新的新的一个或多个节点的集合。如果集群中的所有节点已经更新,则处理在框716处继续并且基础设施更新完成。
根据本发明的一个或多个实施例,框702至714所示的处理针对多个工作者节点同时执行。
根据本发明的一个或多个实施例,诸如图4的更新器节点410x等更新器节点通过从工作者节点410中选择新的更新器节点来更新,并且新选择的更新器节点开始驱动更新。尽管其他情况也是可能的,但是通常保护更新器节点410x不受更新,直到对所有其他工作者节点410的更新完成。一旦所有工作者节点已经更新,则更新器节点上的基础设施代码更新。
如前所述,在执行图7所示的处理之前,例如由图4的主基础设施代码406实现的调度器可以进入更新模式,该更新模式通过将工作负载打包到集群中的节点的子集中来为基础设施更新提供预先计划。该过程的一个示例是容器云集群上的主机更新。在该示例中,集群是Kubernetes集群,其包括10个工作者节点以及在这10个工作者节点上运行的各种工作负载。在该示例中,在内核上为所有工作者节点执行更新,因此需要重新启动工作者节点。但是,不希望中断在集群上运行的工作负载,因此存在一些限制,诸如Kubernetes集群必须遵守的中断预算和荚关联性。在该示例中,执行更新的操作还考虑工作负载的限制,并且针对某些用户需求(诸如可用性、性能、可靠性和更新时间)进行了优化。
在该示例中,资源集是集群中的工作者节点以及集群中的工作负载,并且事实包括每个工作者节点的更新版本以及工作负载属性和资源分配。这些限制包括中断预算和荚关联性要求,并且要优化的成本函数包括集群上的服务的可用性(例如,希望在任何时间点都具有可用的较大百分比的服务)。根据本发明的一个或多个实施例,该操作还包括执行一系列动作以将工作负载从一个工作者节点迁移到另一工作者节点,以及重新启动和更新工作者节点。这可以使用诸如但不限于以下所述的计划过程来执行。
用于执行计划过程的抽象模型的示例性实施例如下。考虑包含多个工作者节点或主机的集群,其中每个工作者节点托管多个工作负载或任务,每个工作负载或任务利用工作者节点上的一些资源。工作负载根据某个到达过程到达集群,并且在到达之后,工作负载将通过调度器或放置引擎放置在工作者节点上。一旦将工作负载放置在工作者节点上,工作负载就会保留在集群或系统中,直到其执行完成。可以通过诸如图4的更新服务代码404等迁移控制器将任务从集群中的一个工作者节点移动到集群中的另一工作者节点。在某个时间点“t”,调度管理操作或基础设施更新(例如,更新、扫描等)以在集群中的所有工作者节点上执行。在这样的操作期间,将根据更新控制器访问集群中的所有工作者节点。首先将访问的工作者节点从工作者节点上托管的所有工作负载中清空,然后在工作者节点上执行操作,此后,工作者节点被标记为已访问并且可以托管新的和/或预先存在的工作负载。
继续抽象模型且在不失一般性的情况下,在该示例中假定工作者节点根据某种顺序在x轴上排列。通过假定工作者节点的连续性和工作流的连续性(而不是离散数),可以轻松地进行分析。还可以假定扫描(工作者节点访问)过程以给定速率从左到右开始。此外,可以假定,通过以给定速率从右(未访问的工作者节点)到左(已访问的工作者节点)移动工作负载(任务),移动过程将扫描过程已经到达的右侧的工作者节点上的任务清除。这样的速率取决于源工作者节点上的工作负载(托管任务)的量。总之,给定工作者节点上的初始负载分布(在时间t之前),将计算扫描和移动过程的进度。这可以被建模为具有两个相反过程的队列(或库存)系统:到达过程和服务过程。制定初始负载分布对操作效率的影响(以访问所有工作者节点的总时间来衡量),并且获取最佳分布。后者规定了在时间t之前需要的负载偏斜。这种偏斜可以由放置引擎在时间t之前实施。
本发明的一个或多个实施例涉及用于为集群中的工作者节点的基础设施更新准备集群的计划操作。通常,本文中描述的技术适用于大多数计划问题。以下是用于执行计划过程的抽象模型的实施例的更详细描述。下面列出的是计划操作的定义和实例,以更好地说明本发明的一个或多个实施例如何有益于计划问题。集群上的操作主要包括计划任务。例如,生产集群中的工作者节点的更新是一项计划任务,因为需要有关如何顺序更新工作者节点的计划,以便一些重要的服务可以保持运行或可用,例如以满足服务级别协议(SLA)。
根据本发明的一个或多个实施例,对操作的非正式定义包括:给定一组对象/资源和一组关于它们的事实、可执行以改变这些事实的一组动作、以及一组限制,执行一组操作以实现目标(特定的一组期望事实);针对一组指定指标进行优化。打包可以用于将对象/资源分配到集群中,以使得在开始更新时,通常可以通过减少或限制限制的数目来对集群进行更优化的更新(通过一组动作来优化指标)。
根据本发明的一个或多个实施例,操作的形式定义如下。集群的状态定义为一组资源R和一组事实(关于资源的谓词)。另外,集群上的动作定义为:动作添加和/或去除集群的事实(规则);并且动作需要花费一定时间量以完成。定义了一组限制RES(关于资源的谓词)和成本函数COST(资源、谓词和时间函数)、以及一组期望结果TARGET(事实列表)。计划操作定义为:给定初始集群状态I;在循环中,对集群执行一系列操作,这些操作试图遵守RES中的限制并且优化COST中的函数以实现;并且在满足TARGET中的谓词时终止。注意,在计划操作期间,可能存在其他实体执行的其他动作,这些动作可能导致集群发生变化。
本文中参考相关附图描述本发明的各种实施例。可以设计本发明的替代实施例而不脱离本发明的范围。在以下描述和附图中,阐述了元件之间的各种连接和位置关系(例如,在上方,在下方,相邻等)。除非另有说明,否则这些连接和/或位置关系可以是直接的或间接的,并且本发明并不意图在这方面进行限制。因此,实体的耦合可以是指直接或间接耦合,并且实体之间的位置关系可以是直接或间接位置关系。此外,本文中描述的各种任务和过程步骤可以并入具有本文中未详细描述的附加步骤或功能的更全面的程序或过程中。
为了简洁起见,在本文中可以或可以不详细描述与制造和使用本发明的各方面有关的常规技术。具体地,用于实现本文中描述的各种技术特征的计算系统和具体计算机程序的各个方面是公知的。因此,为了简洁起见,很多传统的实现细节在本文中仅被简要提及,或者被完全省略而不提供公知的系统和/或处理细节。
本说明书中描述的很多功能单元被标记为模块。本发明的实施例适用于各种各样的模块实现。例如,模块可以实现为硬件电路,包括定制VLSI电路或门阵列、现成的半导体(诸如逻辑芯片、晶体管)或其他分立组件。模块也可以在诸如现场可编程门阵列、可编程阵列逻辑、可编程逻辑设备等可编程硬件设备中实现。模块也可以在用于由各种类型的处理器执行的软件中实现。所标识的可执行代码模块可以例如包括计算机指令的一个或多个物理或逻辑块,这些计算机指令可以例如被组织为对象、过程或函数。然而,所标识的模块的可执行文件不需要在物理上位于一起,而是可以包括存储在不同位置中的不同指令,这些指令当在逻辑上结合在一起时包括模块并且实现该模块的所述目的。
在一些实施例中,各种功能或动作可以在给定位置和/或结合一个或多个装置或系统的操作发生。在一些实施例中,给定功能或动作的一部分可以在第一设备或位置处执行,并且该功能或动作的其余部分可以在一个或多个附加设备或位置处执行。
在此使用的术语仅出于描述特定实施例的目的,而非旨在进行限制。如本文中使用的,单数形式“一个(a)”、“一个(an)”和“该(the)”也旨在包括复数形式,除非上下文另外明确指出。还应当理解,当在本说明书中使用时,术语“包括(comprises)”和/或“包括(comprising)”指定所述特征、整数、步骤、操作、元素和/或组件的存在,但是不排除一个或多个其他特征、整数、步骤、操作、元素、组件和/或其组的存在或添加。
以下权利要求中的所有装置或步骤加功能元件的对应结构、材料、动作和等同物旨在包括用于与其他要求保护的元件相结合执行该功能的任何结构、材料或动作,如具体要求保护的。本公开已经出于说明和描述的目的被呈现,而非意图是穷举的或限于所公开的形式。在不脱离本公开的范围和精神的情况下,很多修改和变型对于本领域普通技术人员将是很清楚的。选择和描述实施例是为了最好地解释本公开的原理和实际应用,并且使得本领域的其他普通技术人员能够理解本公开的各种实施例,这些实施例具有适合于预期的特定用途的各种修改。
本文中描绘的图是说明性的。在不脱离本公开的精神的情况下,其中描述的图或步骤(或操作)可以有很多变型。例如,可以以不同的顺序执行动作,或者可以添加、删除或修改动作。同样,术语“耦合”描述在两个元件之间具有信号路径,而非表示元件之间的直接连接并且在它们之间没有中间元件/连接。所有这些变型都被认为是本公开的一部分。
以下定义和缩写用于解释权利要求和说明书。如本文中使用的,术语“包括(comprises)”、“包括(comprising)”、“包括(includes)”、“包括(including)”、“具有(has)”、“具有(having)”、“包含(contains)”或“包含(containing)”或其任何其他变型旨在覆盖非排他性的包括。例如,包括一系列元素的组合物、混合物、过程、方法、制品或装置不必仅限于这些元素,而是可以包括未明确列出或这样的组合物、混合物、过程、方法、制品或装置所固有的其他元素。
此外,术语“示例性”在本文中用于表示“用作示例、实例或说明”。本文中描述为“示例性”的任何实施例或设计不必被解释为比其他实施例或设计优选或有利。术语“至少一个”和“一个或多个”应当被理解为包括大于或等于1的任何整数,即1、2、3、4等。术语“多个”应当被理解为包括大于或等于2的任何整数,即2、3、4、5等。术语“连接”可以包括间接“连接”和直接“连接”两者。
术语“大约”、“基本上”、“近似”及其变型旨在包括与基于提交申请时可用的设备的特定数量的测量相关的误差程度。例如,“大约”可以包括给定值的±8%或5%或2%的范围。
在任何可能的技术细节结合层面,本发明可以是系统、方法和/或计算机程序产品。计算机程序产品可以包括计算机可读存储介质,其上载有用于使处理器实现本发明的各个方面的计算机可读程序指令。
计算机可读存储介质可以是可以保持和存储由指令执行设备使用的指令的有形设备。计算机可读存储介质例如可以是――但不限于――电存储设备、磁存储设备、光存储设备、电磁存储设备、半导体存储设备或者上述的任意合适的组合。计算机可读存储介质的更具体的例子(非穷举的列表)包括:便携式计算机盘、硬盘、随机存取存储器(RAM)、只读存储器(ROM)、可擦式可编程只读存储器(EPROM或闪存)、静态随机存取存储器(SRAM)、便携式压缩盘只读存储器(CD-ROM)、数字多功能盘(DVD)、记忆棒、软盘、机械编码设备、例如其上存储有指令的打孔卡或凹槽内凸起结构、以及上述的任意合适的组合。这里所使用的计算机可读存储介质不被解释为瞬时信号本身,诸如无线电波或者其他自由传播的电磁波、通过波导或其他传输媒介传播的电磁波(例如,通过光纤电缆的光脉冲)、或者通过电线传输的电信号。
这里所描述的计算机可读程序指令可以从计算机可读存储介质下载到各个计算/处理设备,或者通过网络、例如因特网、局域网、广域网和/或无线网下载到外部计算机或外部存储设备。网络可以包括铜传输电缆、光纤传输、无线传输、路由器、防火墙、交换机、网关计算机和/或边缘服务器。每个计算/处理设备中的网络适配卡或者网络接口从网络接收计算机可读程序指令,并转发该计算机可读程序指令,以供存储在各个计算/处理设备中的计算机可读存储介质中。
用于执行本发明操作的计算机程序指令可以是汇编指令、指令集架构(ISA)指令、机器指令、机器相关指令、微代码、固件指令、状态设置数据、集成电路配置数据或者以一种或多种编程语言的任意组合编写的源代码或目标代码,所述编程语言包括面向对象的编程语言—诸如Smalltalk、C++等,以及过程式编程语言—诸如“C”语言或类似的编程语言。计算机可读程序指令可以完全地在用户计算机上执行、部分地在用户计算机上执行、作为一个独立的软件包执行、部分在用户计算机上部分在远程计算机上执行、或者完全在远程计算机或服务器上执行。在涉及远程计算机的情形中,远程计算机可以通过任意种类的网络—包括局域网(LAN)或广域网(WAN)—连接到用户计算机,或者,可以连接到外部计算机(例如利用因特网服务提供商来通过因特网连接)。在一些实施例中,通过利用计算机可读程序指令的状态信息来个性化定制电子电路,例如可编程逻辑电路、现场可编程门阵列(FPGA)或可编程逻辑阵列(PLA),该电子电路可以执行计算机可读程序指令,从而实现本发明的各个方面。
这里参照根据本发明实施例的方法、装置(系统)和计算机程序产品的流程图和/或框图描述了本发明的各个方面。应当理解,流程图和/或框图的每个方框以及流程图和/或框图中各方框的组合,都可以由计算机可读程序指令实现。
这些计算机可读程序指令可以提供给通用计算机、专用计算机或其它可编程数据处理装置的处理器,从而生产出一种机器,使得这些指令在通过计算机或其它可编程数据处理装置的处理器执行时,产生了实现流程图和/或框图中的一个或多个方框中规定的功能/动作的装置。也可以把这些计算机可读程序指令存储在计算机可读存储介质中,这些指令使得计算机、可编程数据处理装置和/或其他设备以特定方式工作,从而,存储有指令的计算机可读介质则包括一个制造品,其包括实现流程图和/或框图中的一个或多个方框中规定的功能/动作的各个方面的指令。
也可以把计算机可读程序指令加载到计算机、其它可编程数据处理装置、或其它设备上,使得在计算机、其它可编程数据处理装置或其它设备上执行一系列操作步骤,以产生计算机实现的过程,从而使得在计算机、其它可编程数据处理装置、或其它设备上执行的指令实现流程图和/或框图中的一个或多个方框中规定的功能/动作。
附图中的流程图和框图显示了根据本发明的多个实施例的系统、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段或指令的一部分,所述模块、程序段或指令的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。在有些作为替换的实现中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个连续的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图和/或流程图中的每个方框、以及框图和/或流程图中的方框的组合,可以用执行规定的功能或动作的专用的基于硬件的系统来实现,或者可以用专用硬件与计算机指令的组合来实现。
以上已经描述了本发明的各实施例,上述说明是示例性的,并非穷尽性的,并且也不限于所披露的各实施例。在不偏离所说明的各实施例的范围和精神的情况下,对于本技术领域的普通技术人员来说许多修改和变更都是显而易见的。本文中所用术语的选择,旨在最好地解释各实施例的原理、实际应用或对市场中的技术的技术改进,或者使本技术领域的其它普通技术人员能理解本文披露的各实施例。

Claims (13)

1.一种计算机实现的方法,包括:
使用处理器选择用于基础设施更新的节点,所选择的所述节点被包括在执行包括容器的工作负载的节点的集群中;
使用所述处理器阻止将来的工作负载在所选择的所述节点上被调度;
使用所述处理器将当前在所选择的所述节点上执行的工作负载迁移到所述节点的集群中包括的另一节点;
使用所述处理器更新所选择的所述节点上的基础设施代码;以及
响应于所述更新,使用所述处理器支持将来的工作负载在所选择的所述节点上被调度。
2.根据权利要求1所述的计算机实现的方法,还包括:在所述选择之前,由调度器将新工作负载引导到所述集群中的所述节点的子集,所选择的所述节点不在所述子集中。
3.根据权利要求1所述的计算机实现的方法,还包括:
使用所述处理器确定所述节点的集群中的所述节点中的所有节点是否已经被更新;以及
至少部分基于确定所述节点的集群中的所述节点中的所有节点尚未被更新,重复所述选择、所述阻止、所述迁移、所述更新和所述支持。
4.根据权利要求1所述的计算机实现的方法,其中所述方法还包括:
使用所述处理器在所选择的所述节点上测试已更新的所述基础设施代码以确定所述更新是否成功;以及
至少部分基于确定所述更新没有成功,将所述基础设施代码返回到更新前的状态,
其中所述支持还响应于确定所述更新成功。
5.根据权利要求1所述的方法,其中第二节点通过所述选择而被选择用于所述基础设施更新,并且所选择的所述节点和所述第二节点被同时更新。
6.根据权利要求1所述的方法,其中所述选择至少部分基于在所述集群中的所述节点上执行的当前工作负载。
7.根据权利要求1所述的方法,其中所述选择至少部分基于响应于所述处理器选择所选择的所述节点而执行所述基础设施更新的估计经过时间。
8.根据权利要求1所述的方法,其中所述选择至少部分基于所述集群中的每个工作负载响应于所述处理器选择所选择的所述节点将被迁移的估计次数。
9.根据权利要求1所述的方法,其中所述工作负载以类型为特征,并且所述选择至少部分基于需要在给定时间点执行的每种类型的工作负载的最小数目。
10.根据权利要求1所述的方法,其中所述阻止包括锁定所选择的所述节点,并且所述支持包括解锁所选择的所述节点。
11.一种系统,包括:
存储器,具有计算机可读指令;以及
一个或多个处理器,用于执行所述计算机可读指令,所述计算机可读指令控制所述一个或多个处理器执行根据权利要求1至10中任一项所述的方法中的步骤。
12.一种计算机可读存储介质,具有利用其实施的程序指令,所述程序指令由处理器可执行以引起所述处理器执行包括根据权利要求1至10中任一项所述的方法中的步骤的操作。
13.一种计算机系统,包括被配置为执行根据权利要求1至10中任一项所述的方法中的步骤的模块。
CN201911101071.XA 2018-11-13 2019-11-12 包括容器的集群环境中的自动基础设施更新 Pending CN111176804A (zh)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US16/188,716 US10897497B2 (en) 2018-11-13 2018-11-13 Automated infrastructure updates in a cluster environment that includes containers
US16/188,716 2018-11-13

Publications (1)

Publication Number Publication Date
CN111176804A true CN111176804A (zh) 2020-05-19

Family

ID=70551947

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201911101071.XA Pending CN111176804A (zh) 2018-11-13 2019-11-12 包括容器的集群环境中的自动基础设施更新

Country Status (2)

Country Link
US (1) US10897497B2 (zh)
CN (1) CN111176804A (zh)

Cited By (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN111538520A (zh) * 2020-07-08 2020-08-14 北京联想超融合科技有限公司 用于超融合集群的更新方法及装置、终端和存储介质
CN111897558A (zh) * 2020-07-23 2020-11-06 北京三快在线科技有限公司 容器集群管理系统Kubernetes升级方法和装置
CN112579139A (zh) * 2020-12-09 2021-03-30 北京红山信息科技研究院有限公司 一种多集群补丁更新方法、系统、服务器和存储介质
CN113051250A (zh) * 2021-03-24 2021-06-29 北京金山云网络技术有限公司 数据库集群的扩容方法和装置、电子设备和存储介质
CN113641503A (zh) * 2021-09-01 2021-11-12 上海联蔚盘云科技有限公司 多云多集群的Kubernetes管理系统及方法与设备
WO2022083742A1 (en) * 2020-10-23 2022-04-28 International Business Machines Corporation Context based risk assessment of computing resource vulnerability

Families Citing this family (15)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10977086B2 (en) * 2018-11-14 2021-04-13 Vmware, Inc. Workload placement and balancing within a containerized infrastructure
US11593583B2 (en) 2019-06-28 2023-02-28 Oracle International Corporation Method and system to implement cluster failure prediction to facilitate split brain resolution
US11108700B2 (en) * 2019-06-28 2021-08-31 Oracle International Corporation Method and system to implement messaging for cluster elections
US11403088B2 (en) * 2020-03-06 2022-08-02 Hewlett Packard Enterprise Development Lp Upgrade of hosts hosting application units of a container-based application based on analysis of the historical workload pattern of the cluster
CN113961335A (zh) * 2020-07-01 2022-01-21 中兴通讯股份有限公司 资源调度方法、资源调度系统及设备
US20220035626A1 (en) * 2020-07-31 2022-02-03 Pegasystems Inc. Cloud-independent node upgrade
ES2936652T3 (es) * 2020-08-11 2023-03-21 Deutsche Telekom Ag Procedimiento para la operación de una red de acceso de banda ancha de una red de telecomunicaciones que comprende un punto de entrega de la oficina central, un punto de entrega de la oficina central, un programa y un medio legible por ordenador
CN112199106B (zh) * 2020-10-20 2022-08-26 新华三信息安全技术有限公司 一种跨版本升级方法、装置及电子设备
KR102466231B1 (ko) * 2020-12-09 2022-11-10 대구대학교 산학협력단 오케스트레이터 환경에서의 프로세스 마이그레이션을 위한 컨테이너 관리 장치 및 관리 방법
US11469944B1 (en) * 2021-06-14 2022-10-11 Oracle International Corporation Techniques for migrating worker nodes to a new manager instance
US11411886B1 (en) * 2021-08-12 2022-08-09 International Business Machines Corporation Automatic cluster scaling based on varying workloads
US11829780B2 (en) * 2021-09-22 2023-11-28 International Business Machines Corporation Open-source container cluster hot plug adapter
US20230117962A1 (en) * 2021-10-18 2023-04-20 Sophos Limited Executable policy declarations for network security
CN114637576A (zh) * 2022-03-22 2022-06-17 支付宝(杭州)信息技术有限公司 用于生成容器分配方案的方法及装置
US11870705B1 (en) * 2022-07-01 2024-01-09 Cisco Technology, Inc. De-scheduler filtering system to minimize service disruptions within a network

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20130151681A1 (en) * 2011-12-12 2013-06-13 Microsoft Corporation Increasing availability of stateful applications
CN104094248A (zh) * 2012-02-02 2014-10-08 微软公司 分布式系统中的自更新功能
US20170366606A1 (en) * 2014-05-13 2017-12-21 Velostrata Ltd. Real Time Cloud Workload Streaming

Family Cites Families (20)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7020706B2 (en) 2002-06-17 2006-03-28 Bmc Software, Inc. Method and system for automatically updating multiple servers
US7370092B2 (en) 2002-09-12 2008-05-06 Computer Sciences Corporation System and method for enhanced software updating and revision
US20050060391A1 (en) 2003-09-16 2005-03-17 International Business Machines Corporation Autonomic cluster-based optimization
US7937455B2 (en) 2004-07-28 2011-05-03 Oracle International Corporation Methods and systems for modifying nodes in a cluster environment
US8521853B2 (en) 2007-06-29 2013-08-27 Alcatel Lucent Apparatus and method for server network management to provide zero planned retrofit downtime
US20090089777A1 (en) 2007-09-29 2009-04-02 Bruce Gordon Fuller Managing software updates in an automation environment
US20090144720A1 (en) 2007-11-30 2009-06-04 Sun Microsystems, Inc. Cluster software upgrades
US9286052B1 (en) 2011-09-15 2016-03-15 Emc Corporation Upgrading software on a pair of nodes in a clustered environment
KR102247410B1 (ko) * 2014-02-07 2021-05-04 오라클 인터내셔날 코포레이션 모바일 클라우드 서비스 아키텍처
US10355946B1 (en) * 2015-06-09 2019-07-16 Hortonworks, Inc. Capacity planning
US10474489B2 (en) * 2015-06-26 2019-11-12 Intel Corporation Techniques to run one or more containers on a virtual machine
US10509685B2 (en) * 2015-12-14 2019-12-17 VCE IP Holding Company, LLC Methods, systems, and computer readable mediums for workload clustering
US10237201B2 (en) * 2016-05-30 2019-03-19 Dell Products, L.P. Quality of service (QoS) based device for allocating compute workloads to hosts providing storage and network services in software-based data center
US10805242B2 (en) * 2016-12-23 2020-10-13 Intel Corporation Techniques for a configuration mechanism of a virtual switch
US10423455B2 (en) * 2017-02-03 2019-09-24 Microsoft Technology Licensing, Llc Method for deploying virtual machines in cloud computing systems based on predicted lifetime
US10613961B2 (en) * 2018-02-05 2020-04-07 Red Hat, Inc. Baselining for compute resource allocation
US20190250946A1 (en) * 2018-02-13 2019-08-15 International Business Machines Corporation Migrating a software container taking into account resource constraints
US10944654B2 (en) * 2018-06-06 2021-03-09 Servicenow, Inc. Discovery and mapping of containerized software applications
US11188368B2 (en) * 2018-10-31 2021-11-30 Nutanix, Inc. Asynchronous workload migration control
US11216314B2 (en) * 2018-11-02 2022-01-04 EMC IP Holding Company LLC Dynamic reallocation of resources in accelerator-as-a-service computing environment

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20130151681A1 (en) * 2011-12-12 2013-06-13 Microsoft Corporation Increasing availability of stateful applications
CN104094248A (zh) * 2012-02-02 2014-10-08 微软公司 分布式系统中的自更新功能
US20170366606A1 (en) * 2014-05-13 2017-12-21 Velostrata Ltd. Real Time Cloud Workload Streaming

Cited By (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN111538520A (zh) * 2020-07-08 2020-08-14 北京联想超融合科技有限公司 用于超融合集群的更新方法及装置、终端和存储介质
CN111897558A (zh) * 2020-07-23 2020-11-06 北京三快在线科技有限公司 容器集群管理系统Kubernetes升级方法和装置
WO2022083742A1 (en) * 2020-10-23 2022-04-28 International Business Machines Corporation Context based risk assessment of computing resource vulnerability
GB2615042A (en) * 2020-10-23 2023-07-26 Ibm Context based risk assessment of computing resource vulnerability
US11956266B2 (en) 2020-10-23 2024-04-09 International Business Machines Corporation Context based risk assessment of a computing resource vulnerability
CN112579139A (zh) * 2020-12-09 2021-03-30 北京红山信息科技研究院有限公司 一种多集群补丁更新方法、系统、服务器和存储介质
CN113051250A (zh) * 2021-03-24 2021-06-29 北京金山云网络技术有限公司 数据库集群的扩容方法和装置、电子设备和存储介质
CN113641503A (zh) * 2021-09-01 2021-11-12 上海联蔚盘云科技有限公司 多云多集群的Kubernetes管理系统及方法与设备
CN113641503B (zh) * 2021-09-01 2024-05-14 上海联蔚盘云科技有限公司 多云多集群的Kubernetes管理系统及方法与设备

Also Published As

Publication number Publication date
US20200153898A1 (en) 2020-05-14
US10897497B2 (en) 2021-01-19

Similar Documents

Publication Publication Date Title
US10897497B2 (en) Automated infrastructure updates in a cluster environment that includes containers
US11593149B2 (en) Unified resource management for containers and virtual machines
US11061718B2 (en) Pattern-based artificial intelligence planner for computer environment migration
US11263084B2 (en) Saving program execution state
US10873623B2 (en) Dynamically modifying a cluster of computing nodes used for distributed execution of a program
US9826031B2 (en) Managing distributed execution of programs
US9276987B1 (en) Identifying nodes already storing indicated input data to perform distributed execution of an indicated program in a node cluster
US8321558B1 (en) Dynamically monitoring and modifying distributed execution of programs
US8874457B2 (en) Concurrent scheduling of plan operations in a virtualized computing environment
JP2018077846A (ja) 仮想マシン再配置プロトコルの生成を含む方法、仮想マシン再配置を容易にするためのシステムおよびプログラム
WO2018208405A1 (en) Increasing virtual machine availability during server updates
WO2022042334A1 (en) Compilation strategy for sharable application snapshot
US10901798B2 (en) Dependency layer deployment optimization in a workload node cluster
US10642718B2 (en) Framework for testing distributed systems
US11750451B2 (en) Batch manager for complex workflows
Harichane et al. KubeSC‐RTP: Smart scheduler for Kubernetes platform on CPU‐GPU heterogeneous systems
US11656888B2 (en) Performing an application snapshot using process virtual machine resources
US11847611B2 (en) Orchestrating and automating product deployment flow and lifecycle management
AU2020418595A1 (en) Implementing workloads in a multi-cloud environment
US11995479B2 (en) Implementing workloads in a multi-cloud environment with data migration between cloud vendors
US20240069944A1 (en) Coordinated hooking mechanism for checkpointing virtual machines
US20230214265A1 (en) High availability scheduler event tracking
Chen et al. TopCluster: A hybrid cluster model to support dynamic deployment in Grid
Brightwell Hobbes: OS and Runtime Support for Application Composition.

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