CN109992354B - 容器处理方法、装置、主体服务器、系统和存储介质 - Google Patents

容器处理方法、装置、主体服务器、系统和存储介质 Download PDF

Info

Publication number
CN109992354B
CN109992354B CN201910282055.9A CN201910282055A CN109992354B CN 109992354 B CN109992354 B CN 109992354B CN 201910282055 A CN201910282055 A CN 201910282055A CN 109992354 B CN109992354 B CN 109992354B
Authority
CN
China
Prior art keywords
application
configuration
target
container
application program
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
CN201910282055.9A
Other languages
English (en)
Other versions
CN109992354A (zh
Inventor
吴俊宗
陈睿
左云存
梁金瑞
赵明山
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Tencent Technology Shenzhen Co Ltd
Original Assignee
Tencent Technology Shenzhen Co Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Tencent Technology Shenzhen Co Ltd filed Critical Tencent Technology Shenzhen Co Ltd
Priority to CN201910282055.9A priority Critical patent/CN109992354B/zh
Publication of CN109992354A publication Critical patent/CN109992354A/zh
Application granted granted Critical
Publication of CN109992354B publication Critical patent/CN109992354B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

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/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • G06F9/45558Hypervisor-specific management and integration aspects
    • 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/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • G06F9/45558Hypervisor-specific management and integration aspects
    • G06F2009/45562Creating, deleting, cloning virtual machine instances
    • 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/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • G06F9/45558Hypervisor-specific management and integration aspects
    • G06F2009/45575Starting, stopping, suspending or resuming virtual machine instances

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Stored Programmes (AREA)

Abstract

本申请涉及一种运行于终端的容器处理方法、装置、主体服务器、系统和存储介质,创建应用程序对象,所述应用程序对象所提供的服务基于目标容器实现;基于应用配置对象获取所述应用程序对象的配置注入信息,所述应用配置对象用于对所述应用程序对象进行所述配置注入信息的定义;根据所述配置注入信息发送配置信息注入指令至目标节点,所述配置信息注入指令用于指示所述目标节点在所述目标容器启动时,按照所述配置注入信息对所述目标容器进行配置。可以在不改变应用程序对象的情况下,丰富目标容器的配置信息,从而可以丰富目标容器调度的使用场景,提高目标容器调度的便利性,进而可以提高用户粘度。

Description

容器处理方法、装置、主体服务器、系统和存储介质
技术领域
本申请涉及虚拟化技术领域,特别是涉及一种容器处理方法、装置、主体服务器、系统和存储介质。
背景技术
随着信息技术的飞速发展,容器技术已经成为一种被大家广泛认可的服务器资源共享方式,容器技术可以在按需构建容器技术操作系统实例的过程当中为系统管理员提供极大的灵活性。
传统的容器处理方法在容器定义阶段对容器的各种配置信息进行定义,在容器启动之后若需要增加或修改容器的配置信息,需要重新启动容器,这使得基于容器的无法在配置信息更新的过程中继续提供服务。因此,用户粘度有待进一步提高。
发明内容
基于此,有必要针对上述技术问题,提供一种能够提高用户粘度的容器处理方法、装置、主体服务器、系统和存储介质。
一种容器处理方法,所述方法包括:
创建应用程序对象,所述应用程序对象所提供的服务基于目标容器实现;
基于应用配置对象获取所述应用程序对象的配置注入信息,所述应用配置对象用于对所述应用程序对象进行所述配置注入信息的定义;
根据所述配置注入信息发送配置信息注入指令至目标节点,所述配置信息注入指令用于指示所述目标节点在所述目标容器启动时,按照所述配置注入信息对所述目标容器进行配置。
一种容器处理装置,所述装置包括:
应用对象创建模块,用于创建应用程序对象,所述应用程序对象所提供的服务基于目标容器实现;
配置信息获取模块,用于基于应用配置对象获取所述应用程序对象的配置注入信息,所述应用配置对象用于对所述应用程序对象进行所述配置注入信息的定义;
配置信息注入模块,用于根据所述配置注入信息发送配置信息注入指令至目标节点,所述配置信息注入指令用于指示所述目标节点在所述目标容器启动时,按照所述配置注入信息对所述目标容器进行配置。
一种主体服务器,包括存储器和处理器,所述存储器存储有计算机程序,所述处理器执行所述计算机程序时实现以下步骤:
创建应用程序对象,所述应用程序对象所提供的服务基于目标容器实现;
基于应用配置对象获取所述应用程序对象的配置注入信息,所述应用配置对象用于对所述应用程序对象进行所述配置注入信息的定义;
根据所述配置注入信息发送配置信息注入指令至目标节点,所述配置信息注入指令用于指示所述目标节点在所述目标容器启动时,按照所述配置注入信息对所述目标容器进行配置。
一种容器处理系统,包括依次通信连接的主体服务器、Mesos主服务器及Mesos代理节点;
所述主体服务器,用于创建应用程序对象,所述应用程序对象所提供的服务基于目标容器实现;基于应用配置对象获取所述应用程序对象的配置注入信息,所述应用配置对象用于对所述应用程序对象进行所述配置注入信息的定义;将所述配置注入信息注入至所述应用程序对象中;将所述应用程序对象发送至所述Mesos主服务器;
所述Mesos主服务器,用于将接收到的所述应用程序对象转发至目标节点对应的所述Mesos代理节点;
所述Mesos代理节点,用于运行所述应用程序对象对应的目标容器。
一种计算机可读存储介质,其上存储有计算机程序,所述计算机程序被处理器执行时实现以下步骤:
创建应用程序对象,所述应用程序对象所提供的服务基于目标容器实现;
基于应用配置对象获取所述应用程序对象的配置注入信息,所述应用配置对象用于对所述应用程序对象进行所述配置注入信息的定义;
根据所述配置注入信息发送配置信息注入指令至目标节点,所述配置信息注入指令用于指示所述目标节点在所述目标容器启动时,按照所述配置注入信息对所述目标容器进行配置。
上述容器处理方法、装置、主体服务器、系统和存储介质,可以在不改变应用程序对象定义的情况下,采用另一个独立的应用配置对象的形式,在目标容器启动时按照配置注入信息对目标容器进行配置。因此,可以在不改变应用程序对象的情况下,丰富目标容器的配置信息,从而可以丰富目标容器调度的使用场景,提高目标容器调度的便利性,进而可以提高用户粘度。
附图说明
图1为一个实施例中容器处理方法的应用环境图示意图;
图2为一个实施例的容器处理方法的流程示意图;
图3为一具体实施例中的容器处理方法中应用程序对象的状态流转的示意图;
图4为一具体实施例中的容器处理方法中应用调度对象的状态流转的示意图;
图5为一个实施例中容器处理方法的系统框架结构图;
图6为一具体实施例中的容器处理方法的系统框架结构图;
图7为一具体实施例中的容器处理方法与Mesos融合后的架构结构图;
图8为一个具体实施例中的容器处理方法的实现逻辑图;
图9为一个实施例中容器处理装置的结构框图;
图10为一个实施例中主体服务器的结构示意图。
具体实施方式
为了使本申请的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本申请进行进一步详细说明。应当理解,此处描述的具体实施例仅仅用以解释本申请,并不用于限定本申请。
图1为一个实施例中容器处理方法的应用环境图示意图。本申请提供的容器处理方法,可应用于如图1所示的应用环境中。其中,主体服务器102通过网络与Mesos主服务器104进行通信。Mesos主服务器104与Mesos代理节点106通过网络进行通信。
本申请一个实施例的容器处理方法可以运行在主体服务器102上。主体服务器102创建应用程序对象,应用程序对象所提供的服务基于目标容器实现;基于应用配置对象获取应用程序对象的配置注入信息,应用配置对象用于对应用程序对象进行配置注入信息的定义;根据配置注入信息发送配置信息注入指令至Mesos主服务器,以使Mesos主服务器指示目标节点对应的Mesos代理节点在目标容器启动时,按照配置注入信息对目标容器进行配置。其中,主体服务器102可以是独立的物理服务器、物理服务器集群或者虚拟服务器。
如图2所示,在一个实施例中,提供了一种容器处理方法。该方法可以运行于图1中的主体服务器102。该容器处理方法,包括以下步骤:
S202,创建应用程序对象,应用程序对象所提供的服务基于目标容器实现。
在本实施例中,应用程序可以是通过对一个或多个容器进行定义,或者通过对一个或多个进程进行定义,提供服务的数据结构。应用程序对象为该应用程序的实例,可以用Application表示。因此,应用程序对象可以是一个或多个容器的组合,该容器的组合共享相同的网络空间。
容器是指在服务器资源共享方式中提供业务服务的基本单元。不同的容器可以提供不同的业务服务。通过容器可以把开发环境及应用整个打包,打包好的容器可以在任何的环境下运行,这样可以避免开发环境与运行环境不一致的问题。Application的属性包括但不限于:名字(name),命名空间(namespace),标签(Labels),实例个数(instance)。一个Application使用name.namespace的形式构建成唯一的ID,一个Application的不同实例角色地位相同,提供一致的服务。实例可以从0开始编号,实例的命名规则可以为name-number.namespace。Labels为自定义的key-value(标签关键字-标签值)对,可以用于对Application进行分类。
应用程序对象对容器进行定义时,Application的状态可以包括:Staging(准备)、Deploying(调度)、Error(错误)、Running(运行)、Abnormal(非正常)、Rolling Update(滚动更新)、Operating(操作)、Finish(完成)。应用程序对象还可以定义进程或进程组运行的相关配置,将进程或进程组作为无状态服务进行调度。
应用程序对象的状态流转如图3所示,在创建应用程序对象之后,未进行定义检查之前的状态为Staging。在进行定义检查时,检查Application的定义格式。若定义检查结果为通过则进入Deploying状态;若定义检查结果不通过则进入Error状态。在进入Deploying状态之后,进行状态检查,检查目标节点的资源及负载状态(资源负载状态)以及Application的资源负载情况。若状态结果为正常,则进入Running状态;若状态检查结果为错误,则进入Abnormal状态。进入Abnormal状态之后,需要重新调度,返回Deploying状态。在进入Running状态之后,需要按照预设时间继续进行状态检查,若状态检查结果为正常,则返回Running状态;若状态检查结果为错误,则进入Abnormal状态。
请继续参阅图3,若要对Application对应的目标容器进行扩缩容,则在进行扩缩容时,进入Operating状态,在扩缩容之后进行状态检查,若状态检查结果为正常,则返回Running状态;若状态检查结果为错误,则进入Abnormal状态。
请继续参阅图3,在Application的运行过程中,若需要对Application进行更新,则进入滚动更新状态。在滚动更新状态时,依次对Application中不少于两个的目标容器进行更新,每次对目标容器中的一个进行更新。在对Application的一个目标容器进行更新时,该Application对应的其它目标容器可以正常提供服务。由于各目标容器的更新是依次进行,而不是同时进行的,因此无需将正在运行的Application关闭重启。在滚动更新结束之后,也需要进行状态检查,若状态检查结果为正常,则返回Running状态;若状态检查结果为错误,则进入Abnormal状态。
在Application滚动更新过程中,可以按预设规则进行目标容器的依次更新,如从编号为0的实例进行,如果该实例更新成功,则继续下一个实例,直到所有更新完成;如果实例更新失败,则滚动更新暂停,需要通过用户决定是否重试或者回滚。
在主体服务器中,将Application翻译为Mesos理解的语言时,可以将Application用Task对应一个容器或一个进程进行定义,用TaskGroup对应一个容器组或一个进程组进行定义。容器组和Application的状态关系包括:Application对应的所有目标容器正常运行,则Application进入运行状态;如果有一个目标容器为不正常状态,主动终结该组内其他目标容器,根据所定义的编排调度策略,重新编排调度。
S204,基于应用配置对象获取应用程序对象的配置注入信息,应用配置对象用于对应用程序对象进行配置注入信息的定义。
应用配置对象为对应用程序对应的配置注入信息进行定义的数据结构的实例化对象。配置注入信息是对在应用程序对象定义的过程中、未定义的配置信息,但因服务需要而进行定义的配置信息。也即,应用配置对象是在创建应用功能程序对象之后创建的。
进一步地,应用配置对象可以包括第一应用配置对象,该第一应用配置对象所定义的内容,在使用时无需加解密便可以被应用程序对象引用。第一应用配置对象可以用Configmap表示。Configmap可以通过key-value(配置关键字-配置参数值)对进行定义。该配置关键字-配置参数值对,可以是base64编码格式。Configmap的属性包括:名字(name)和命名空间(namespace)。Configmap可以被相同namespace的Application所引用,当Application启动时,可以将引用的key(配置关键字)所对应的内容(即配置参数值)注入到目标容器制定的文件或者环境变量中,实现对目标容器服务的配置注入。
更进一步地,应用配置对象可以包括第二应用配置对象,该第二应用配置对象所定义的内容,在使用时需要加解密才可以被应用程序对象引用。第二应用配置对象可以用Secret表示。Secret和Configmap的数据结构类似,Secret的属性还包括加解密密码。Secret定义的内容由用户通过加解密密码进行自定义加密,注入到目标容器中后,也需要用户通过该加解密密码自行解密。
S206,根据配置注入信息发送配置信息注入指令至目标节点,配置信息注入指令用于指示目标节点在目标容器启动时,按照配置注入信息对目标容器进行配置。
该配置注入信息可以是目标节点在启动应用程序对象对应的目标容器时,注入到目标容器中去,即,在目标容器启动之前将配置注入信息的实际内容写入到目标容器中,以使得目标节点在启动目标容器时,按照配置注入信息对目标容器进行配置。
该配置注入信息还可以在应用程序对象启动之前注入到应用程序对象中去,即在应用程序对象启动之前将配置注入信息的实际内容写入到应用程序对象中,以使得在应用程序对象下发到目标节点后,在目标节点启动应用程序对象对应的目标容器时,按照配置注入信息对目标容器进行配置。
发送配置信息注入指令至目标节点的方式,可以是通过主体服务器将配置注入指令发送至目标节点,也可以是通过注入服务器将配置注入指令经过Mesos主服务器的作用,发送至目标节点对应的Mesos代理节点。
配置信息注入指令的形式可以是一条独立的指令,也可以是集成在应用程序对象中的一个属性,当应用程序对应下发至对应的目标节点时,将自动触发对应的配置信息注入指令,使得在目标节点启动应用程序对象对应的目标容器时,按照配置注入信息对目标容器进行配置。
基于本实施例的容器处理方法,创建应用程序对象,应用程序对象所提供的服务基于目标容器实现;基于应用配置对象获取应用程序对象的配置注入信息,应用配置对象用于对应用程序对象进行配置注入信息的定义;根据配置注入信息发送配置信息注入指令至目标节点,配置信息注入指令用于指示目标节点在目标容器启动时,按照配置注入信息对目标容器进行配置。如此,不仅基于应用程序对象中原有的配置信息进行配置,还可以在不改变应用程序对象定义的情况下,采用另一个独立的应用配置对象的形式,在目标容器启动时按照配置注入信息对目标容器进行配置。因此,可以在不改变应用程序对象的情况下,丰富目标容器的配置信息,从而可以丰富目标容器调度的使用场景,提高目标容器调度的便利性,进而可以提高用户粘度。
在其中一实施例中,根据配置注入信息发送配置信息注入指令至目标节点,包括:将配置注入信息注入至应用程序对象中;将应用程序对象下发至目标节点,以使目标节点在目标容器启动时,将配置注入信息注入到目标容器中。
在本实施例中,配置信息注入指令是集成在应用程序对象中的一个属性,当应用程序对应下发至对应的目标节点时,将自动触发对应的配置信息注入指令,使得在目标节点启动应用程序对象对应的目标容器时,按照配置注入信息对目标容器进行配置。
将配置注入信息注入至应用程序对象中,可以是在应用程序对象启动之前将配置注入信息注入到应用程序对象中去,即在应用程序对象启动之前将配置注入信息的实际内容写入到应用程序对象中,以使得在应用程序对象下发到目标节点后,在目标节点启动应用程序对象对应的目标容器时,按照配置注入信息对目标容器进行配置。配置注入信息的实际内容可以是指应用配置对象中配置关键字(key)的配置参数值(value)。
将应用程序对象下发至目标节点,可以是通过主体服务器将应用程序对象下发至目标节点;也可以是与Mesos管理框架融合,通过主体服务器将应用程序对象经过Mesos主服务器的作用,发送至目标节点对应的Mesos代理节点。其中,Mesos是Apache下的开源分布式资源管理框架,它被称为是分布式系统的内核。
基于本实施例的容器处理方法,将配置注入信息注入至应用程序对象中;通过将应用程序对象下发至目标节点的方式,使得目标节点在目标容器启动时,将配置注入信息注入到目标容器中。如此,不仅基于应用程序对象中原有的配置信息进行配置,还可以在不改变应用程序对象定义的情况下,采用另一个独立的应用配置对象的形式,在目标容器启动时按照配置注入信息对目标容器进行配置。因此,可以在不改变应用程序对象的情况下,丰富目标容器的配置信息,从而可以丰富目标容器调度的使用场景,提高目标容器调度的便利性,进而可以提高用户粘度。
在其中一实施例中,将应用程序对象下发至目标节点,包括:基于应用调度对象获取调度策略,应用调度对象用于对应用程序对象进行调度策略的定义;根据调度策略,确定应用程序对象的目标节点;将应用程序对象下发至目标节点。
应用调度对象的定义与一个应用程序对象的定义对应。应用程序对象可以用Deployment来表示,Deployment用于对应用程序对象进行自定义调度策略定义,尤其是,用于定义如何对Application进行滚动更新。自定义调度策略中,允许用户对滚动更新操作的过程中每次新创建的目标容器实例数量、删除的目标容器实例数量、各目标容器创建间隔、是否是手动操作等策略进行定义。
Deployment也具备名字(name)和命名空间(namespace)的属性。Deployment只能与相同命名空间下的Application进行对应。Deployment状态可以包括:Staging(准备)、Deploying(调度)、Error(错误)、Running(运行)、Pause(暂停)、Update(更新)、Deleting(删除)。
应用调度对象的状态流转如图4所示,在创建应用调度对象之后,未进行定义检查之前的状态为Staging。在进行定义检查时,检查Deployment的定义格式。若定义检查结果为通过则进入Deploying状态;若定义检查结果不通过则进入Error状态。在成功进入Deploying状态之后,进行状态检查,检查目标节点的资源及负载状态(资源负载状态)以及Deployment的资源负载情况。若状态结果为正常,则进入Running状态;若状态检查结果为错误,则进入Pause状态。
请继续参阅图4,若要对Application对应的目标容器进行扩缩容,则在进行扩缩容Application进行Operating状态时,或者,对Application进行更新,Application进入滚动更新状态时,Deployment进入Update状态。在每次对目标容器进行更新之后需要进行状态检查,若状态检查结果为正常,则返回Running状态;若状态检查结果为错误,则进入Pause状态。进入Pause状态之后,需要对目标容器进行修复、回滚,使得Deployment进入或者重新进入Update状态。在Deployment运行完之后,或更新完之后,需要删除Deployment,删除的状态称之为Deleting状态。
需要说明的是:在Deployment更新的过程中,当原有的目标容器实例全部删除,新的目标容器实例(个数通过instances参数定义)全部创建,则更新结束。在Deployment滚动更新过程中,可以按预设规则进行目标容器的依次更新,如从编号为0的实例进行,如果该实例更新成功,则继续下一个实例,直到所有更新完成;如果实例更新失败,则滚动更新暂停,需要通过用户决定是否重试或者回滚。如此,实现目标容器的滚动更新。
主体服务器可以根据调度策略,确定应用程序对象的目标节点。该调度策略可以基于应用程序对象的任意属性定义的。如,该调度策略可以是基于配置注入信息定义的。该调度策略也可以是基于目标节点的节点标识、硬件标识、网络地址等定义的,如节点编号、节点CPU编号、节点网络地址(IP地址)等。如此,可以丰富目标容器调度的使用场景,提高用户粘度。
将应用程序对象下发至目标节点的方式,可以是通过主体服务器将应用程序对象下发至目标节点;也可以是通过主体服务器将应用程序对象经过Mesos主服务器的作用,发送至目标节点对应的Mesos代理节点。
基于本实施例的容器处理方法,通过应用调度对象对应用程序对象的调度进行调度策略的定义。如此,可以方便用户对应用程序对象进行自定义调度策略的定义,从而可进一步提高用户粘度。
在其中一实施例中,根据调度策略,确定应用程序对象的目标节点,包括:在节点的运行过程中,对节点添加动态标签;根据基于动态标签的调度策略,确定应用程序对象的目标节点。
开发人员可以通过对节点添加标签的形式,对满足预设条件的节点进行标签,以方便对节点进行分类。预设条件可以是按照一种分类方式属于预设类别。如标签可以为“华南地区”、“华北地区”等,通过这样的地理区域标签对节点进行区域划分。又如,标签可以为“医疗领域”、“教育领域”等,通过这样的领域标签对节点提供的服务进行领域划分。可以理解地,开发人员可以根据自定义的规则对及节点的标签进行定义及分类。
在本实施例中,标签包括静态标签和动态标签。静态标签是指对该标签进行添加或修改时需要在关闭该节点的标签。动态标签,是指对该标签进行添加或修改时,可以无需关闭该节点的标签。动态标签的实现可以是基于滚动更新的方式实现动态标签的添加。
在本实施例中,该调度策略为基于动态标签的调度策略。因此,在根据基于动态标签的调度策略,确定应用程序对象的目标节点之前,需要在节点的运行过程中,对节点添加动态标签。如此,通过基于动态标签的调度策略确定目标节点,可以进一步丰富目标容器调度的场景,提高用户粘度。
在其中一个实施例中,容器处理方法在将应用程序对象下发至目标节点时,基于应用服务对象(可以用Service表示)获取目标节点的统一服务端口,由Mesos主服务器基于该统一服务端口将应用程序对象下发至目标节点对应的Mesos代理节点。可以通过标签对一个或多个应用程序对象进行整合,成为一个服务主体,通过统一的服务端口对外提供服务。Service也具有名字和命名空间,只能对具有相同命名空间的Application进行整合。如此,可以在统一的服务端口层面上对目标节点进行调度,而无需详细到节点层面,从而可以降低开发难度,提高用户粘度。
在其中一实施例中,根据调度策略,确定应用程序对象的目标节点,包括:采用链式调度的方式,在创建应用程序对象之前将调度策略注入调度链中;基于调度链中的调度策略对节点进行过滤和匹配,确定符合调度策略的目标节点。
调度链为存储调度策略的链式数据结构。当开发人员定义了一种新的调度策略时,需要将该调度策略注入到调度链中,在运用该调度策略时通过该调度链获取该调度策略。采用链式调度的方式将调度策略,在创建应用程序对象之前将调度策略注入调度链中,并基于调度链中的调度策略对节点进行过滤和匹配,确定符合调度策略的目标节点,如此为目标容器选择出合适的调度节点,完成容器编排。这种方式通过插件的形式对调度策略实现接口化,允许其他开发者通过调度插件实现自定义调度策略并注入到调度链中。既可以方便团队扩展与组合更为丰富的调度策略,也方便与其他系统对接、协调合作,并可以降低和其他系统的耦合性。
在其中一实施例中,应用程序对象包括目标节点信息的属性,目标节点信息包括目标节点的节点标识、网络地址或硬件标识中的至少一项;根据调度策略,确定应用程序对象的目标节点,包括:根据目标节点信息,确定应用程序对象的目标节点。
目标节点信息的属性用于对目标节点的信息进行限定。目标节点信息的属性的实质内容,可以是在定义应用程序对象时定义的,也可以是在配置注入信息注入至应用程序对象时注入到应用程序对象的。节点标识可以为对节点进行唯一标识的标识,如可以为节点编号。网络地址(IP地址)是指节点的网络地址。硬件标识可以为节点的预设硬件的标识,如可以为节点的处理器标识(具体如,CPU编号)。
在其中一个具体示例中,可以让目标容器的IP地址参与调度,例如指定目标容器调度使用固定IP地址。即使目标容器发生故障迁移,重新调度等,都可以一直使用该IP地址进行启动和运行。可以进一步基于已设计的调度策略接口,实现了基于IP地址调度,允许指定目标容器使用的IP地址。
在另一个具体示例中,通过应用程序对象包括CPU编号的属性形式,可以为目标容器绑定CPU编号,在应用程序对象下发到目标节点时,允许将目标容器绑定指定的CPU核运行。如此,支持CPU资源绑定与独占,支持NUMA(Non Uniform Memory AccessArchitecture,统一内存访问架构)特性,使众多服务器像单一系统那样运转,同时保留单一系统便于编程和管理的优点,减少目标容器在运行过程因为切换CPU带来的性能消耗和等待,提升容器服务性能。
在本实施例中,自定义的调度策略可以基于节点标识、网路地址或硬件标识确定,如此,可以进一步丰富目标容器调度的使用场景,提高用户粘度。
在其中一具体实施例中,调度策略可以通过静态标签、动态标签、Application已定义的资源信息,对节点进行筛选过滤从而实现对目标节点的确定。支持的调度方式包括但不限于以下9种:
1、常规调度方式,也称为CPU/内存调度,针对Application每个实例分配指定的CPU和内存数量。
2、唯一调度方式,用UNIQUE表示,针对Application的每个实例,指定静态/动态的关键字(key)的取值(value)唯一。
3、最大实例数限定方式,用MAXPER表示,针对Application,指定静态/动态的关键字(key)的取值(value)唯一时最多可运行的实例数。
4、集合调度方式,可以用CLUSTER表示,要求静态/动态的关键字(key)的取值(value)必须是指定范围内的值,限定实例部署在指定范围节点内。
5、相似调度方式,可以用LIKE表示,针对静态/动态的关键字(key)的取值(value)进行正则匹配,限定实例部署在指定范围节点内。
6、非相似调度方式,可以用UNLIKE表示,与相似调度方式相反。即,针对Application每个实例,对静态/动态的关键字(key)的取值(value)进行正则匹配,限定实例部署不在指定范围节点内。
7、组内均匀调度方式,可以用GROUPBY表示,针对Application各实例,要求静态/动态的关键字(key)的取值(value)选出的目标节点、实例均匀部署在目标节点上。
8、排除调度方式,可以用EXCLUDE表示,针对Application各实例,要求静态/动态的关键字(key)的取值(value)选出的目标节点,不能部署在该节点上。
9、数值匹配调度方式,可以用GREATER表示,通过数值型匹配,要求静态/动态的关键字(key)的取值(value)的取值为数字,并且大于指定值。
其中,静态或动态的关键字可以是静态标签、动态标签,或者Application已定义的资源信息。
在其中一实施例中,应用程序对象包括最大容器流量的属性,最大容器流量为对目标容器的最大网络流量的限定值;在创建应用程序对象之后,还包括:基于最大容器流量下发应用程序对象,使得目标节点在启动目标容器时对目标容器的最大网络流量进行限定。
主体服务器基于最大容器流量下发应用程序对象,使得目标节点在启动目标容器时对目标容器的最大网络流量进行限定。最大容器流量的属性用于对应用程序对象对应的目标容器的最大网络流量进行限定。该最大容器流量为对目标容器的最大网络流量的限定值。最大网络流量是指单位时间内目标容器可以提供的网络流量的最大值。可以理解地,该最大容器流量的属性可以是在定义应用程序对象时定义的;该最大容器流量的属性也可以是在定义应用配置对象时定义的,即可以是在配置信息注入时注入到应用程序对象中的。
由于应用程序对象包括最大容器流量的属性,基于最大容器流量下发应用程序对象,可以通过下发包括该最大容器流量属性的应用程序对象实现。
由于应用程序对象包括最大容器流量的属性,因此可以使得目标节点在启动目标容器时对目标容器的最大网络流量进行限定。如此,可以通过最大容器流量的属性对目标容器进行网络流量的控制。从而,可以保障容器服务的稳定性和可用性,避免容器服务被瞬间大流量冲垮,进一步提高用户粘度。
在其中一实施例中,目标节点为Mesos代理节点;基于最大容器流量下发应用程序对象,使得目标节点在启动目标容器时对目标容器的最大网络流量进行限定,包括:将应用程序对象下发至Mesos主服务器;由Mesos主服务器将应用程序对象下发至Mesos代理节点;由Mesos代理节点创建目标容器,并在目标容器启动时对目标容器的最大网络流量进行限定。
在本实施例中,主体服务器基于最大容器流量将应用程序对象下发至Mesos主服务器,然后由Mesos主服务器将应用程序对象下发至Mesos代理节点,再由Mesos代理节点创建目标容器,并在目标容器启动时对目标容器的最大网络流量进行限定。如此,实现基于最大容器流量下发应用程序对象,使得目标节点在启动目标容器时对目标容器的最大网络流量进行限定。
基于本实施例的容器处理方法,可以与原有的Mesos管理框架融合。其中,Mesos是Apache下的开源分布式资源管理框架,它被称为是分布式系统的内核。因此,基于本实施例的容器处理方法,能够支持基于Mesos管理框架的容器处理。
在其中一实施例中,容器处理方法在与Mesos管理框架融合时,系统的结构如图5所示。Mesos管理框架为多实例集群,通过Zookeeper(存储服务器)进行选举,选举出Mesosmaster(Mesos主服务器)。集群中的其他节点则为standby(附属)状态,可以称之为Mesos从服务器,不参与实际工作运行。只有当Mesos主服务器异常时,Zookeeper将从Mesos从服务器中重新选举Mesos主服务器,由重新选举出来的Mesos主服务器重新接管所有Mesos代理节点的链接并通过与Mesos代理节点的网络连接重新汇聚相关CPU和内存资源。所有通过Mesos主服务器提供的API(应用程序接口)与Mesos主服务器链接的应用程序,对于Mesos主服务器而言都为scheduler(调度器)。
其中,BK-Scheduler为本申请容器处理方法对应的调度器产品;HadoopScheduler为由Apache开发的分布式系统基础调度器;MPI Scheduler为消息调度器,其中,MPI的英文全称为:Message-Passing-Interface,表示消息传递接口。BK-Scheduler、Hadoop Scheduler及MPI Scheduler分别与Mesos主服务器网络连接。
存储服务器,主要用于对应用程序对象、应用配置对象等定义的资源进行资源存储、更新,资源负载情况的监听,以及对Mesos主服务器的选举。存储服务器与Mesos主服务器网络连接。
Mesos主服务器主要用于:汇聚通过Mesos代理节点所收集到的节点资源(CPU、内存等);通过名为Offer的消息将节点资源主动发送给已建立连接的主体服务器,该主体服务器上部署有BK-Scheduler,供主体服务器在进行容器调度时选择使用;接受主体服务器发起的指定资源的任务(task),并转发给Mesos代理节点,使得目标节点运行该任务,并接受目标节点的任务反馈,并反馈给主体服务器。
Mesos代理节点部署在需要被管理的物理机、虚拟机上。Mesos代理节点主要用于,不断运行收集所在服务器节点的剩余资源(CPU,内存),上报给Mesos主服务器;接受来自Mesos主服务器的任务,并运行该任务,检测任务状态,反馈给Mesos主服务器。
在其中一实施例中,创建应用程序对象之后,还包括:捕获用于指示对应用程序对象进行更新的应用更新指令,应用更新指令包括负载调整参数;基于负载调整参数发送负载调整指令至目标节点,以对应用程序对象进行负载调整。该负载调整参数是用于表示对应用程序对象的负载如何进行调整的参数。进一步地,该负载参数用于表示如何对对应用程序对象的目标容器的实例数量进行调整的参数。
捕获应用更新指令的方式,可以是接收其它服务器发送的应用更新指令的方式,捕获到用于指示对应用程序对象进行更新的应用更新指令。该其它服务器,可以是通过存储服务器对应用程序对象的资源及负载情况进行监控的控制服务器,也可以是任意第三方服务器发送过来对应用程序对象进行更新的应用更新指令。负载调整参数用于表示对应用程序对象的负载如何进行调整。如,该负载调整参数可以为一个负载值,表示调整至的目标容器的实例数量。又如,该负载调整参数可以为一个系数,表示将目标容器的实例数量调整为该系数与原目标容器实例数量的乘积。
发送负载调整指令至目标节点的方式,可以是通过主体服务器发送负载调整指令至目标节点;也可以是通过主体服务器,经过Mesos主服务器转发负载调整指令至目标节点对应的Mesos代理节点。
基于本实施例的容器处理方法,提供对应用程序对象进行负载调整的功能,如此方便开发人员根据业务的负载情况,如上升或下降,做一些扩容/缩容操作,从而进一步提高用户粘度。
在其中一实施例中,捕获用于指示对应用程序对象进行更新的应用更新指令,包括:基于扩缩容对象获取应用程序对象的扩缩容策略,扩缩容对象用于定义扩大或缩小应用程序对象的负载的策略;根据扩缩容策略,捕获用于指示对应用程序对象进行更新的应用更新指令。
扩缩容对象可以用Autoscaler表示,用于定义扩缩容策略,即扩大或缩小应用程序对象的负载的策略。其目的是为Deployment或者Application定义运行实例限额与性能参考标准。如,当Application运行的实时性能高于/低于定义的性能标准时,就进行实例扩容/缩容。如此,在满足扩缩容策略定义的条件时,通过捕获用于指示对应用程序对象进行更新的应用更新指令的方式自动进行扩缩容操作。这样为用户提供自行扩缩容提供途径,从而可以进一步提高用户粘度。具体如,通过人为操作进行扩缩容的方式,需要人为时刻关注并进行操作,其成本高,而且在一些服务流量突发的情况下,人为操作的方式可能来不及进行人为干预,服务就被激增的流量冲击而处于不可用状态;而当业务处于空闲时,又需要继续缩减服务实例,否则将存在较大的资源浪费。因此,基于本实施例,定义了扩缩容策略的实施方式,无需人为关注并进行扩缩容操作,在达到扩缩容策略定义的条件时,自动触发对应用程序对象进行更新的应用更新指令。可以快速实现扩缩容操作,提高业务的服务承载能力,并提升资源的使用率,可以大幅度缩短容器负载调整时间,降低人力成本,提升服务的稳定性。
在其中一实施例中,容器调度处理方法还提供资源定义对象(CRD,CustomResource Definition),用于对服务所需的资源进行自定义。在当前提供的应用程序对象、应用配置对象无法满足开发需求时,可以通过使用CRD进行数据结构定义,为用户提供自行定义资源提供途径,从而可以进一步提高用户粘度。
CRD需要定义的基础信息包括:kind,信息类型,与Application,Deployment类似,说明数据类型,定义CRD时该类型为CRD;Spec.name.kind,所定义的CRD的名称。需要说明的是,被定义出来的CRD标准字段包括:name(名字),namespace(命名空间),labels(标签),spec(自定义字段)。用户可以使用spec字段存储任意自定义资源和数据供调度策略使用。
在一个具体实施例中,Autoscaler通过一个自定义的数据结构进行定义,该自定义数据结构为CRD(Custom Resource Definition,资源定义对象)。该Autoscaler中包括对Deployment或者Application定义运行实例限额及性能参考标准。如,当Application运行的实时性能高于/低于定义的性能标准时,进行实例扩容/缩容。该自定义的CRD定义了以下属性:
Kind,表示类别,该数据定义为Autoscaler;
meta.labels,表示对该Autoscaler所标注的标签;
meta.name,表示Autoscaler的名字;
meta.namespace,表示Autoscaler所属的namespace(命名空间);
spec,表示基于CRD规则所自定义的数据内容;
scaleTaragetRef,表示Autoscaler所管理的应用主体,该应用主体的kind(类型)可以为Deployment或者Application。Name(名称)为对于类型的名字,deployment或者Application的namespace(命名空间)必须和Autoscaler的命名空间一致。
minInstance,表示最小实例数,是指当应用程序对象的性能低于设定标准时,允许运行的最低实例个数。
maxInstance,表示最大实例数,是指当应用程序对象的性能高于设定标准时,允许运行的最高实例个数。
metrics,衡量标准,为一系列性能设定标准,基础标准支持cpu和内存(memory)。target.kind,表示目标类型,定义该衡量标准的性能基线数值,包括averageUtiliazation(百分比平均值)和averageValue(平均数)。
target.variance:定义该基线允许的上下浮动范围。
扩缩容策略可以为:当在[averageUtiliazation–variance,averageUtiliazation+variance](或者[averageValue–variance,averageValue+variance])之间浮动时,不做任何操作。在低于averageValue–variance时会进行缩容操作,但实例数不低于minInstance;在高于averageValue+variance时进行扩容操作,但实例数不得高于maxInstance。
进一步地,还允许第三方系统通过标准的metrics接口提供其他数据定义,并将该定义加入到扩缩容策略中。
在该具体实施例中,在实时监控应用程序对象资源负载情况的过程中,会根据应用程序对象的实时负载以及定义的负载基线,对应用程序对象的负载在定义的时间长度内高于定义的负载基线时针对应用程序对象自动进行实例扩容,保障服务可用性;对应用程序对象负载在定义的时间长度内低于定义的负载基线时对应用程序对象进行缩容,保证容器服务稳定的同时也减少资源的消耗。
在其中一具体实施例中,主体服务器上部署的BK-Scheduler调度器向上提供API层,实现Application,Deployment,Service,Configmap,Secret,CRD以及AutoScaler的概念定义与相关特性,数据存储在开源软件zookeeper中。向下对接Mesos,将部分定义的数据类型翻译为Mesos可理解的任务,通过Mesos的API下发到各节点运行任务,并持续接收任务运行状态。该BK-Scheduler调度器的架构如图6所示,包括:
API层,用于对外提供HTTP API(超级链接形式的应用程序接口),用于操作各类已定义好的数据结构,例如Application,Deployment,Service,ConfigMap,Secret,CRD和AutoScaler。
逻辑处理层,用于接受API层转发过来的数据请求,针对不需要调度的Service、Configmap、Secret、CRD等,借助存储层实现数据存储。针对需要调度的Application、Deployment,关联并注入所需要Configmap、Secret,整合调度管理、状态管理确认节点状态,实现节点调度。
存储层,主要是封装对于外部事件存储的接口。本申请中可以采用Zookeeper的key-value(关键字-值)对,进行事件存储,通过该事件机制实现数据订阅。Zookeeper为分布式应用提供一致性服务的存储服务器。可以理解地,也可以采用具有事件存储功能的etcd(一种高可用的键值存储系统),consul(谷歌开源的一个服务发现、配置管理中心服务),redis(一个开源的使用ANSI C语言编写、支持网络、可基于内存亦可持久化的日志型、Key-Value数据库),couchdb(一个开源的面向文档的数据库管理系统)等。
服务对接层,主要的功能是将BK-Scheduler以Application为主体的容器调度信息翻译为Mesos可理解的任务信息,使用Mesos提供的任务API进行任务下发,任务状态反馈,集群资源实时反馈等。
状态管理,用于接受服务对阶层反馈回来的Application状态,并通知逻辑处理层,协助其实现节点及应用程序对象的状态管理。
调度管理,BK-Scheduler中针对调度管理抽象了接口,采用链式调用的方式,将多个已实现的调度插件在BK-Scheduler启动阶段注入调度链中,当需要对节点进行调度时,采用调度链中的调度插件进行资源过滤和匹配,为容器选择出合适的调度节点,完成容器编排。这样设计既方便团队扩展与组合更为丰富的调度策略,也方便与其他系统对接,并降低和其他系统的耦合性。
其中,调度插件是通过插件形式表现的调度策略。在其中一个具体实施例中,调度插件可以包括:Mesos资源池插件,用于实时接受Mesos主服务器反馈的各节点资源(CPU,Memory,静态标签)并进行缓存,提供对CPU、内存、静态标签调度匹配能力。动态标签插件,API层提供了接口允许用户对Mesos代理节点进行额外的标签,该标签是动态增删的,无需Mesos代理节点重启,由BK-Scheduler进行存储和维护。动态标签插件使用这些新的标签参与节点匹配和过滤,实现更为便捷的调度机制。IP资源插件,在容器支撑网络中,IP(网络地址)资源也是重要的调度资源之一。可以通过调度API实现了内部IP资源系统对接。在BK-Scheduler的调度策略中,可以让容器IP地址参与调度,例如指定容器调度使用固定IP地址,及时容器发生故障迁移,重新调度等,都可以一直使用该IP地址进行启动和运行。
在协作形式上,BK-Scheduler抽象并开放调度策略的接口,如果需要集成第三方系统,就可以采用扩展调度插件的方式进行对接。针对任意扩展插件,都可以为任何节点自定义命名不冲突的动态标签,便于在调度算法中进行引用。
与上述BK-Scheduler调度器的架构对应的,在其中一具体实施例中,在容器处理的过程中,基于应用程序对象的时序如图7所示。主体服务器的API层接收创建应用程序对象的指令(如create Application),创建应用程序对象。通过API层在格式检验通过之后,发送调度指令(dispatch)至逻辑处理层(用Logic表示)。将逻辑处理层将创建的应用程序对象通过存储层存储至存储服务器(Store App),并通过存储层返回存储结果(返回Storeresult)。基于应用配置对象获取应用程序对象的配置注入信息,应用配置对象在创建并存储应用程序对象之后创建并存储。采用存储层获取通过应用配置对象(Configmap或Secret)获取配置注入信息,将获取的配置注入信息返回到逻辑处理层。在逻辑处理层将配置注入信息写入到应用程序对象中。通过逻辑处理层整合调度管理、状态管理确认容器状态,实现节点调度。在节点调度过程中,通过逻辑处理层发送节点调度指令至调度管理,通过调度管理采用插件链中的调度插件确定目标节点,返回目标节点的节点列表至逻辑处理层。逻辑处理层通过服务对接对应用程序对象进行下发,在Application下发过程过中,服务对接将BK-Scheduler理解的Application对象翻译为Mesos理解的task(任务)下发至Mesos主服务器,再由Mesos主服务器转发至目标节点对应的Mesos代理节点。通过服务对接接收Mesos主服务器接收的目标节点对应的Mesos代理节点返回的应用程序对象的资源负载状态信息,在通过状态管理对资源负载状态信息进行管理,将状态变化通知返回至逻辑处理层。逻辑处理层再将应用程序对象更新后的资源负载状态后通过存储层存储至存储服务器。再通过存储层返回存储服务器的存储结果。请继续参阅图7,在需要使用应用程序对象时,通过API层接收获取应用程序对象指令(如,Get Application)。然后通过API层发送调度指令(dispatch)至逻辑处理层。逻辑处理层通过存储层发送获取应用程序对象指令(如,Get App)至存储服务器。通过存储层将存储服务器的存储结果返回至逻辑处理层,再由逻辑处理层返回应用程序对象(return App)至API接口层,使得开发人员可以通过API接口层获取到应用程序对象。
如图8所示,在其中一实施例中,应用更新指令可以来自于控制服务器,控制管理器(HPA-Controller)部署于控制服务器上;控制服务器的控制管理器用于通过存储服务器监听应用程序对象的资源负载情况,在监听到应用程序对象的资源负载情况满足扩缩容条件时,发送应用更新指令。如此,使得主体服务器在应用程序对象运行的过程中,接收到用于指示对应用程序对象进行更新的应用更新指令。
请继续参阅图8,资源负载情况可以包括实现业务逻辑的应用程序对象的目标容器的CPU使用率、内存使用率,以及业务逻辑中自定义的衡量标准相关数据(metric),该衡量标准可以是第三方系统推送至控制服务器的。控制服务器还可以用于通过存储服务器(Zookeeper)监听主体服务器的BK-Scheduler写入的扩缩容对象的增加、修改及删除,以监听应用程序对象的资源负载情况是否满足扩缩容条件。控制服务器通过存储服务器监听主机服务器写入的应用程序对象或应用配置对对象的增加、删除与修改。控制服务器还用于采集目标节点对应的Mesos代理节点资源负载情况。目标节点上运行应用程序对象的目标容器(container),可以基于cadvisor(一种容器运行状态监控软件)实现对目标节点上运行的应用程序对象的目标容器的资源负载情况的采集。控制服务器还用于关联扩缩容对象与应用程序对象,查找到应用程序对象对应的目标容器所在的目标节点,即提供服务的容器所在的Mesos代理节点(Mesos Agent),该目标节点可以通过物理机列表或虚拟机列表的形式体现。监听目标节点上应用程序对象的资源负载情况,该负载资源情况可以包括但不限于:应用程序对象的CPU使用率、内存使用率,以及应用程序对象的实例数量即应用程序对象的目标容器数量。当该目标节点的资源负载情况满足对应用程序对象的扩缩容条件时,发送应用更新指令至主体服务器(Mesos master),主体服务器上部署的BK-Scheduler调度器接收该应用更新指令(如,用于扩缩容的应用更新指令可以为Deployment scaleup/down)。
在其中一实施例中,应用程序对象包括操作状态;在应用程序对象运行的过程中,若接收到用于指示对应用程序对象进行更新的应用更新指令,将应用程序对象的状态修改为操作状态;在操作状态内,基于负载调整参数发送负载调整指令至目标节点,以对应用程序对象进行负载调整。
在应用程序对象运行的过程的状态可以为运行(Running)状态。在本实施例中,对应用程序对象进行扩缩容的运行状态进行了定义,在操作(Operating)状态内对应用程序对象进行扩缩容操作。如此,可以方便对应用程序对象的目标容器进行管理。
进一步地,可以按预设策略获取目标节点对应用程序对象进行负载调整之后返回的资源负载状态,当资源负载状态正常时,将应用程序对象的状态修改为运行状态。该预设策略可以是每隔预设时间间隔获取,也可以是设定的其它条件触发时获取。获取目标节点对应用程序对象进行负载调整之后返回的资源负载状态的方式,可以是通过向目标节点请求资源负载状态的方式获取,也可以是通过访问存储服务器的方式获取目标节点对应用程序对象进行负载调整之后返回的资源负载状态。该存储服务器用于存储目标节点对应用程序对象的资源负载状态。
应该理解的是,虽然图2的流程图中的各个步骤按照箭头的指示依次显示,但是这些步骤并不是必然按照箭头指示的顺序依次执行。除非本文中有明确的说明,这些步骤的执行并没有严格的顺序限制,这些步骤可以以其它的顺序执行。而且,图2中的至少一部分步骤可以包括多个子步骤或者多个阶段,这些子步骤或者阶段并不必然是在同一时刻执行完成,而是可以在不同的时刻执行,这些子步骤或者阶段的执行顺序也不必然是依次进行,而是可以与其它步骤或者其它步骤的子步骤或者阶段的至少一部分轮流或者交替地执行。
在一个实施例中,如图9所示,提供了一种与上述运行于主体服务器的容器处理方法对应的容器处理装置,包括:
应用对象创建模块902,用于创建应用程序对象,所述应用程序对象所提供的服务基于目标容器实现;
配置信息获取模块904,用于基于应用配置对象获取所述应用程序对象的配置注入信息,所述应用配置对象用于对所述应用程序对象进行所述配置注入信息的定义;
配置信息注入模块906,用于根据所述配置注入信息发送配置信息注入指令至目标节点,所述配置信息注入指令用于指示所述目标节点在所述目标容器启动时,按照所述配置注入信息对所述目标容器进行配置。
基于本实施例的容器处理装置,创建应用程序对象,应用程序对象所提供的服务基于目标容器实现;基于应用配置对象获取应用程序对象的配置注入信息,应用配置对象用于对应用程序对象进行配置注入信息的定义;根据配置注入信息发送配置信息注入指令至目标节点,配置信息注入指令用于指示目标节点在目标容器启动时,按照配置注入信息对目标容器进行配置。如此,不仅基于应用程序对象中原有的配置信息进行配置,还可以在不改变应用程序对象定义的情况下,采用另一个独立的应用配置对象的形式,在目标容器启动时按照配置注入信息对目标容器进行配置。因此,可以在不改变应用程序对象的情况下,丰富目标容器的配置信息,从而可以丰富目标容器调度的使用场景,提高目标容器调度的便利性,进而可以提高用户粘度。
在其中一实施例中,配置信息注入模块906,用于将所述配置注入信息注入至所述应用程序对象中,并将所述应用程序对象下发至目标节点,以使所述目标节点在所述目标容器启动时,将所述配置注入信息注入到所述目标容器中。
在其中一实施例中,配置信息注入模块906,还用于基于应用调度对象获取调度策略,所述应用调度对象用于对所述应用程序对象进行调度策略的定义;根据所述调度策略,确定所述应用程序对象的目标节点;并将所述应用程序对象下发至所述目标节点。
在其中一实施例中,配置信息注入模块906,还用于在节点的运行过程中,对所述节点添加动态标签;根据基于所述动态标签的所述调度策略,确定所述应用程序对象的目标节点。
在其中一实施例中,配置信息注入模块906,还用于采用链式调度的方式,在创建所述应用程序对象之前将所述调度策略注入调度链中;基于所述调度链中的所述调度策略对节点进行过滤和匹配,确定符合所述调度策略的目标节点。
在其中一实施例中,所述应用程序对象包括目标节点信息的属性,所述目标节点信息包括所述目标节点的节点标识、网络地址或硬件标识中的至少一项;配置信息注入模块906,还用于根据所述目标节点信息,确定所述应用程序对象的目标节点。
在其中一实施例中,所述应用程序对象包括最大容器流量的属性,所述最大容器流量为对所述目标容器的最大网络流量的限定值;
所述装置还包括:网络流量控制模块,用于在应用对象创建模块902创建应用程序对象之后,基于所述最大容器流量下发所述应用程序对象,使得所述目标节点在启动所述目标容器时对所述目标容器的最大网络流量进行限定。
在其中一实施例中,网络流量控制模块,用于将所述应用程序对象下发至Mesos主服务器;由所述Mesos主服务器将所述应用程序对象下发至所述Mesos代理节点;由所述Mesos代理节点创建所述目标容器,并在所述目标容器启动时对所述目标容器的最大网络流量进行限定。
在其中一实施例中,所述装置还包括:应用负载调整模块,用于在应用对象创建模块902创建应用程序对象之后,捕获用于指示对所述应用程序对象进行更新的应用更新指令,所述应用更新指令包括负载调整参数;并基于所述负载调整参数发送负载调整指令至所述目标节点,以对所述应用程序对象进行负载调整。
在其中一实施例中,应用负载调整模块,还用于基于扩缩容对象获取所述应用程序对象的扩缩容策略,所述扩缩容对象用于定义扩大或缩小所述应用程序对象的负载的策略;根据所述扩缩容策略,捕获用于指示对所述应用程序对象进行更新的应用更新指令。
在其中一实施例中,所述应用程序对象包括操作状态;应用负载调整模块,还用于在所述应用程序对象运行的过程中,若接收到用于指示对所述应用程序对象进行更新的应用更新指令,将所述应用程序对象的状态修改为所述操作状态;在所述操作状态内,基于所述负载调整参数发送负载调整指令至所述目标节点,以对所述应用程序对象进行负载调整。
如图10所示,在一个实施例中,提供了一种主机服务器,该主机服务器可以是独立的物理服务器、物理服务器集群。该主机服务器包括通过系统总线连接的处理器、存储器和网络接口。其中,该主机服务器的处理器用于提供计算和控制能力。该主机服务器的存储器包括非易失性存储介质、内存储器。该非易失性存储介质存储有操作系统和计算机程序。该内存储器为非易失性存储介质中的操作系统和计算机程序的运行提供环境。该计算机设备的网络接口用于与外部的Mesos主服务器通过网络连接通信。该计算机程序被处理器执行时以实现一种容器处理方法。
本领域技术人员可以理解,图10中示出的结构,仅仅是与本申请方案相关的部分结构的框图,并不构成对本申请方案所应用于其上的计算机设备的限定,具体的计算机设备可以包括比图中所示更多或更少的部件,或者组合某些部件,或者具有不同的部件布置。
在一个实施方式中,提供了一种主体服务器。该主体服务器,包括存储器和处理器,所述存储器存储有计算机程序,所述处理器执行所述计算机程序时实现上述容器处理方法的步骤。
在一个实施方式中,提供一种计算机可读存储介质,其上存储有计算机程序,所述计算机程序被处理器执行时实现上述容器处理方法的步骤。
在一个实施方式中,如图1所示,提供一种与上述容器处理方法对应的容器处理系统;该容器处理系统包括依次通信连接的主体服务器、Mesos主服务器及Mesos代理节点;
所述主体服务器,用于创建应用程序对象,所述应用程序对象所提供的服务基于目标容器实现;基于应用配置对象获取所述应用程序对象的配置注入信息,所述应用配置对象用于对所述应用程序对象进行所述配置注入信息的定义;将所述配置注入信息注入至所述应用程序对象中;将所述应用程序对象发送至所述Mesos主服务器;
所述Mesos主服务器,用于将接收到的所述应用程序对象转发至目标节点对应的所述Mesos代理节点;
所述Mesos代理节点,用于运行所述应用程序对象对应的目标容器。
在一个实施例中,目标节点是指运行目标容器的节点,也即运行目标容器的Mesos代理节点。
基于本实施例的容器处理系统,所述主体服务器,用于创建应用程序对象,所述应用程序对象所提供的服务基于目标容器实现;基于应用配置对象获取所述应用程序对象的配置注入信息,所述应用配置对象用于对所述应用程序对象进行所述配置注入信息的定义;将所述配置注入信息注入至所述应用程序对象中;将所述应用程序对象发送至所述Mesos主服务器;所述Mesos主服务器,用于将接收到的所述应用程序对象转发至目标节点对应的所述Mesos代理节点。所述Mesos代理节点,用于运行所述应用程序对象对应的目标容器。如此,不仅基于应用程序对象中原有的配置信息进行配置,还可以在不改变应用程序对象定义的情况下,采用另一个独立的应用配置对象的形式,在目标容器启动时按照配置注入信息对目标容器进行配置。因此,可以在不改变应用程序对象的情况下,丰富目标容器的配置信息,从而可以丰富目标容器调度的使用场景,提高目标容器调度的便利性,进而可以提高用户粘度。
在其中一实施例中,该容器处理系统还包括:与主体服务器通信连接的存储服务器;该存储服务器,用于对在主体服务器上定义的资源对象进行资源存储。该资源对象包括应用程序对象、应用配置对象、应用调度对象、扩缩容对象等对象。
在其中一实施例中,该容器处理系统还包括:与主体服务器及存储服务器通信连接的控制服务器;该控制服务器,用于通过存储服务器监听应用程序对象的资源负载情况,在监听到应用程序对象的资源负载情况满足扩缩容条件时,发送应用更新指令至所述主体服务器。
本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,是可以通过计算机程序来指令相关的硬件来完成,所述的计算机程序可存储于一非易失性计算机可读取存储介质中,该计算机程序在执行时,可包括如上述各方法的实施例的流程。其中,本申请所提供的各实施例中所使用的对存储器、存储、数据库或其它介质的任何引用,均可包括非易失性和/或易失性存储器。非易失性存储器可包括只读存储器(ROM)、可编程ROM(PROM)、电可编程ROM(EPROM)、电可擦除可编程ROM(EEPROM)或闪存。易失性存储器可包括随机存取存储器(RAM)或者外部高速缓冲存储器。作为说明而非局限,RAM以多种形式可得,诸如静态RAM(SRAM)、动态RAM(DRAM)、同步DRAM(SDRAM)、双数据率SDRAM(DDRSDRAM)、增强型SDRAM(ESDRAM)、同步链路(Synchlink)DRAM(SLDRAM)、存储器总线(Rambus)直接RAM(RDRAM)、直接存储器总线动态RAM(DRDRAM)、以及存储器总线动态RAM(RDRAM)等。
以上实施例的各技术特征可以进行任意的组合,为使描述简洁,未对上述实施例中的各个技术特征所有可能的组合都进行描述,然而,只要这些技术特征的组合不存在矛盾,都应当认为是本说明书记载的范围。
以上所述实施例仅表达了本申请的几种实施方式,其描述较为具体和详细,但并不能因此而理解为对发明专利范围的限制。应当指出的是,对于本领域的普通技术人员来说,在不脱离本申请构思的前提下,还可以做出若干变形和改进,这些都属于本申请的保护范围。因此,本申请专利的保护范围应以所附权利要求为准。

Claims (15)

1.一种容器处理方法,所述方法包括:
创建应用程序对象,所述应用程序对象所提供的服务基于目标容器实现;所述应用程序对象为所述应用程序的实例;
基于应用配置对象获取所述应用程序对象的配置注入信息,所述应用配置对象为对所述应用程序对象对应的所述配置注入信息进行定义的数据结构的实例化对象;
根据所述配置注入信息发送配置信息注入指令至目标节点,所述配置信息注入指令用于指示所述目标节点在所述目标容器启动时,按照所述配置注入信息对所述目标容器进行配置。
2.根据权利要求1所述的方法,其特征在于,所述根据所述配置注入信息发送配置信息注入指令至目标节点,包括:
将所述配置注入信息注入至所述应用程序对象中;
将所述应用程序对象下发至目标节点,以使所述目标节点在所述目标容器启动时,将所述配置注入信息注入到所述目标容器中。
3.根据权利要求2所述的方法,其特征在于,所述将所述应用程序对象下发至目标节点,包括:
基于应用调度对象获取调度策略,所述应用调度对象用于对所述应用程序对象进行所述调度策略的定义;
根据所述调度策略,确定所述应用程序对象的目标节点;
将所述应用程序对象下发至所述目标节点。
4.根据权利要求3所述的方法,其特征在于,所述根据所述调度策略,确定所述应用程序对象的目标节点,包括:
在节点的运行过程中,对所述节点添加动态标签;
根据基于所述动态标签的所述调度策略,确定所述应用程序对象的目标节点。
5.根据权利要求3所述的方法,其特征在于,所述根据所述调度策略,确定所述应用程序对象的目标节点,包括:
采用链式调度的方式,在创建所述应用程序对象之前将所述调度策略注入调度链中;
基于所述调度链中的所述调度策略对节点进行过滤和匹配,确定符合所述调度策略的目标节点。
6.根据权利要求3所述的方法,其特征在于:
所述应用程序对象包括目标节点信息的属性,所述目标节点信息包括所述目标节点的节点标识、网络地址或硬件标识中的至少一项;
所述根据所述调度策略,确定所述应用程序对象的目标节点,包括:根据所述目标节点信息,确定所述应用程序对象的目标节点。
7.根据权利要求1所述的方法,其特征在于:
所述应用程序对象包括最大容器流量的属性,所述最大容器流量为对所述目标容器的最大网络流量的限定值;
在创建应用程序对象之后,还包括:基于所述最大容器流量下发所述应用程序对象,使得所述目标节点在启动所述目标容器时对所述目标容器的最大网络流量进行限定。
8.根据权利要求7所述的方法,其特征在于,所述目标节点为Mesos代理节点;所述基于所述最大容器流量下发所述应用程序对象,使得所述目标节点在启动所述目标容器时对所述目标容器的最大网络流量进行限定,包括:
将所述应用程序对象下发至Mesos主服务器;
由所述Mesos主服务器将所述应用程序对象下发至所述Mesos代理节点;
由所述Mesos代理节点创建所述目标容器,并在所述目标容器启动时对所述目标容器的最大网络流量进行限定。
9.根据权利要求1所述的方法,其特征在于,所述创建应用程序对象之后,还包括:
捕获用于指示对所述应用程序对象进行更新的应用更新指令,所述应用更新指令包括负载调整参数;
基于所述负载调整参数发送负载调整指令至所述目标节点,以对所述应用程序对象进行负载调整。
10.根据权利要求9所述的方法,其特征在于,所述捕获用于指示对所述应用程序对象进行更新的应用更新指令,包括:
基于扩缩容对象获取所述应用程序对象的扩缩容策略,所述扩缩容对象用于定义扩大或缩小所述应用程序对象的负载的策略;
根据所述扩缩容策略,捕获用于指示对所述应用程序对象进行更新的应用更新指令。
11.根据权利要求9所述的方法,其特征在于,所述应用程序对象包括操作状态;
在所述应用程序对象运行的过程中,若接收到用于指示对所述应用程序对象进行更新的应用更新指令,将所述应用程序对象的状态修改为所述操作状态;
在所述操作状态内,基于所述负载调整参数发送负载调整指令至所述目标节点,以对所述应用程序对象进行负载调整。
12.一种容器处理装置,所述装置包括:
应用对象创建模块,用于创建应用程序对象,所述应用程序对象所提供的服务基于目标容器实现;所述应用程序对象为所述应用程序的实例;
配置信息获取模块,用于基于应用配置对象获取所述应用程序对象的配置注入信息,所述应用配置对象为对所述应用程序对象对应的所述配置注入信息进行定义的数据结构实例化对象;
配置信息注入模块,用于根据所述配置注入信息发送配置信息注入指令至目标节点,所述配置信息注入指令用于指示所述目标节点在所述目标容器启动时,按照所述配置注入信息对所述目标容器进行配置。
13.一种主体服务器,包括存储器和处理器,所述存储器存储有计算机程序,所述处理器执行所述计算机程序时实现权利要求1-11任意一项所述的方法的步骤。
14.一种容器处理系统,包括依次通信连接的主体服务器、Mesos主服务器及Mesos代理节点;
所述主体服务器,用于创建应用程序对象,所述应用程序对象所提供的服务基于目标容器实现;所述应用程序对象为所述应用程序的实例;基于应用配置对象获取所述应用程序对象的配置注入信息,所述应用配置对象为对所述应用程序对象对应的所述配置注入信息进行定义的数据结构的实例化对象;将所述配置注入信息注入至所述应用程序对象中;将所述应用程序对象发送至所述Mesos主服务器;
所述Mesos主服务器,用于将接收到的所述应用程序对象转发至目标节点对应的所述Mesos代理节点;
所述Mesos代理节点,用于运行所述应用程序对象对应的所述目标容器。
15.一种计算机可读存储介质,其上存储有计算机程序,所述计算机程序被处理器执行时实现权利要求1-11任意一项所述的方法的步骤。
CN201910282055.9A 2019-04-09 2019-04-09 容器处理方法、装置、主体服务器、系统和存储介质 Active CN109992354B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201910282055.9A CN109992354B (zh) 2019-04-09 2019-04-09 容器处理方法、装置、主体服务器、系统和存储介质

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201910282055.9A CN109992354B (zh) 2019-04-09 2019-04-09 容器处理方法、装置、主体服务器、系统和存储介质

Publications (2)

Publication Number Publication Date
CN109992354A CN109992354A (zh) 2019-07-09
CN109992354B true CN109992354B (zh) 2021-02-19

Family

ID=67131165

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201910282055.9A Active CN109992354B (zh) 2019-04-09 2019-04-09 容器处理方法、装置、主体服务器、系统和存储介质

Country Status (1)

Country Link
CN (1) CN109992354B (zh)

Families Citing this family (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN111489490B (zh) * 2019-01-28 2022-05-06 菜鸟智能物流控股有限公司 物流对象容器发生异常事件的处理方法、装置及对象容器
CN111130925B (zh) * 2019-11-29 2022-08-26 广州文远知行科技有限公司 资源监控方法、装置、计算机设备和存储介质
CN111552672B (zh) * 2020-02-19 2023-09-15 中国船舶工业系统工程研究院 一种基于ZooKeeper的分布式服务状态一致性维护方法及装置
CN111506358B (zh) * 2020-03-23 2023-10-20 聚好看科技股份有限公司 更新容器配置的方法及装置
CN111464659A (zh) * 2020-04-27 2020-07-28 广州虎牙科技有限公司 节点的调度、节点的预选处理方法、装置、设备及介质
CN111708609A (zh) * 2020-06-19 2020-09-25 中国—东盟信息港股份有限公司 一种基于Kubernetes容器配置字典和保密字典的实现方法及其系统
CN112328320B (zh) * 2020-10-14 2023-09-19 许继集团有限公司 一种基于consul的电网调度系统配置管理装置
CN112667350A (zh) * 2020-12-23 2021-04-16 广州三七互娱科技有限公司 配置调度方法、装置及系统
CN112839239B (zh) * 2020-12-30 2023-03-21 广州虎牙科技有限公司 一种音视频加工的方法、装置及服务器
CN115277427B (zh) * 2022-05-16 2024-04-26 上海上讯信息技术股份有限公司 一种容器化部署的代理注册的方法及设备

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2009052424A2 (en) * 2007-10-19 2009-04-23 Kubisys Inc. Virtual computing environments
CN106991321A (zh) * 2017-04-18 2017-07-28 北京元心科技有限公司 多容器系统中无痕运行应用程序的方法及装置
CN108039963A (zh) * 2017-12-05 2018-05-15 腾讯科技(深圳)有限公司 一种容器配置方法、装置及存储介质

Family Cites Families (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9015709B2 (en) * 2011-03-08 2015-04-21 Rackspace Us, Inc. Hypervisor-agnostic method of configuring a virtual machine
US9075638B2 (en) * 2012-08-14 2015-07-07 Atlassian Corporation Pty Ltd. Efficient hosting of virtualized containers using read-only operating systems
EP3364623B1 (en) * 2016-02-25 2022-05-04 Huawei Technologies Co., Ltd. Method for automatically deploying application, and cloud management node
CN106020930B (zh) * 2016-05-13 2019-07-23 深圳市中润四方信息技术有限公司 一种基于应用容器的应用管理方法及系统
CN106445585B (zh) * 2016-08-30 2019-10-01 中国民生银行股份有限公司 基于容器技术的应用部署方法和系统
CN107329800B (zh) * 2017-06-29 2019-11-05 北京北信源软件股份有限公司 一种基于Docker平台的中间件应用管控方法和装置
CN108958927B (zh) * 2018-05-31 2023-04-18 康键信息技术(深圳)有限公司 容器应用的部署方法、装置、计算机设备和存储介质

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2009052424A2 (en) * 2007-10-19 2009-04-23 Kubisys Inc. Virtual computing environments
CN106991321A (zh) * 2017-04-18 2017-07-28 北京元心科技有限公司 多容器系统中无痕运行应用程序的方法及装置
CN108039963A (zh) * 2017-12-05 2018-05-15 腾讯科技(深圳)有限公司 一种容器配置方法、装置及存储介质

Also Published As

Publication number Publication date
CN109992354A (zh) 2019-07-09

Similar Documents

Publication Publication Date Title
CN109992354B (zh) 容器处理方法、装置、主体服务器、系统和存储介质
US11226847B2 (en) Implementing an application manifest in a node-specific manner using an intent-based orchestrator
CN107515776B (zh) 业务不间断升级方法、待升级节点和可读存储介质
US10896102B2 (en) Implementing secure communication in a distributed computing system
CN113169952B (zh) 一种基于区块链技术的容器云管理系统
US9632878B1 (en) Verification of database table partitions during backup
US9253265B2 (en) Hot pluggable extensions for access management system
CN109189334B (zh) 一种区块链网络服务平台及其扩容方法、存储介质
US20120102480A1 (en) High availability of machines during patching
US20110289499A1 (en) Techniques to automatically update software applications
JP2012520504A (ja) デバイスおよびウェブ・サービスにわたってブラウザー・キャッシュを同期させるためのプログラミング・モデル
CN112291298B (zh) 异构系统的数据传输方法、装置、计算机设备和存储介质
CN109460252B (zh) 基于git的配置文件处理方法、装置和计算机设备
US20220283846A1 (en) Pod deployment method and apparatus
CN114168179A (zh) 微服务管理方法、装置、计算机设备和存储介质
CN107992491A (zh) 一种分布式文件系统、数据访问和数据存储的方法及装置
CN113204353A (zh) 一种大数据平台组件部署方法及装置
CN109697112B (zh) 分布式集约化一站式作业系统和实现方法
CN112905306A (zh) 多集群容器管理方法、装置、电子设备和存储介质
CN112199200B (zh) 资源调度方法、装置、计算机设备和存储介质
CN115357198B (zh) 存储卷的挂载方法及装置、存储介质及电子设备
CN115037757B (zh) 一种多集群服务管理系统
CN115774700A (zh) 文件共享方法、装置、计算机设备及存储介质
CN111767345B (zh) 建模数据同步方法、装置、计算机设备及可读存储介质
CN114172903A (zh) slurm调度系统的节点扩容方法、装置、设备和介质

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant