CN113760441A - 容器创建方法、装置、电子设备及存储介质 - Google Patents
容器创建方法、装置、电子设备及存储介质 Download PDFInfo
- Publication number
- CN113760441A CN113760441A CN202010900719.6A CN202010900719A CN113760441A CN 113760441 A CN113760441 A CN 113760441A CN 202010900719 A CN202010900719 A CN 202010900719A CN 113760441 A CN113760441 A CN 113760441A
- Authority
- CN
- China
- Prior art keywords
- available
- rack
- list
- racks
- current
- 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
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F15/00—Digital computers in general; Data processing equipment in general
- G06F15/16—Combinations of two or more digital computers each having at least an arithmetic unit, a program unit and a register, e.g. for a simultaneous processing of several programs
- G06F15/177—Initialisation or configuration control
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5005—Allocation of resources, e.g. of the central processing unit [CPU] to service a request
- G06F9/5027—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals
- G06F9/5044—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals considering hardware capabilities
-
- 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
-
- 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
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5061—Partitioning or combining of resources
- G06F9/5077—Logical partitioning of resources; Management or configuration of virtualized resources
-
- 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
- G06F2209/00—Indexing scheme relating to G06F9/00
- G06F2209/50—Indexing scheme relating to G06F9/50
- G06F2209/5021—Priority
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Computer Hardware Design (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本公开实施例提供了一种容器创建方法、装置、电子设备及存储介质。该方法包括:获取可用机架列表和可用网络地址列表,其中,可用机架列表包括不同可用区的多个可用机架,每个可用机架中包括至少一个服务器节点,可用网络地址列表包括至少一个可用网络地址;对可用机架列表中的可用机架中的空余服务器节点进行定位;在空余服务器节点上,创建与可用网络地址对应的当前容器;更新可用网络地址列表;根据可用机架列表中的可用机架的资源占用信息,对可用机架列表中的可用机架进行重新排序;以及,根据重新排序后的可用机架列表中的可用机架中的空余服务器节点和更新后的可用网络地址列表,创建其他容器。
Description
技术领域
本公开实施例涉及计算机技术领域,更具体地,涉及一种容器创建方法、装置、电子设备及存储介质。
背景技术
随着专有云平台中产品的不断壮大,平台中的各类产品服务和容器也越来越多。如果全部容器都由运维人员手动维护,则无疑会带来很大的人员消耗和不确定因素,导致运维成本和故障率增加。
为了解决上述问题,各种容器集群管理平台应运而生。容器集群管理平台可以提供容器编排、资源调度、弹性伸缩、部署管理和服务发现等一系列功能。其中,容器集群管理平台如Kubernates(简称K8S)。
在实现本公开构思的过程中,发明人发现相关技术中至少存在如下问题:采用相关技术较难以实现容器的均衡排布。
发明内容
有鉴于此,本公开实施例提供了一种容器创建方法、装置、电子设备及存储介质。
本公开实施例的一个方面提供了一种容器创建方法,该方法包括:获取可用机架列表和可用网络地址列表,其中,上述可用机架列表包括不同可用区的多个可用机架,每个上述可用机架中包括至少一个服务器节点,上述可用网络地址列表包括至少一个可用网络地址;对上述可用机架列表中的可用机架中的空余服务器节点进行定位;在上述空余服务器节点上,创建与上述可用网络地址对应的当前容器;更新上述可用网络地址列表;根据上述可用机架列表中的可用机架的资源占用信息,对上述可用机架列表中的可用机架进行重新排序;以及,根据重新排序后的可用机架列表中的可用机架中的空余服务器节点和更新后的可用网络地址列表,创建其他容器。
根据本公开的实施例,上述获取可用机架列表,包括:获取每个机架中的每个服务器节点的总资源;获取每个上述服务器节点的已使用资源,其中,上述已使用资源为已创建容器所使用的资源;根据每个上述服务器节点的总资源和每个上述服务器节点的已使用资源,确定可用机架;以及,根据上述可用机架生成上述可用机架列表。
根据本公开的实施例,上述可用机架列表中的多个上述可用机架按照优先级进行排序。
根据本公开的实施例,通过如下方式实现上述可用机架列表中的多个上述可用机架按照优先级进行排序:获取已创建容器列表,其中,上述已创建容器列表包括多个已创建容器,每个上述已创建容器具有对应的服务器节点、所属应用和所属分组;确定与每个上述服务器节点对应的创建数量信息,其中,上述创建数量信息包括属于同一应用的已创建容器的数量和属于同一分组的已创建容器的数量;以及,根据与每个上述服务器节点对应的创建数量信息对上述可用机架列表中的多个上述可用机架进行优先级排序。
根据本公开的实施例,上述对上述可用机架列表中的可用机架中的空余服务器节点进行定位,包括:将上述可用机架列表中的优先级最高的可用机架确定为当前机架;确定上述当前机架的空余服务器节点数量是否大于预设阈值;在上述当前机架的空余服务器节点数量大于上述预设阈值的情况下,对上述当前机架中的空余服务器节点进行定位;在上述当前机架的空余服务器节点数量小于或等于上述预设阈值的情况下,将上述可用机架列表中的下一优先级的可用机架确定为当前机架;以及,返回执行确定上述当前机架的空余服务器节点数量是否大于上述预设阈值的操作,直至对上述当前机架中的空余服务器节点进行定位。
根据本公开的实施例,上述根据上述可用机架列表中的可用机架的资源占用信息,对上述可用机架列表中的可用机架进行重新排序,包括:获取上述当前容器所属的应用和所属的分组;获取上述可用机架列表中的上述当前机架的上一资源占用信息;获取上述可用机架列表中的其他机架的上一资源占用信息;根据上述当前容器所属的应用、上述当前容器所属的分组和上述当前机架的上一资源占用信息,确定上述当前机架的当前资源占用信息;以及,根据上述可用机架列表中的上述当前机架的当前资源占用信息和上述可用机架列表中的其他机架的上一资源占用信息,对上述可用机架列表中的可用机架进行重新排序。
根据本公开的实施例,上述可用机架列表中的上述当前机架和其他机架的上一资源占用信息包括属于同一应用的容器数量、属于同一分组的容器数量和第一坑位数量,其中,上述第一坑位数量为机架的总资源与全部创建的容器所使用资源的比值。
根据本公开的实施例,上述根据上述可用机架列表中的上述当前机架的当前资源占用信息和上述可用机架列表中的其他机架的上一资源占用信息,对上述可用机架列表中的可用机架进行重新排序,包括:根据预设机架优先级规则、上述可用机架列表中的上述当前机架的当前资源占用信息和上述可用机架列表中的其他机架的上一资源占用信息,对上述可用机架列表中的可用机架进行重新排序,其中,上述预设机架优先级规则,包括:属于同一应用下的容器数量越少的可用机架所对应的优先级越高;如果属于同一应用下的容器数量相同,则属于同一分组的容器数量越少的可用机架所对应的优先级越高;以及,如果属于同一分组的容器数量相同,则第一坑位数量越多的可用机架所对应的优先级越高。
根据本公开的实施例,该方法还包括:根据上述可用机架列表中的可用机架中的服务器节点的资源占用信息,对上述可用机架列表中的可用机架中的服务器节点进行重新排序;上述根据重新排序后的可用机架列表中的可用机架中的空余服务器节点和更新后的可用网络地址列表创建其他容器,包括:根据重新排序后的可用机架列表中的可用机架和可用机架中的服务器节点,确定可用机架中的新的空余服务器节点;以及,根据上述新的空余服务器节点和更新后的可用网络地址列表创建其他容器。
根据本公开的实施例,上述可用机架列表中的可用机架中的服务器节点的资源占用信息包括属于同一应用的容器数量、属于同一分组的容器数量和第二坑位数量,其中,上述第二坑位数量为服务器节点的总资源与全部创建的容器所使用资源的比值。
根据本公开的实施例,所根据上述可用机架列表中的可用机架中的服务器节点的资源占用信息,对上述可用机架列表中的可用机架中的服务器节点进行重新排序,包括:根据预设服务器节点优先级规则和上述可用机架列表中的可用机架中的服务器节点的资源占用信息,对上述可用机架列表中的可用机架中的服务器节点进行重新排序,其中,上述预设服务器节点优先级规则,包括:属于同一应用下的容器数量越少的服务器节点所对应的优先级越高;如果属于同一应用下的容器数量相同,则属于同一分组的容器数量越少的服务器节点所对应的优先级越高;以及,如果属于同一分组的容器数量相同,则第二坑位数量越多的服务器节点所对应的优先级越高。
本公开实施例的另一个方面提供了一种容器创建装置,该装置包括:获取模块,用于获取可用机架列表和可用网络地址列表,其中,上述可用机架列表包括不同可用区的多个可用机架,每个上述可用机架中包括至少一个服务器节点,上述可用网络地址列表包括至少一个可用网络地址;定位模块,用于对上述可用机架列表中的可用机架中的空余服务器节点进行定位;第一创建模块,用于在上述空余服务器节点上,创建与上述可用网络地址对应的当前容器;更新模块,用于更新上述可用网络地址列表;第一排序模块,用于根据上述可用机架列表中的可用机架的资源占用信息,对上述可用机架列表中的可用机架进行重新排序;以及,第二创建模块,用于根据重新排序后的可用机架列表中的可用机架中的空余服务器节点和更新后的可用网络地址列表,创建其他容器。
本公开实施例的另一个方面提供了一种电子设备,该电子设备包括:一个或多个处理器;存储器,用于存储一个或多个程序,其中,当所述一个或多个程序被所述一个或多个处理器执行时,使得所述一个或多个处理器实现如上所述的方法。
本公开实施例的另一个方面提供了一种计算机可读存储介质,其上存储有可执行指令,该指令被处理器执行时使处理器实现如上所述的方法。
本公开实施例的另一个方面提供了一种计算机程序,所述计算机程序包括计算机可执行指令,所述指令在被执行时用于实现如上所述的方法。
根据本公开的实施例,通过获取可用机架列表和可用网络地址列表,可用机架列表包括不同可用区的多个可用机架,每个可用机架中包括至少一个服务器节点,可用网络地址列表包括至少一个可用网络地址,对可用机架列表中的可用机架中的空余服务器节点进行定位,在空余服务器节点上,创建与可用网络地址对应的当前容器,更新可用网络地址列表,根据可用机架列表中的可用机架的资源占用信息,对可用机架列表中的可用机架进行重新排序,并根据重新排序后的可用机架列表中的可用机架中的空余服务器节点和更新后的可用网络地址列表,创建其他容器。由于在空余服务器节点上,每创建一个容器后,便根据可用机架列表中的可用机架的资源占用信息,对可用机架列表中的可用机架进行重新排序,再基于重新排序后的可用机架列表中的可用机架中的空余服务器节点和更新后的可用网络地址列表,创建下一个容器,其中,空余服务器节点来自不同可用区的可用机架,因此,实现了容器的均衡排布,因而,至少部分地克服了采用相关技术较难以实现容器的均衡排布的技术问题。此外,由于实现了容器的均衡排布,因此,满足了跨可用区、跨机架和服务器节点高可用的服务要求,进而有效避免了系统瘫痪情况的发生。
附图说明
通过以下参照附图对本公开实施例的描述,本公开的上述以及其他目的、特征和优点将更为清楚,在附图中:
图1示意性示出了根据本公开实施例的一种服务树的示意图;
图2示意性示出了相关技术中的一种实例排布的示意图;
图3示意性示出了根据本公开实施例的可以应用容器创建方法的示例性系统架构;
图4示意性示出了根据本公开实施例的一种容器创建方法的流程图;
图5示意性示出了根据本公开的实施例的另一种容器创建方法的流程图;
图6示意性示出了根据本公开的实施例的一种计算资源流程的流程图;
图7示意性示出了根据本公开的实施例的一种容器创建方法的应用示意图;
图8示意性示出了根据本公开实施例的一种容器创建装置的框图;以及
图9示意性示出了根据本公开实施例的适于实现容器创建方法的电子设备的框图。
具体实施方式
以下,将参照附图来描述本公开的实施例。但是应该理解,这些描述只是示例性的,而并非要限制本公开的范围。在下面的详细描述中,为便于解释,阐述了许多具体的细节以提供对本公开实施例的全面理解。然而,明显地,一个或多个实施例在没有这些具体细节的情况下也可以被实施。此外,在以下说明中,省略了对公知结构和技术的描述,以避免不必要地混淆本公开的概念。
在此使用的术语仅仅是为了描述具体实施例,而并非意在限制本公开。在此使用的术语“包括”、“包含”等表明了所述特征、步骤、操作和/或部件的存在,但是并不排除存在或添加一个或多个其他特征、步骤、操作或部件。
在此使用的所有术语(包括技术和科学术语)具有本领域技术人员通常所理解的含义,除非另外定义。应注意,这里使用的术语应解释为具有与本说明书的上下文相一致的含义,而不应以理想化或过于刻板的方式来解释。
在使用类似于“A、B和C等中至少一个”这样的表述的情况下,一般来说应该按照本领域技术人员通常理解该表述的含义来予以解释(例如,“具有A、B和C中至少一个的系统”应包括但不限于单独具有A、单独具有B、单独具有C、具有A和B、具有A和C、具有B和C、和/或具有A、B、C的系统等)。在使用类似于“A、B或C等中至少一个”这样的表述的情况下,一般来说应该按照本领域技术人员通常理解该表述的含义来予以解释(例如,“具有A、B或C中至少一个的系统”应包括但不限于单独具有A、单独具有B、单独具有C、具有A和B、具有A和C、具有B和C、和/或具有A、B、C的系统等)。
本公开实施例提供的技术方案可以用于针对专有云场景下K8S的容器排布问题。为了更好地理解本公开实施例的技术方案,首先对本公开实施例所涉及的基本概念进行说明。
专有云是云服务商可以为客户在其自己的数据中心内部署完整的云计算服务。专有云中资源全部由云服务商提供,但是数据不论在物理上还是网络上都是隔离的,仅能通过内网访问。
可用区是在同个地域下,电力和网络相互独立的数据中心。由于不同可用区的可用性是互不影响的,因此,客户业务系统的服务器节点可以通过跨可用区部署,这在很大程度上提高了可用性。
机架是包括多个服务器节点,并为多个服务器节点提供统一的供电和网络接入的一体式机柜。
服务器节点是物理服务器设备。
跨可用区是将多个容器分配到不同的可用区上。
跨机架是将多个容器分配到同一可用区的不同的机架上。
跨服务器节点是将多个容器分配到同一机架上的不同服务器节点上。
高可用是将一个系统中的多个容器进行均衡部署,当一个服务器节点由于故障不能正常运行时,能够确保没有故障的服务器节点上的容器可以正常运行,并对外提供服务,以保障系统的可用性。
集群是计算、存储和网络资源的集合。
产品线是专有云上的一款云平台产品,例如云主机产品。
系统是产品线上的一个独立服务模块。产品线可以包括一个或多个系统。
应用是系统中的一个独立功能模块。系统可以包括一个或多个应用。
分组是解决应用中不同场景问题的独立模块。应用可以包括一个或多个分组。分组用于管理容器运行需要的环境变量和外置配置,其是部署的最小单位。
Node节点是指集群中的工作节点,其上运行真正的应用程序。在Node节点上运行K8S的Kubelet和Proxy,Kubelet和Proxy用于负责Pod的创建、启动、监控、重启、销毁和实现软件模式的负载均衡。Node节点可以包括Node地址、Node的运行状态、Node系统容量和其他信息。Node地址包括主机的网络地址或主机的标识。Node系统容量表示Node节点可用的系统资源,可以包括CPU、内存和最大可调度Pod数量等。
Pod是可以在K8S中创建和管理的最小的可部署的工作单元。Pod可以包括一个或多个紧密相关的容器,如Docker容器,这些容器共享存储、网络和如何运行容器的声明。Pod中的容器会作为一个整体被Master节点调度到同一个Node节点上运行。Pod相当于逻辑主机,每个Pod具有对应的网络地址,属于同一Pod的不同容器共享相同的网络地址和端口空间。每个Pod的网络地址会随着Pod的销毁和重启而发生变化。
Service是一组提供相同服务的Pod的对外访问接口。Service具有网络地址和端口,Service为Pod提供了负载均衡。
Controller是用于管理Pod的。Controller中定义了Pod的部署特性,如包括几个副本、在什么样的Node节点上运行。K8S中运行Pod由Controller执行,访问Pod由Service执行。
Master节点是集群的主节点,用于承载K8S的控制和管理整个集群的控制面板,其上运行着与集群管理相关的一组进程ETCD、API Server、Controller Manager和Scheduler。其中,API Server、Controller Manager和Scheduler组成了K8S的总控中心,这些进程实现了集群的资源管理、Pod调度、弹性伸缩、安全控制、系统监控和纠错等管理功能。
ETCD是高可用的分布式键值数据库,可以用于持久化存储集群中所有的资源对象。即主要用于存储集群的配置信息和各种资源的状态信息。当数据发生变化时,ETCD会快速地通知K8S的相关组件。
API(Application Programming Interface,应用程序编程接口)Server是K8S对外的唯一接口,全部请求都需要通过这个接口进行通信。API Server提供了操作ETCD的封装接口,封装接口基本上是集群中资源对象的增删改查以及监听资源变化的接口。
Controller Manager是集群内部的管理控制中心,其主要用于实现管理集群的各种资源,保证资源处于预期的状态。Controller Manager可以包括ReplicationController(RC)、Endpoints Controller、Namespace Controller和ServiceaccountsController等。其中,RC用于定义Pod、Pod需要运行的副本数量和需要监控的Pod标签。
Scheduler是集群中的调度器,其主要用于确定将Pod分配到哪个Node上运行。
Kubelet是用于负责Node节点上的Pod的创建、修改、监控和删除等全生命周期管理。同时,向Master节点报告Node节点的状态信息。
Proxy是用于实现Service的代理与软件模式的负载均衡器。Proxy是API Server的一个反向代理服务器。在K8S集群外部的客户端可以通过Proxy访问API Server。
实例是具有相同配置,并用于支持分组功能的多个资源分配单位。多个容器支持一个分组的高可用。
超售系数是云服务商将物理服务器上的物理核逻辑分为多个虚拟核,多个虚拟核共享同一物理核的功能,并采用按时间分片等方式实现对物理核的资源的使用。通过超售系数云服务商能够将资源分配给更多的租户,进而提高了资源利用率。
为了解决的容器排布问题,相关技术中的解决方案为在K8S的Scheduler中增加过滤或者优选策略。
在实现本公开构思的过程中,发明人发现相关技术中的解决方案没有考虑多可用区和多机架中的服务器节点的位置分布,而由于专有云所涉及的产品和服务众多,并且对服务高可用有非常严格的要求,因此,采用相关技术中的解决方案较难实现容器的均衡排布,这里所述的均衡排布是指同一应用下的容器在可用区、机架和服务器节点三个层面上的均衡排布,进而也就较难满足跨可用区、跨机架和服务器节点高可用的服务要求。
发明人发现为了实现容器的均衡排布,以保证服务跨可用区、跨机架和服务器节点高可用,需要将同一应用下的不同容器优先分配到不同的可用区,将同一可用区上的容器优先分配到不同的机架上,将同一机架上的容器优先分配到不同的服务器节点上,基于上述,本公开实施例提供了一种实现容器均衡排布的方案。需要说明的是,由于在确定将容器分配到哪个服务器节点后,需要在对应的服务器节点创建容器,因此,实现容器的均衡创建即是实现容器的均衡排布。
为了更好地管理集群中的服务,本公开实施例采用高度为4的树形结构(即服务树)来存储完整的集群服务。图1示意性示出了根据本公开实施例的一种服务树的示意图。如图1所示,服务树包括由上至下的租户、应用程序、分组和实例。其中,最顶层的租户用于管理整个集群中的配额信息。第二层的应用程序用于管理部署模块和环境变量信息。第三层的分组用于管理程序版本、配置版本、容器规格和环境变量,第四层的实例用于管理容器和网络地址信息。服务树中的每个实例对应K8S中的一个Pod(即一组容器)。需要说明的是,本公开实施例中所述的实现容器的均衡排布即是实现实例的均衡排布。
图2示意性示出了相关技术中的一种实例排布的示意图。如图2所示,包括机架1、机架2和机架3,每个机架包括四个服务器节点。包括应用1、应用2和应用3。其中,应用2包括分组1、分组2和分组3。分组1包括实例1,分组2包括实例2,分组3包括实例3。采用相关技术将同属于应用2的实例1、实例2和实例3分别分配到机架1上的服务器节点、机架2上的服务器节点和机架2上的服务器节点。由此可见,采用相关技术将同属于应用2的实例2和实例3分配到了同一机架,即采用相关技术没有实现容器的均衡排布。这是由于相关技术并不能够识别可用区和机架,因此,同一应用下的多个实例可能被分配到同一可用区或者同一机架上。而如果可用区的专线或者机架出现问题,则容易导致系统瘫痪而影响到服务的整体功能。本公开实施例所提供的技术方案即是用来解决上述问题。下面将结合具体实施例进行说明。
本公开的实施例提供了一种容器创建方法、装置、电子设备及存储介质。该方法包括容器创建过程。在容器创建过程中,获取可用机架列表和可用网络地址列表,对可用机架列表中的机架中的空余服务器节点进行定位,在空余服务器节点上,创建与可用网络地址对应的当前容器,更新可用网络地址列表,根据可用机架列表中的可用机架的资源占用信息,对可用机架列表中的可用机架进行重新排序,并根据重新排序后的可用机架列表中的可用机架中的空余服务器节点和更新后的可用网络地址列表,创建其他容器。
图3示意性示出了根据本公开实施例的可以应用容器创建方法的示例性系统架构300。需要注意的是,图3所示仅为可以应用本公开实施例的系统架构的示例,以帮助本领域技术人员理解本公开的技术内容,但并不意味着本公开实施例不可以用于其他设备、系统、环境或场景。
如图3所示,根据该实施例的系统架构300可以包括智能排布系统、主节点(Master节点)和工作节点(Node节点)。其中,智能排布系统包括API网关、分布式键值数据库(ETCD)、智能资源排布和资源调度。主节点包括主节点1、主节点2和主节点3。与主节点1对应的工作节点为工作节点1和工作节点2。每个主节点包括应用程序编程接口服务器(APIServer)、调度器(Scheduler)、分布式键值数据库(ETCD)和管理控制中心(ControllerManager)。每个工作节点包括Kubelet、代理服务器(Proxy)和Pod。每个Pod包括一个或多个容器。
现有的K8S架构包括图3中的主节点(Master节点)和工作节点(Node节点)。现有的基于K8S创建容器的流程如下:通过Kubectl生成RC请求信息,并将该RC请求信息通过APIServer发送给ETCD,ETCD存储该RC请求信息,其中,RC请求信息包括待创建Pod、待创建Pod所对应的副本数量和待创建Pod的标签。
Controller Manager通过API Server中的监听资源变化接口监听到RC事件,则获取RC请求信息。如果确定当前集群中不存在待创建Pod,则根据RC请求信息创建Pod,并通过API Server发送给ETCD。ECTD存储Pod。
Scheduler通过API Server中的监听资源变化接口监听到RC事件,则执行调度流程,以生成分配关系,其中,分配关系为Pod与运行Pod的目标Node节点,并通过API Server将分配关系发送给ETCD,ETCD存储分配关系。
在目标Node节点上运行的Kubelet通过API Server监测到Pod,则根据RC请求信息启动Pod,直至到达Pod的生命周期。
如图3所示,本公开实施例在现有的K8S架构上增加了智能排布系统。其中,智能排布系统中的API网关取代了K8S中的Master节点的API Server,作为整个集群的唯一入口。智能排布系统接管集群中容器的分配和部分调度工作。
需要说明的是,由于本公开实施例中的智能排布系统能够独立实现,并且可以无侵入的加入到K8S中,因此,智能排布系统能够应用于各种K8S集群环境,而对原有系统没有影响。
还需要说明的是,本公开实施例所提供的容器创建方法一般可以由智能排布系统执行,智能排布系统可以设置于服务器或服务器集群中。相应地,本公开实施例所提供的容器创建装置一般可以设置于服务器或服务器集群中。
图4示意性示出了根据本公开实施例的一种容器创建方法的流程图。
如图4所示,该方法包括操作S410~S460。
在操作S410,获取可用机架列表和可用网络地址列表,其中,可用机架列表包括不同可用区的多个可用机架,每个可用机架中包括至少一个服务器节点,可用网络地址列表包括至少一个可用网络地址。
在本公开的实施例中,可用机架列表可以包括多个可用机架,不同可用机架可能属于不同的可用区,每个可用机架可以包括至少一个服务器节点。可用机架列表中的多个可用机架可以按照优先级排序。
示例性的,如可用机架列表包括可用机架1、可用机架2和可用机架3。其中,可用机架1和可用机架2属于可用区1,可用机架3属于可用区2。可用机架1上设置有服务器节点1、服务器节点2和服务器节点3。可用机架2上设置有服务器节点4和服务器节点5。可用机架3上设置有服务器节点6、服务器节点7和服务器节点8。
可用网络地址列表可以包括至少一个可用网络地址,其中,每个可用网络地址指可用于设置Pod的网络地址但还未使用的网络地址。可用网络地址列表可以通过如下方式获得:获取总网络地址列表。获取已分配网络地址列表。根据总网络地址列表和已分配网络地址列表,确定可用网络地址列表。其中,已分配网络地址列表包括至少一个已分配网络地址,每个已分配网络地址指已设置Pod的网络地址。总网络地址列表中的每个网络地址可以用于设置Pod。根据总网络地址列表和已分配网络地址列表,确定可用网络地址列表,可以包括:将总网络地址列表减去已分配网络地址列表,得到可用网络地址列表。
在操作S420,对可用机架列表中的可用机架中的空余服务器节点进行定位。
在操作S430,在空余服务器节点上,创建与可用网络地址对应的当前容器。
在本公开的实施例中,可用机架列表中的可用机架可能存在空余服务器节点,也可能不存在空余服务器节点。空余服务器节点可以指具有空余资源的服务器节点。空余资源可以理解为具有设置容器的资源。
为了在空余服务器节点上创建当前容器,需要确定可用机架列表中的可用机架是否存在空余服务器节点。如果存在空余服务器节点,则定位空余服务器节点。需要说明的是,由于可用机架列表中包括多个可用机架,因此,可以按照预设顺序依次确定每个可用机架是否存在空余服务器节点,直至确定出空余服务器节点。此外,由于可用机架列表中的多个可用机架可以按照优先级排序,因此,可以按照优先级由高到低的顺序依次确定每个可用机架是否存在空余服务器节点。
根据本公开的实施例,在确定空余服务器节点后,可以从可用网络地址列表中选择一个可用网络地址作为目标网络地址,在空余服务器节点上创建与目标网络地址对应的当前容器。在空余服务器节点上创建与目标网络地址对应的当前容器,可以包括:在空余服务器节点上创建与目标网络地址对应的当前Pod,在当前Pod中创建当前容器实例。
在操作S440,更新可用网络地址列表。
在本公开的实施例中,在空余服务器节点上,创建与可用网络地址对应的当前容器后,这里的可用网络地址可以指目标网络地址,由于在目标网络地址上创建了对应的当前容器,因此,目标网络地址由可用网络地址变成了已分配网络地址,相应的,可用网络地址列表中所包括的可用网络地址将发生变化,需要更新可用网络地址列表。
根据本公开的实施例,更新可用网络地址列表可用包括删除可用网络地址列表中目标网络地址,得到更新后的可用网络地址列表。
在操作S450,根据可用机架列表中的可用机架的资源占用信息,对可用机架列表中的可用机架进行重新排序。
在本公开的实施例中,可用机架的资源占用信息可以表示可用机架上设置的容器所占用的资源。可用机架的资源占用信息可以包括属于同一应用的容器数量、属于同一分组的容器数量和第一坑位数量,其中,第一坑位数量为可用机架的总资源数量与全部创建的容器所使用资源数量的比值。
根据本公开的实施例,由于在空余服务器节点上,创建与可用网络地址对应的当前容器后,可用机架列表中的可用机架的资源占用信息便发生了变化,因此,需要可用机架列表中的可用机架进行重新排序,以得到重新排序后的可用机架列表。
根据可用机架列表中的可用机架的资源占用信息,对可用机架列表中的可用机架进行重新排序,可以包括:获取当前容器所属的应用和所属的分组。获取可用机架列表中的当前机架的上一资源占用信息和其他机架的上一资源占用信息。根据当前容器所属的应用、当前容器所属的分组和当前机架的上一资源占用信息,确定当前机架的当前资源占用信息。根据可用机架列表中的当前机架的当前资源占用信息和可用机架列表中的其他机架的上一资源占用信息,对可用机架列表中的机架进行重新排序。其中,当前机架可以指可用机架列表中的优先级最高的可用机架。
在操作S460,根据重新排序后的可用机架列表中的可用机架中的空余服务器节点和更新后的可用网络地址列表,创建其他容器。
在本公开的实施例中,每次创建一个容器后,便需要更新可用网络地址列表,以及,对可用机架列表中的机架进行重新排序,以进行下一容器的创建,直至完成全部容器的创建。由于是在对应的空余服务器节点上创建容器,因此,也相当于将各个容器分配到了对应的空余服务器节点上。
根据本公开的实施例,可以获取资源请求,其中,资源请求可以包括待创建容器数量。响应资源请求,获取当前可用机架列表和当前可用网络地址列表。对当前可用机架列表中的可用机架中的空余服务器节点进行定位。在空余服务器节点上,创建与当前可用网络地址对应的当前容器。更新当前可用网络地址列表,得到新的可用网络地址列表,并将新的网络地址列表作为当前可用网络地址列表。根据当前可用机架列表中的可用机架的资源占用信息,对当前可用机架列表中的可用机架进行重新排序,得到新的可用机架列表,并将新的可用机架列表作为当前可用机架列表。重复执行对当前可用机架列表中的可用机架中的空余服务器节点进行定位,在空余服务器节点上,创建与当前可用网络地址对应的当前容器,直至完成待创建容器数量的容器的创建。
需要说明的是,资源请求还可以包括待创建容器规格、待创建容器所属的应用和待创建容器所属的分组。待创建容器规格可以指待创建容器所需要的CPU和内存。
根据本公开实施例的技术方案,通过获取可用机架列表和可用网络地址列表,可用机架列表包括不同可用区的多个可用机架,每个可用机架中包括至少一个服务器节点,可用网络地址列表包括至少一个可用网络地址,对可用机架列表中的可用机架中的空余服务器节点进行定位,在空余服务器节点上,创建与可用网络地址对应的当前容器,更新可用网络地址列表,根据可用机架列表中的可用机架的资源占用信息,对可用机架列表中的可用机架进行重新排序,并根据重新排序后的可用机架列表中的可用机架中的空余服务器节点和更新后的可用网络地址列表,创建其他容器。由于在空余服务器节点上,每创建一个容器后,便根据可用机架列表中的可用机架的资源占用信息,对可用机架列表中的可用机架进行重新排序,再基于重新排序后的可用机架列表中的可用机架中的空余服务器节点和更新后的可用网络地址列表,创建下一个容器,其中,空余服务器节点来自不同可用区的可用机架,因此,实现了容器的均衡排布,因而,至少部分地克服了采用相关技术较难以实现容器的均衡排布的技术问题。此外,由于实现了容器的均衡排布,因此,满足了跨可用区、跨机架和服务器节点高可用的服务要求,进而有效避免了系统瘫痪情况的发生。
可选地,在上述技术方案的基础上,获取可用机架列表,可以包括:获取每个机架中的每个服务器节点的总资源。获取每个服务器节点的已使用资源,其中,已使用资源为已创建容器所使用的资源。根据每个服务器节点的总资源和每个服务器节点的已使用资源,确定可用机架。根据可用机架生成可用机架列表。
在本公开的实施例中,每个服务器节点的总资源可以通过如下方式确定:获取服务器节点资源,其中,服务器节点资源包括CPU和内存。获取与服务器节点对应的超售系数。根据服务器节点资源和超售系数确定服务器节点的总资源。即可以为将服务器节点资源与超售系数相乘,得到服务器节点的总资源。
针对每个机架中的每个服务器节点,根据该服务器节点的总资源和该服务器节点的已使用资源,确定可用机架,可以包括:将该服务器节点的总资源与该服务器节点的已使用资源相减,得到该服务器节点的剩余资源。基于此,可以得到该机架上的各个服务器节点的剩余资源。根据该机架上的各个服务器节点的剩余资源,确定该机架是否为可用机架。如果该机架上的各个服务器节点的剩余资源大于等于剩余资源阈值,则可将该机架确定为可用机架。其中,剩余资源阈值可以根据实际情况确定,在此不作具体限定。
可选地,在上述技术方案的基础上,可用机架列表中的多个可用机架按照优先级进行排序。
在本公开的实施例中,为了实现容器的均衡排布,可以对可用机架列表中的多个可用机架按照优先级高低进行排序,以便后续可以按照可用机架的优先级选择空余服务器节点,并在空余服务器节点上创建容器。
可选地,在上述技术方案的基础上,通过如下方式实现可用机架列表中的多个可用机架按照优先级进行排序:获取已创建容器列表,其中,已创建容器列表包括多个已创建容器,每个已创建容器具有对应的服务器节点、所属应用和所属分组。确定与每个服务器节点对应的创建数量信息,其中,创建数量信息包括属于同一应用的已创建容器的数量和属于同一分组的已创建容器的数量。根据与每个服务器节点对应的创建数量信息对可用机架列表中的多个可用机架进行优先级排序。
在本公开的实施例中,为了实现对可用机架列表中多个可用机架进行优先级排序,可以获取已创建容器列表,已创建容器列表可以包括多个已创建容器,已创建容器可以指已创建Pod。每个已创建容器具有对应的服务器节点是指每个已创建容器具有所属的服务器节点。同时,每个已创建容器具有所属应用和所属分组。
根据本公开的实施例,确定与每个服务器节点对应的创建数量信息,可以包括:针对每个已创建容器,将与该已创建容器对应的服务器节点上该已创建容器所属的应用的计数增加1和该已创建容器所属的分组的计数增加1。基于此,可以将各个已创建容器所属的应用和所属的分组关联到对应的服务器节点上。
根据本公开的实施例,针对每个服务器节点,确定与该服务器节点对应的创建数量信息,其中,每个创建数量信息可以包括属于同一应用的已创建容器的数量以及属于同一分组的已创建容器的数量。根据每个可用机架中包括的全部服务器节点的创建数量信息,可以确定该可用机架的创建数量信息,即该可用机架中属于同一应用的已创建容器的数量以及属于同一分组的已创建容器的数量。基于此,可以获得可用机架列表中各个可用机架的创建数量信息。
根据本公开的实施例,根据可用机架列表中各个可用机架的创建数量信息,对各个可用机架进行优先级排序,可以包括:根据预设机架优先级规则和可用机架列表中各个可用机架的创建数量信息,对可用机架列表中的各个可用机架进行优先级排序,其中,预设机架优先级规则,可以包括:属于同一应用下的容器数量越少的可用机架所对应的优先级越高。如果属于同一应用下的容器数量相同,则属于同一分组的容器数量越少的可用机架所对应的优先级越高。如果属于同一分组的容器数量相同,则第一坑位数量越多的可用机架所对应的优先级越高。其中,第一坑位数量为可用机架的总资源与全部创建的容器所使用资源的比值。这里所述的容器数量指的是已创建容器数量。
示例性的,如已创建容器列表包括已创建容器1、已创建容器2和已创建容器3。可用机架列表包括可用机架1和可用机架2。可用机架1包括服务器节点1、服务器节点2和服务器节点3。可用机架2包括服务器节点4和服务器节点5。
已创建容器1对应的服务器节点为服务器节点1、所属应用为应用1和所属分组为分组1。
已创建容器2对应的服务器节点为服务器节点1、所属应用为应用1和所属分组为分组1。
已创建容器3对应的服务器节点为服务器节点4、所属应用为应用1和所属分组为分组2。
针对服务器节点1,确定与服务器节点1对应的创建数量信息。其中,创建数量信息包括属于应用1的已创建容器的数量为2,属于分组1的已创建容器的数量为2。
针对服务器节点2,确定与服务器节点2对应的创建数量信息。其中,创建数量信息为0。
针对服务器节点3,确定与服务器节点3对应的创建数量信息。其中,创建数量信息为0。
针对服务器节点4,确定与服务器节点4对应的创建数量信息。其中,创建数量信息包括属于应用1的已创建容器的数量为1,属于分组2的已创建容器的数量为1。
针对服务器节点5,确定与服务器节点5对应的创建数量信息。其中,创建数量信息为0。
针对服务器节点6,确定与服务器节点6对应的创建数量信息。其中,创建数量信息为0。
根据服务器节点1、服务器节点2和服务器节点3的创建数量信息,确定可用机架1的创建数量信息包括属于应用1的已创建容器的数量为2,属于分组1的已创建容器的数量为2。
根据服务器节点4和服务器节点5,确定可用机架2的创建数量信息包括属于应用1的已创建容器的数量为1,属于分组2的已创建容器的数量为1。
根据预设机架优先级规则、可用机架1的创建数量信息和可用机架2的创建数量信息,对可用机架1和可用机架2进行优先级排序。由于可用机架1中属于同一应用1的数量大于可用机架1中属于同一应用1的数量,因此,可用机架2的优先级高于可用机架1的优先级。
根据本公开的实施例,通过对可用机架列表中的可用机架进行优先级排序,为容器在机架层面的均衡排布提供了基础。
可选地,在上述技术方案的基础上,对可用机架列表中的可用机架中的空余服务器节点进行定位,可以包括:将可用机架列表中的优先级最高的可用机架确定为当前机架。确定当前机架的空余服务器节点数量是否大于预设阈值。在当前机架的空余服务器节点数量大于预设阈值的情况下,对当前机架中的空余服务器节点进行定位。在当前机架的空余服务器节点数量小于或等于预设阈值的情况下,将可用机架列表中的下一优先级的可用机架确定为当前机架。返回执行确定当前机架的空余服务器节点数量是否大于预设阈值的操作,直至对当前机架中的空余服务器节点进行定位。
在本公开的实施例中,由于可用机架列表中的多个可用机架是按照优先级排序的,因此,在确定空余服务器节点时,可以按照可用机架的优先级进行确定。
根据本公开的实施例,将可用机架列表中的优先级最高的可用机架确定为当前机架,确定当前机架中空余服务器节点数量是否大于预设阈值。如果当前机架中空余服务器节点数量大于预设阈值,则从当前机架中定位空余服务器节点。如果当前机架中空余服务器节点数量小于或等于预设阈值,则将可用机架列表中下一优先级的可用机架确定为当前机架,并执行当前机架中空余服务器节点数量是否大于预设阈值的操作,直至从当前机架中定位空余服务器节点。
需要说明的是,可用机架列表中的每个可用机架所包括的多个服务器节点是按照优先级进行排序的。通过如下方式实现多个服务器节点按照优先级进行排序:获取已创建容器列表,其中,已创建容器列表包括多个已创建容器,每个已创建容器具有对应的服务器节点、所属应用和所属分组。确定与每个服务器节点对应的创建数量信息,其中,创建数量信息包括属于同一应用的已创建容器的数量和属于同一分组的已创建容器的数量。根据与每个服务器节点对应的创建数量信息对多个服务器节点进行优先级排序。
根据预设服务器节点优先级规则和与每个服务器节点对应的创建数量信息,对多个服务器节点进行优先级排序,其中,预设服务器节点优先级规则,可以包括:属于同一应用下的容器数量越少的服务器节点所对应的优先级越高。如果属于同一应用下的容器数量相同,则属于同一分组的容器数量越少的服务器节点所对应的优先级越高。如果属于同一分组的容器数量相同,则第二坑位数量越多的服务器节点所对应的优先级越高。其中,第二坑位数量为服务器节点的总资源与全部创建的容器所使用资源的比值。这里的容器数量指的是已创建容器数量。
可选地,在上述技术方案的基础上,根据可用机架列表中的可用机架的资源占用信息,对可用机架列表中的可用机架进行重新排序,可以包括:获取当前容器所属的应用和所属的分组。获取可用机架列表中的当前机架的上一资源占用信息。获取可用机架列表中的其他机架的上一资源占用信息。根据当前容器所属的应用、当前容器所属的分组和当前机架的上一资源占用信息,确定当前机架的当前资源占用信息。根据可用机架列表中的当前机架的当前资源占用信息和可用机架列表中的其他机架的上一资源占用信息,对可用机架列表中的可用机架进行重新排序。
在本公开的实施例中,由于在当前机架上的空余服务器节点上创建当前容器后,当前机架的上一资源占用信息便发生了变化,因此,需要根据当前容器所属的应用和所属的分组,对当前机架的上一资源占用信息进行更新得到当前机架的当前资源占用信息。
为了实现对可用机架列表中的可用机架进行重新排序,还需要获取可用机架列表中除当前机架外的其他机架的上一资源占用信息。其他机架的数量为一个或多个。当前机架的上一资源占用信息和其他机架的上一资源占用信息均指在当前容器未创建前,当前机架和其他机架所对应的资源占用信息。
在获得当前机架的当前资源占用信息和其他机架的上一资源占用信息后,可以根据当前机架的当前资源占用信息和其他机架的上一资源占用信息对可用机架列表中的可用机架进行重新排序。
可选地,在上述技术方案的基础上,可用机架列表中的当前机架和其他机架的上一资源占用信息包括属于同一应用的容器数量、属于同一分组的容器数量和第一坑位数量,其中,第一坑位数量为机架的总资源与全部创建的容器所使用资源的比值。
在本公开的实施例中,可用机架列表中的可用机架的资源占用信息包括属于同一应用的容器数量、属于同一分组的容器数量和第一坑位数量。其中,可用机架包括当前机架和其他机架。资源占用信息包括当前机架的当前资源占用信息和其他机架的上一资源占用信息。第一坑位数量可以表征机架的资源信息。
可选地,在上述技术方案的基础上,根据可用机架列表中的当前机架的当前资源占用信息和可用机架列表中的其他机架的上一资源占用信息,对可用机架列表中的可用机架进行重新排序,可以包括:根据预设机架优先级规则、可用机架列表中的当前机架的当前资源占用信息和可用机架列表中的其他机架的上一资源占用信息,对可用机架列表中的可用机架进行重新排序,其中,预设机架优先级规则,可以包括:属于同一应用下的容器数量越少的可用机架所对应的优先级越高。如果属于同一应用下的容器数量相同,则属于同一分组的容器数量越少的可用机架所对应的优先级越高。如果属于同一分组的容器数量相同,则第一坑位数量越多的可用机架所对应的优先级越高。
在本公开的实施例中,为了实现容器在机架上的均衡排布,需要将同一可用区上的容器优先分配到不同的机架上。为了实现将同一可用区上的容器优先分配到不同的机架上,可以设置预设机架优先级规则。
由于当前机架的当前资源占用信息包括属于同一应用的容器数量、属于同一分组的容器数量和第一坑位数量,其他机架的上一资源占用信息包括属干同一应用的容器数量、属干同一分组的容器数量和第一坑位数量,因此,可以针对每个应用,按照属于同一应用下的容器数量越少的可用机架所对应的优先级越高。如果属于同一应用下的容器数量相同,则属于同一分组的容器数量越少的可用机架所对应的优先级越高。如果属于同一分组的容器数量相同,则第一坑位数量越多的可用机架所对应的优先级越高的预设机架优先级规则对可用机架列表中的可用机架进行重新排序。其中,可用机架包括当前机架和其他机架。
根据本公开的实施例,通过对可用机架列表中的可用机架进行优先级排序,为容器在机架层面的均衡排布提供了基础。
可选地,在上述技术方案的基础上,该方法还可以包括:根据可用机架列表中的可用机架中的服务器节点的资源占用信息,对可用机架列表中的可用机架中的服务器节点进行重新排序。根据重新排序后的可用机架列表中的可用机架中的空余服务器节点和更新后的可用网络地址列表创建其他容器,可以包括:根据重新排序后的可用机架列表中的可用机架和可用机架中的服务器节点,确定可用机架中的新的空余服务器节点。根据新的空余服务器节点和更新后的可用网络地址列表创建其他容器。
在本公开的实施例中,可以获取当前容器所属的应用和所属的分组。获取可用机架列表中的服务器节点的上一资源占用信息。根据当前容器所属的应用和当前容器所属的分组对空余服务器节点的上一资源占用信息进行更新,得到空余服务器节点的当前资源占用信息。根据可用机架列表中的可用机架的空余服务器节点的当前资源占用信息和可用机架列表中的可用机架中除空余服务器节点外的其他服务器节点的上一资源占用信息,对可用机架列表中的可用机架中的服务器节点进行重新排序。
在获得重新排序后的可用机架列表中的可用机架和可用机架中的服务器节点后,可以根据上述确定可用机架中的新的空余服务器节点。
需要说明的是,由于可用机架列表中的可用机架中的服务器节点可以按照优先级进行排序,因此,在定位空余服务器节点时,可以按照服务器节点的优先级进行定位。即将可用机架列表中的优先级最高的可用机架确定为当前机架。将当前机架中的优先级最高的服务器节点确定为当前服务器节点。确定当前服务器节点是否为空余服务器节点。如果当前服务器节点为空余服务器节点,则将当前服务器节点确定为空余服务器节点。如果当前服务器节点不为空余服务器节点,则将当前机架中的下一优先级对应的服务器节点确定为当前服务器节点,返回执行确定当前服务器节点是否为空余服务器节点的操作,直至对空余服务器节点进行定位。
如果在当前机架无法定位到空余服务器节点,则执行将可用机架列表中的下一优先级的可用机架确定为当前机架,返回执行将当前机架中的优先级最高的服务器节点确定为当前服务器节点的操作,直至直至对空余服务器节点进行定位。
可选地,在上述技术方案的基础上,可用机架列表中的可用机架中的服务器节点的资源占用信息包括属于同一应用的容器数量、属于同一分组的容器数量和第二坑位数量,其中,第二坑位数量为服务器节点的总资源与全部创建的容器所使用资源的比值。
在本公开的实施例中,第二坑位数量可以表征服务器节点的资源信息。
可选地,在上述技术方案的基础上,根据可用机架列表中的可用机架中的服务器节点的资源占用信息,对可用机架列表中的可用机架中的服务器节点进行重新排序,可以包括:根据预设服务器节点优先级规则和可用机架列表中的可用机架中的服务器节点的资源占用信息,对可用机架列表中的可用机架中的服务器节点进行重新排序,其中,预设服务器节点优先级规则,可以包括:属于同一应用下的容器数量越少的服务器节点所对应的优先级越高。如果属于同一应用下的容器数量相同,则属于同一分组的容器数量越少的服务器节点所对应的优先级越高。如果属于同一分组的容器数量相同,则第二坑位数量越多的服务器节点所对应的优先级越高。
在本公开的实施例中,为了实现容器在服务器节点上的均衡排布,需要将同一机架上的容器优先分配到不同的服务器节点上。为了实现将同一机架上的容器优先分配到不同的服务器节点上,可以设置预设服务器优先级规则。
由于服务器节点的资源占用信息包括属于同一应用的容器数量、属于同一分组的容器数量和第二坑位数量,因此,可以针对每个应用,按照属于同一应用下的容器数量越少的服务器节点所对应的优先级越高。如果属于同一应用下的容器数量相同,则属于同一分组的容器数量越少的服务器节点所对应的优先级越高。如果属于同一分组的容器数量相同,则第二坑位数量越多的服务器节点所对应的优先级越高的预设服务器节点优先级规则对可用机架列表中的可用机架中的服务器节点进行重新排序。
根据本公开的实施例,通过对可用机架列表中的可用机架中的服务器节点进行优先级排序,为容器在服务器节点层面的均衡排布提供了基础。
图5示意性示出了根据本公开的实施例的另一种容器创建方法的流程图。
如图5所示,该方法包括操作S501~S530。
在操作S501,获取资源请求,其中,资源请求包括待创建容器数量。
在操作S502,响应资源请求,获取每个机架中的每个服务器节点的总资源。
在操作S503,获取每个服务器节点的已使用资源,其中,已使用资源为已创建容器所使用的资源。
在操作S504,根据每个服务器节点的总资源和每个服务器节点的已使用资源,确定可用机架。
在操作S505,根据可用机架生成可用机架列表。
在操作S506,获取已创建容器列表,其中,已创建容器列表包括多个已创建容器,每个已创建容器具有对应的服务器节点、所属应用和所属分组。
在操作S507,确定与每个服务器节点对应的创建数量信息,其中,创建数量信息包括属于同一应用的已创建容器的数量和属于同一分组的已创建容器的数量。
在操作S508,根据预设服务器节点优先级规则和与每个服务器节点对应的创建数量信息,对可用机架列表中的可用机架中的多个服务器节点进行优先级排序。
在操作S509,根据每个可用机架中包括的全部服务器节点的创建数量信息,确定每个可用机架的创建数量信息。
在操作S510,根据预设机架优先级规则和可用机架列表中多个可用机架的创建数量信息,对可用机架列表中的多个可用机架进行优先级排序。
在操作S511,响应资源请求,获取可用网络地址列表,其中,可用网络地址列表包括至少一个可用网络地址。
在操作S512,将可用机架列表中的优先级最高的可用机架确定为当前机架。
在操作S513,当前机架的空余服务器节点数量是否大于预设阈值;若是,则执行操作S514;若否,则执行操作S515。
在操作S514,按照当前机架中的多个服务节点的优先级确定当前机架中的空余服务器节点,并执行操作S516。
在操作S515,可用机架列表中是否存在下一优先级的可用机架;若是,则执行操作S518;若否,则执行操作S519。
在操作S516,从可用网络地址列表中选择一个可用网络地址作为目标网络地址。
在操作S517,在空余服务器节点上,创建与目标网络地址对应的当前容器,并执行操作S520。
在操作S518,将可用机架列表中的下一优先级的可用机架确定为当前机架,并返回执行操作S513。
在操作S519,生成分配异常信息。
在操作S520,更新可用网络地址列表。
在操作S521,获取当前容器所属的应用和所属的分组。
在操作S522,获取可用机架列表中的当前机架的上一资源占用信息。
在操作S523,获取可用机架列表中的其他机架的上一资源占用信息。
在操作S524,根据当前容器所属的应用、当前容器所属的分组和当前机架的上一资源占用信息,确定当前机架的当前资源占用信息。
在操作S525,根据预设机架优先级规则、可用机架列表中的当前机架的当前资源占用信息和可用机架列表中的其他机架的上一资源占用信息,对可用机架列表中的可用机架进行重新排序。
在操作S526,根据预设服务器节点优先级规则和可用机架列表中的可用机架中的服务器节点的资源占用信息,对可用机架列表中的可用机架中的服务器节点进行重新排序。
在操作S527,已创建容器数量是否等于待创建容器数量;若否,则执行操作S528;若是,则执行操作S529。
在操作S528,根据重新排序后的可用机架列表中的可用机架和可用机架中的服务器节点,确定可用机架中的新的空余服务器节点,并执行操作S530。
在操作S529,结束创建容器操作。
在操作S530,根据新的空余服务器节点和更新后的可用网络地址列表创建下一容器,将下一容器作为当前容器,并返回执行操作S520。
在本公开的实施例中,本公开实施例基于K8S容器创建方法的实质即是根据部署环境的可用区、机架和服务器节点的落位信息和图1中的服务树中的集群服务信息,将同一应用下的不同容器(即服务树中的实例)按照调度策略分配到对应的服务器节点中,以实现容器的均衡排布。由于在确定将容器分配到哪个服务器节点后,需要在对应的服务器节点创建容器,因此,实现容器的均衡创建即是实现容器的均衡排布。
根据本公开的实施例,调度策略即是:1、针对多可用区场景,将同一应用下的不同容器优先分配到不同的可用区。2、在保证1的前提下,针对可用区包括多个机架且可用区上分配了多个同一应用下的容器,将同一可用区上的容器优先分配到不同的机架上。在保证2的前提下,针对机架包括多个服务器节点且机架上分配了多个同应用下的容器,将同一机架上的容器优先分配到不同的服务器节点上。通过上述调度策略实现同一应用下的容器在可用区、机架和服务器节点三个层面上的均衡排布。
图6示意性示出了根据本公开的实施例的一种计算资源流程的流程图。图6给出了可用机架列表的生成过程,其是对操作S502~S510的说明。
图6中K8S master即是前文所述的Master节点(即主节点)。node列表是指服务器节点列表。Node资源即是前文所述的服务器节点资源。Pod所在应用==待分配资源的应用是指如果Pod所在的应用即是待分配资源的应用,则同应用Pod计数增加1。也即针对每个已创建容器,将与该已创建容器对应的服务器节点上该已创建容器所属的应用的计数增加1。Pod所在分组==待分配资源的分组是指如果Pod所在的分组即是待分配资源的分组,则同分组Pod计数增加1。也即针对每个已创建容器,将与该已创建容器对应的服务器节点上该已创建容器所属的分组的计数增加1。
当全部Pod列表都遍历完成后,将服务器节点列表按服务器节点所在的机架情况统计出机架的资源情况,生成可用机架列表。此外,针对机架按照操作S510中的预设机架优先级规则进行优先级排序。针对机架中的服务器节点按照操作S508中的预设服务器节点优先级规则进行优先级排序。
此外,计算node坑位数量和总坑位数量,将总坑位数量与响应资源请求计算出的待分配数量比较,确定是否可以响应资源请求。即如果总坑位数量大于或等于待分配数量,则返回可用机架列表和已分配网络地址列表。如果总坑位数量小于待分配数量,则生成分配异常信息。
需要说明的是,每次创建容器后,便需要对可用机架列表中的可用机架进行重新排序,以及,将可用机架列表中的可用机架中的服务器节点进行重新排序。
图7示意性示出了根据本公开的实施例的一种容器创建方法的应用示意图。图7中系统应用包括5层,分别为产品线、系统、应用、分组和实例。现需要将同一应用下的待创建实例1、待创建实例2和待创建实例2在对应的服务器节点上创建。
针对待创建实例1,由于可用区1和可用区2还没有被调度应用下的实例,因此,可以随机选择可用区。现选择可用区1,并根据操作S501和S530,在可用区1中的机架1中的服务器节点1上创建待创建实例1。
针对待创建实例2,由于同应用下的待创建实例1已经设置在可用区1上,因此,为了确保均衡排布,选择可用区2,并根据操作S501和S530,在可用区2中的机架3中的服务器节点5上创建待创建实例2。
针对待创建实例3,在可用区1中的机架2中的服务器节点3上创建待创建实例3。
上述实现了实例(即容器)在可用区、机架和服务器节点三个层面上的均衡排布。由于实现了容器的均衡排布,因此,即使可用区1或可用区2出现故障,如大面积停电,则采用本公开实施例的技术方案仍然能够确保有实例能够运行。
根据本公开实施例的技术方案,由于可用机架列表包括不同可用区的可用机架,且,可用机架列表中的可用机架和可用机架中的服务器节点均是按照优先级进行排序的,因此,定位出的空余服务器节点是满足容器均衡排布要求的服务器节点,在此基础上,便实现了容器在可用区、机架和服务器节点三个层面的均衡创建,也即实现了容器在可用区、机架和服务器节点三个层面的均衡排布,因而,至少部分地克服了采用相关技术较难以实现容器的均衡排布的技术问题。此外,由于实现了容器的均衡排布,因此,满足了跨可用区、跨机架和服务器节点高可用的服务要求,进而有效避免了系统瘫痪情况的发生。
图8示意性示出了根据本公开的实施例的一种容器创建装置的框图。
如图8所示,容器创建装置800包括获取模块810、定位模块820、第一创建模块830、更新模块840、第一排序模块850和第二创建模块860。
获取模块810,用于获取可用机架列表和可用网络地址列表,其中,可用机架列表包括不同可用区的多个可用机架,每个可用机架中包括至少一个服务器节点,可用网络地址列表包括至少一个可用网络地址。
定位模块820,用于对可用机架列表中的可用机架中的空余服务器节点进行定位。
第一创建模块830,用于在空余服务器节点上,创建与可用网络地址对应的当前容器。
更新模块840,用于更新可用网络地址列表。
第一排序模块850,用于根据可用机架列表中的可用机架的资源占用信息,对可用机架列表中的可用机架进行重新排序。
第二创建模块860,用于根据重新排序后的可用机架列表中的可用机架中的空余服务器节点和更新后的可用网络地址列表,创建其他容器。
根据本公开实施例的技术方案,通过获取可用机架列表和可用网络地址列表,可用机架列表包括不同可用区的多个可用机架,每个可用机架中包括至少一个服务器节点,可用网络地址列表包括至少一个可用网络地址,对可用机架列表中的可用机架中的空余服务器节点进行定位,在空余服务器节点上,创建与可用网络地址对应的当前容器,更新可用网络地址列表,根据可用机架列表中的可用机架的资源占用信息,对可用机架列表中的可用机架进行重新排序,并根据重新排序后的可用机架列表中的可用机架中的空余服务器节点和更新后的可用网络地址列表,创建其他容器。由于在空余服务器节点上,每创建一个容器后,便根据可用机架列表中的可用机架的资源占用信息,对可用机架列表中的可用机架进行重新排序,再基于重新排序后的可用机架列表中的可用机架中的空余服务器节点和更新后的可用网络地址列表,创建下一个容器,其中,空余服务器节点来自不同可用区的可用机架,因此,实现了容器的均衡排布,因而,至少部分地克服了采用相关技术较难以实现容器的均衡排布的技术问题。此外,由于实现了容器的均衡排布,因此,满足了跨可用区、跨机架和服务器节点高可用的服务要求,进而有效避免了系统瘫痪情况的发生。
可选地,在上述技术方案的基础上,获取可用机架列表,可以包括:获取每个机架中的每个服务器节点的总资源。获取每个服务器节点的已使用资源,其中,已使用资源为已创建容器所使用的资源。根据每个服务器节点的总资源和每个服务器节点的已使用资源,确定可用机架。根据可用机架生成可用机架列表。
可选地,在上述技术方案的基础上,可用机架列表中的多个可用机架按照优先级进行排序。
可选地,在上述技术方案的基础上,通过如下方式实现可用机架列表中的多个可用机架按照优先级进行排序:获取已创建容器列表,其中,已创建容器列表包括多个已创建容器,每个已创建容器具有对应的服务器节点、所属应用和所属分组。确定与每个服务器节点对应的创建数量信息,其中,创建数量信息包括属于同一应用的已创建容器的数量和属于同一分组的已创建容器的数量。根据与每个服务器节点对应的创建数量信息对可用机架列表中的多个可用机架进行优先级排序。
可选地,在上述技术方案的基础上,定位模块820可以包括第一确定子模块、第二确定子模块、第一定位子模块、第二定位子模块和返回子模块。
第一确定子模块,用于将可用机架列表中的优先级最高的可用机架确定为当前机架。
第二确定子模块,用于确定当前机架的空余服务器节点数量是否大于预设阈值。
第一定位子模块,用于在当前机架的空余服务器节点数量大于预设阈值的情况下,对当前机架中的空余服务器节点进行定位。
第二定位子模块,用于在当前机架的空余服务器节点数量小于或等于预设阈值的情况下,将可用机架列表中的下一优先级的可用机架确定为当前机架。
返回子模块,用于返回执行确定当前机架的空余服务器节点数量是否大于预设阈值的操作,直至对当前机架中的空余服务器节点进行定位。
可选地,在上述技术方案的基础上,第一排序模块840可以包括第一获取子模块、第二获取子模块、第三获取子模块和排序子模块。
第一获取子模块,用于获取当前容器所属的应用和所属的分组。
第二获取子模块,用于获取可用机架列表中的当前机架的上一资源占用信息。
第三获取子模块,用于获取可用机架列表中的其他机架的上一资源占用信息。
第三确定子模块,用于根据当前容器所属的应用、当前容器所属的分组和当前机架的上一资源占用信息,确定当前机架的当前资源占用信息。
第一排序子模块,用于根据可用机架列表中的当前机架的当前资源占用信息和可用机架列表中的其他机架的上一资源占用信息,对可用机架列表中的可用机架进行重新排序。
可选地,在上述技术方案的基础上,可用机架列表中的当前机架和其他机架的上一资源占用信息包括属于同一应用的容器数量、属于同一分组的容器数量和第一坑位数量,其中,第一坑位数量为机架的总资源与全部创建的容器所使用资源的比值。
可选地,在上述技术方案的基础上,第一排序子模块可以包括排序单元。
排序单元,根据预设机架优先级规则、可用机架列表中的当前机架的当前资源占用信息和可用机架列表中的其他机架的上一资源占用信息,对可用机架列表中的可用机架进行重新排序,其中,预设机架优先级规则,包括:
属于同一应用下的容器数量越少的可用机架所对应的优先级越高。
如果属于同一应用下的容器数量相同,则属于同一分组的容器数量越少的可用机架所对应的优先级越高。
如果属于同一分组的容器数量相同,则第一坑位数量越多的可用机架所对应的优先级越高。
可选地,在上述技术方案的基础上,该容器创建装置800还可以包括第二排序模块。
第二排序模块,用于根据可用机架列表中的可用机架中的服务器节点的资源占用信息,对可用机架列表中的可用机架中的服务器节点进行重新排序。
第二创建模块850可以包括第四确定子模块和创建子模块。
第四确定子模块,用于根据重新排序后的可用机架列表中的可用机架和可用机架中的服务器节点,确定可用机架中的新的空余服务器节点。
创建子模块,用于根据新的空余服务器节点和更新后的可用网络地址列表创建其他容器。
可选地,在上述技术方案的基础上,可用机架列表中的可用机架中的服务器节点的资源占用信息包括属于同一应用的容器数量、属于同一分组的容器数量和第二坑位数量,其中,第二坑位数量为服务器节点的总资源与全部创建的容器所使用资源的比值。
可选地,在上述技术方案的基础上,第二排序模块可以包括第二排序子模块。
第二排序子模块,用于根据预设服务器节点优先级规则和可用机架列表中的可用机架中的服务器节点的资源占用信息,对可用机架列表中的可用机架中的服务器节点进行重新排序,其中,预设服务器节点优先级规则,包括:
属于同一应用下的容器数量越少的服务器节点所对应的优先级越高。
如果属于同一应用下的容器数量相同,则属于同一分组的容器数量越少的服务器节点所对应的优先级越高。
如果属于同一分组的容器数量相同,则第二坑位数量越多的服务器节点所对应的优先级越高。
根据本公开的实施例的模块、子模块、单元中的任意多个、或其中任意多个的至少部分功能可以在一个模块中实现。根据本公开实施例的模块、子模块、单元中的任意一个或多个可以被拆分成多个模块来实现。根据本公开实施例的模块、子模块、单元中的任意一个或多个可以至少被部分地实现为硬件电路,例如现场可编程门阵列(FieldProgrammableGate Array,FPGA)、可编程逻辑阵列(Programmable Logic Arrays,PLA)、片上系统、基板上的系统、封装上的系统、专用集成电路(Application Specific IntegratedCircuit,ASIC),或可以通过对电路进行集成或封装的任何其他的合理方式的硬件或固件来实现,或以软件、硬件以及固件三种实现方式中任意一种或以其中任意几种的适当组合来实现。或者,根据本公开实施例的模块、子模块、单元中的一个或多个可以至少被部分地实现为计算机程序模块,当该计算机程序模块被运行时,可以执行相应的功能。
例如,获取模块810、定位模块820、第一创建模块830、更新模块840、第一排序模块850和第二创建模块860中的任意多个可以合并在一个模块/子模块/单元中实现,或者其中的任意一个模块/子模块/单元可以被拆分成多个模块/子模块/单元。或者,这些模块/子模块/单元中的一个或多个模块/子模块/单元的至少部分功能可以与其他模块/子模块/单元的至少部分功能相结合,并在一个模块/子模块/单元中实现。根据本公开的实施例,获取模块810、定位模块820、第一创建模块830、更新模块840、第一排序模块850和第二创建模块860中的至少一个可以至少被部分地实现为硬件电路,例如现场可编程门阵列(FPGA)、可编程逻辑阵列(PLA)、片上系统、基板上的系统、封装上的系统、专用集成电路(ASIC),或可以通过对电路进行集成或封装的任何其他的合理方式等硬件或固件来实现,或以软件、硬件以及固件三种实现方式中任意一种或以其中任意几种的适当组合来实现。或者,获取模块810、定位模块820、第一创建模块830、更新模块840、第一排序模块850和第二创建模块860中的至少一个可以至少被部分地实现为计算机程序模块,当该计算机程序模块被运行时,可以执行相应的功能。
需要说明的是,本公开的实施例中容器创建装置部分与本公开的实施例中容器创建方法部分是相对应的,容器创建装置部分的描述具体参考容器创建方法部分,在此不再赘述。
图9示意性示出了根据本公开实施例的适于实现上文描述的方法的电子设备的框图。图9示出的电子设备仅仅是一个示例,不应对本公开实施例的功能和使用范围带来任何限制。
如图9所示,根据本公开实施例的电子设备900包括处理器901,其可以根据存储在只读存储器(Read-Only Memory,ROM)902中的程序或者从存储部分908加载到随机访问存储器(Random Access Memory,RAM)903中的程序而执行各种适当的动作和处理。处理器901例如可以包括通用微处理器(例如CPU)、指令集处理器和/或相关芯片组和/或专用微处理器(例如,专用集成电路(ASIC)),等等。处理器901还可以包括用于缓存用途的板载存储器。处理器901可以包括用于执行根据本公开实施例的方法流程的不同动作的单一处理单元或者是多个处理单元。
在RAM 903中,存储有系统900操作所需的各种程序和数据。处理器901、ROM 902以及RAM 903通过总线904彼此相连。处理器901通过执行ROM 902和/或RAM 903中的程序来执行根据本公开实施例的方法流程的各种操作。需要注意,所述程序也可以存储在除ROM 902和RAM 903以外的一个或多个存储器中。处理器901也可以通过执行存储在所述一个或多个存储器中的程序来执行根据本公开实施例的方法流程的各种操作。
根据本公开的实施例,电子设备900还可以包括输入/输出(I/O)接口905,输入/输出(I/O)接口905也连接至总线904。系统900还可以包括连接至I/O接口905的以下部件中的一项或多项:包括键盘、鼠标等的输入部分906;包括诸如阴极射线管(CRT)、液晶显示器(Liquid Crystal Display,LCD)等以及扬声器等的输出部分907;包括硬盘等的存储部分908;以及包括诸如LAN卡、调制解调器等的网络接口卡的通信部分909。通信部分909经由诸如因特网的网络执行通信处理。驱动器910也根据需要连接至I/O接口905。可拆卸介质911,诸如磁盘、光盘、磁光盘、半导体存储器等等,根据需要安装在驱动器910上,以便于从其上读出的计算机程序根据需要被安装入存储部分908。
根据本公开的实施例,根据本公开实施例的方法流程可以被实现为计算机软件程序。例如,本公开的实施例包括一种计算机程序产品,其包括承载在计算机可读存储介质上的计算机程序,该计算机程序包含用于执行流程图所示的方法的程序代码。在这样的实施例中,该计算机程序可以通过通信部分909从网络上被下载和安装,和/或从可拆卸介质911被安装。在该计算机程序被处理器901执行时,执行本公开实施例的系统中限定的上述功能。根据本公开的实施例,上文描述的系统、设备、装置、模块、单元等可以通过计算机程序模块来实现。
本公开还提供了一种计算机可读存储介质,该计算机可读存储介质可以是上述实施例中描述的设备/装置/系统中所包含的;也可以是单独存在,而未装配入该设备/装置/系统中。上述计算机可读存储介质承载有一个或者多个程序,当上述一个或者多个程序被执行时,实现根据本公开实施例的方法。
根据本公开的实施例,计算机可读存储介质可以是非易失性的计算机可读存储介质。例如可以包括但不限于:便携式计算机磁盘、硬盘、随机访问存储器(RAM)、只读存储器(ROM)、可擦式可编程只读存储器(EPROM(Erasable Programmable Read Only Memory)或闪存)、便携式紧凑磁盘只读存储器(Computer Disc Read-Only Memory,CD-ROM)、光存储器件、磁存储器件、或者上述的任意合适的组合。在本公开中,计算机可读存储介质可以是任何包含或存储程序的有形介质,该程序可以被指令执行系统、装置或者器件使用或者与其结合使用。
例如,根据本公开的实施例,计算机可读存储介质可以包括上文描述的ROM 902和/或RAM 903和/或ROM 902和RAM 903以外的一个或多个存储器。
附图中的流程图和框图,图示了按照本公开各种实施例的系统、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段、或代码的一部分,上述模块、程序段、或代码的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。也应当注意,在有些作为替换的实现中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个接连地表示的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图或流程图中的每个方框、以及框图或流程图中的方框的组合,可以用执行规定的功能或操作的专用的基于硬件的系统来实现,或者可以用专用硬件与计算机指令的组合来实现。本领域技术人员可以理解,本公开的各个实施例和/或权利要求中记载的特征可以进行多种组合和/或结合,即使这样的组合或结合没有明确记载于本公开中。特别地,在不脱离本公开精神和教导的情况下,本公开的各个实施例和/或权利要求中记载的特征可以进行多种组合和/或结合。所有这些组合和/或结合均落入本公开的范围。
以上对本公开的实施例进行了描述。但是,这些实施例仅仅是为了说明的目的,而并非为了限制本公开的范围。尽管在以上分别描述了各实施例,但是这并不意味着各个实施例中的措施不能有利地结合使用。本公开的范围由所附权利要求及其等同物限定。不脱离本公开的范围,本领域技术人员可以做出多种替代和修改,这些替代和修改都应落在本公开的范围之内。
Claims (14)
1.一种容器创建方法,包括:
获取可用机架列表和可用网络地址列表,其中,所述可用机架列表包括不同可用区的多个可用机架,每个所述可用机架中包括至少一个服务器节点,所述可用网络地址列表包括至少一个可用网络地址;
对所述可用机架列表中的可用机架中的空余服务器节点进行定位;
在所述空余服务器节点上,创建与所述可用网络地址对应的当前容器;
更新所述可用网络地址列表;
根据所述可用机架列表中的可用机架的资源占用信息,对所述可用机架列表中的可用机架进行重新排序;以及
根据重新排序后的可用机架列表中的可用机架中的空余服务器节点和更新后的可用网络地址列表,创建其他容器。
2.根据权利要求1所述的方法,其中,所述获取可用机架列表,包括:
获取每个机架中的每个服务器节点的总资源;
获取每个所述服务器节点的已使用资源,其中,所述已使用资源为已创建容器所使用的资源;
根据每个所述服务器节点的总资源和每个所述服务器节点的已使用资源,确定可用机架;以及
根据所述可用机架生成所述可用机架列表。
3.根据权利要求2所述的方法,其中,所述可用机架列表中的多个所述可用机架按照优先级进行排序。
4.根据权利要求3所述的方法,其中,通过如下方式实现所述可用机架列表中的多个所述可用机架按照优先级进行排序:
获取已创建容器列表,其中,所述已创建容器列表包括多个已创建容器,每个所述已创建容器具有对应的服务器节点、所属应用和所属分组;
确定与每个所述服务器节点对应的创建数量信息,其中,所述创建数量信息包括属于同一应用的已创建容器的数量和属于同一分组的已创建容器的数量;以及
根据与每个所述服务器节点对应的创建数量信息对所述可用机架列表中的多个所述可用机架进行优先级排序。
5.根据权利要求3所述的方法,其中,所述对所述可用机架列表中的可用机架中的空余服务器节点进行定位,包括:
将所述可用机架列表中的优先级最高的可用机架确定为当前机架;
确定所述当前机架的空余服务器节点数量是否大于预设阈值;
在所述当前机架的空余服务器节点数量大于所述预设阈值的情况下,对所述当前机架中的空余服务器节点进行定位;
在所述当前机架的空余服务器节点数量小于或等于所述预设阈值的情况下,将所述可用机架列表中的下一优先级的可用机架确定为当前机架;以及
返回执行确定所述当前机架的空余服务器节点数量是否大于所述预设阈值的操作,直至对所述当前机架中的空余服务器节点进行定位。
6.根据权利要求5所述的方法,其中,所述根据所述可用机架列表中的可用机架的资源占用信息,对所述可用机架列表中的可用机架进行重新排序,包括:
获取所述当前容器所属的应用和所属的分组;
获取所述可用机架列表中的所述当前机架的上一资源占用信息;
获取所述可用机架列表中的其他机架的上一资源占用信息;
根据所述当前容器所属的应用、所述当前容器所属的分组和所述当前机架的上一资源占用信息,确定所述当前机架的当前资源占用信息;以及
根据所述可用机架列表中的所述当前机架的当前资源占用信息和所述可用机架列表中的其他机架的上一资源占用信息,对所述可用机架列表中的可用机架进行重新排序。
7.根据权利要求6所述的方法,其中,所述可用机架列表中的所述当前机架和其他机架的上一资源占用信息包括属于同一应用的容器数量、属于同一分组的容器数量和第一坑位数量,其中,所述第一坑位数量为机架的总资源与全部创建的容器所使用资源的比值。
8.根据权利要求7所述的方法,其中,所述根据所述可用机架列表中的所述当前机架的当前资源占用信息和所述可用机架列表中的其他机架的上一资源占用信息,对所述可用机架列表中的可用机架进行重新排序,包括:
根据预设机架优先级规则、所述可用机架列表中的所述当前机架的当前资源占用信息和所述可用机架列表中的其他机架的上一资源占用信息,对所述可用机架列表中的可用机架进行重新排序,其中,所述预设机架优先级规则,包括:
属于同一应用下的容器数量越少的可用机架所对应的优先级越高;
如果属于同一应用下的容器数量相同,则属于同一分组的容器数量越少的可用机架所对应的优先级越高;以及
如果属于同一分组的容器数量相同,则第一坑位数量越多的可用机架所对应的优先级越高。
9.根据权利要求1所述的方法,还包括:
根据所述可用机架列表中的可用机架中的服务器节点的资源占用信息,对所述可用机架列表中的可用机架中的服务器节点进行重新排序;
所述根据重新排序后的可用机架列表中的可用机架中的空余服务器节点和更新后的可用网络地址列表创建其他容器,包括:
根据重新排序后的可用机架列表中的可用机架和可用机架中的服务器节点,确定可用机架中的新的空余服务器节点;以及
根据所述新的空余服务器节点和更新后的可用网络地址列表创建其他容器。
10.根据权利要求9所述的方法,其中,所述可用机架列表中的可用机架中的服务器节点的资源占用信息包括属于同一应用的容器数量、属于同一分组的容器数量和第二坑位数量,其中,所述第二坑位数量为服务器节点的总资源与全部创建的容器所使用资源的比值。
11.根据权利要求10所述的方法,其中,所根据所述可用机架列表中的可用机架中的服务器节点的资源占用信息,对所述可用机架列表中的可用机架中的服务器节点进行重新排序,包括:
根据预设服务器节点优先级规则和所述可用机架列表中的可用机架中的服务器节点的资源占用信息,对所述可用机架列表中的可用机架中的服务器节点进行重新排序,其中,所述预设服务器节点优先级规则,包括:
属于同一应用下的容器数量越少的服务器节点所对应的优先级越高;
如果属于同一应用下的容器数量相同,则属于同一分组的容器数量越少的服务器节点所对应的优先级越高;以及
如果属于同一分组的容器数量相同,则第二坑位数量越多的服务器节点所对应的优先级越高。
12.一种容器创建装置,包括:
获取模块,用于获取可用机架列表和可用网络地址列表,其中,所述可用机架列表包括不同可用区的多个可用机架,每个所述可用机架中包括至少一个服务器节点,所述可用网络地址列表包括至少一个可用网络地址;
定位模块,用于对所述可用机架列表中的可用机架中的空余服务器节点进行定位;
第一创建模块,用于在所述空余服务器节点上,创建与所述可用网络地址对应的当前容器;
更新模块,用于更新所述可用网络地址列表;
第一排序模块,用于根据所述可用机架列表中的可用机架的资源占用信息,对所述可用机架列表中的可用机架进行重新排序;以及
第二创建模块,用于根据重新排序后的可用机架列表中的可用机架中的空余服务器节点和更新后的可用网络地址列表,创建其他容器。
13.一种电子设备,包括:
一个或多个处理器;
存储器,用于存储一个或多个程序,
其中,当所述一个或多个程序被所述一个或多个处理器执行时,使得所述一个或多个处理器实现权利要求1~11中任一项所述的方法。
14.一种计算机可读存储介质,其上存储有可执行指令,该指令被处理器执行时使处理器实现权利要求1~11中任一项所述的方法。
Priority Applications (5)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010900719.6A CN113760441A (zh) | 2020-08-31 | 2020-08-31 | 容器创建方法、装置、电子设备及存储介质 |
US18/041,689 US20230315531A1 (en) | 2020-08-31 | 2021-08-30 | Method of creating container, electronic device and storage medium |
PCT/CN2021/115374 WO2022042724A1 (zh) | 2020-08-31 | 2021-08-30 | 容器创建方法、装置、电子设备及存储介质 |
JP2023511608A JP2023538886A (ja) | 2020-08-31 | 2021-08-30 | コンテナ作成方法、装置、電子機器、記憶媒体及びコンピュータプログラム |
EP21860556.6A EP4206915A4 (en) | 2020-08-31 | 2021-08-30 | METHOD AND DEVICE FOR PRODUCING CONTAINERS, ELECTRONIC DEVICE AND STORAGE MEDIUM |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010900719.6A CN113760441A (zh) | 2020-08-31 | 2020-08-31 | 容器创建方法、装置、电子设备及存储介质 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN113760441A true CN113760441A (zh) | 2021-12-07 |
Family
ID=78785767
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202010900719.6A Pending CN113760441A (zh) | 2020-08-31 | 2020-08-31 | 容器创建方法、装置、电子设备及存储介质 |
Country Status (5)
Country | Link |
---|---|
US (1) | US20230315531A1 (zh) |
EP (1) | EP4206915A4 (zh) |
JP (1) | JP2023538886A (zh) |
CN (1) | CN113760441A (zh) |
WO (1) | WO2022042724A1 (zh) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN115086334B (zh) * | 2022-06-15 | 2024-05-28 | 北京奇艺世纪科技有限公司 | 一种服务器标记方法及相关装置 |
Family Cites Families (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105991478B (zh) * | 2015-02-05 | 2019-08-30 | 阿里巴巴集团控股有限公司 | 服务器资源分配方法及其系统 |
CN106528280B (zh) * | 2015-09-15 | 2019-10-29 | 阿里巴巴集团控股有限公司 | 一种任务分配方法和系统 |
EP3423941B1 (en) * | 2016-03-04 | 2023-05-10 | Bladelogic, Inc. | Provisioning of containers for virtualized applications |
CN109885377B (zh) * | 2018-11-23 | 2023-04-28 | 中国银联股份有限公司 | 统一资源调度协调器及其创建虚拟机和/或容器的方法、统一资源调度系统 |
CN110278288B (zh) * | 2019-05-17 | 2021-10-26 | 平安科技(深圳)有限公司 | 预分配容器ip的方法、装置、计算机设备及存储介质 |
CN110515693A (zh) * | 2019-07-26 | 2019-11-29 | 浪潮电子信息产业股份有限公司 | 一种基于机架感知的虚拟机横向扩展的方法和系统 |
-
2020
- 2020-08-31 CN CN202010900719.6A patent/CN113760441A/zh active Pending
-
2021
- 2021-08-30 JP JP2023511608A patent/JP2023538886A/ja active Pending
- 2021-08-30 EP EP21860556.6A patent/EP4206915A4/en active Pending
- 2021-08-30 US US18/041,689 patent/US20230315531A1/en active Pending
- 2021-08-30 WO PCT/CN2021/115374 patent/WO2022042724A1/zh unknown
Also Published As
Publication number | Publication date |
---|---|
WO2022042724A1 (zh) | 2022-03-03 |
EP4206915A1 (en) | 2023-07-05 |
US20230315531A1 (en) | 2023-10-05 |
JP2023538886A (ja) | 2023-09-12 |
EP4206915A4 (en) | 2024-08-14 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN112256423B (zh) | 分布式资源管理系统中的动态租户结构调整的系统、设备和过程 | |
CN112199194B (zh) | 基于容器集群的资源调度方法、装置、设备和存储介质 | |
CN108431796B (zh) | 分布式资源管理系统和方法 | |
CN106708622B (zh) | 集群资源处理方法和系统、资源处理集群 | |
US8117641B2 (en) | Control device and control method for information system | |
US9755990B2 (en) | Automated reconfiguration of shared network resources | |
CN111966500B (zh) | 资源调度方法、装置、电子设备及存储介质 | |
US9027017B2 (en) | Methods and apparatus for movement of virtual resources within a data center environment | |
US11520506B2 (en) | Techniques for implementing fault domain sets | |
US7890712B2 (en) | Method, apparatus and program product for managing memory in a virtual computing system | |
US8104038B1 (en) | Matching descriptions of resources with workload requirements | |
CN104508634A (zh) | 虚拟机的动态资源分配 | |
CN113886089B (zh) | 一种任务处理方法、装置、系统、设备及介质 | |
CN102346460A (zh) | 一种基于事务的服务控制系统及其控制方法 | |
CN111343219B (zh) | 计算服务云平台 | |
CN115185697A (zh) | 一种基于kubernetes的集群资源调度方法、系统、设备和存储介质 | |
CN113760549B (zh) | 一种pod部署方法及装置 | |
CN113760441A (zh) | 容器创建方法、装置、电子设备及存储介质 | |
US11561824B2 (en) | Embedded persistent queue | |
CN112039963A (zh) | 一种处理器的绑定方法、装置、计算机设备和存储介质 | |
CN113783712A (zh) | 默认网关管理方法、网关管理器、服务器及存储介质 | |
JP2008059599A (ja) | 仮想化されたリソースの割当て方法及びその実施システム | |
CN114416301A (zh) | 数据集合服务容器管理方法 | |
US11768704B2 (en) | Increase assignment effectiveness of kubernetes pods by reducing repetitive pod mis-scheduling | |
US20230362103A1 (en) | Reducing placement conflicts between concurrent virtual machine allocations |
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 |