CN113220416B - 基于云平台的集群节点伸缩系统及实现方法和运行方法 - Google Patents

基于云平台的集群节点伸缩系统及实现方法和运行方法 Download PDF

Info

Publication number
CN113220416B
CN113220416B CN202110467358.5A CN202110467358A CN113220416B CN 113220416 B CN113220416 B CN 113220416B CN 202110467358 A CN202110467358 A CN 202110467358A CN 113220416 B CN113220416 B CN 113220416B
Authority
CN
China
Prior art keywords
node
virtual machine
cluster
resource pool
request
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
CN202110467358.5A
Other languages
English (en)
Other versions
CN113220416A (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.)
Wuhan Optical Network Information Technology Co ltd
Fiberhome Telecommunication Technologies Co Ltd
Original Assignee
Wuhan Optical Network Information Technology Co ltd
Fiberhome Telecommunication Technologies 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 Wuhan Optical Network Information Technology Co ltd, Fiberhome Telecommunication Technologies Co Ltd filed Critical Wuhan Optical Network Information Technology Co ltd
Priority to CN202110467358.5A priority Critical patent/CN113220416B/zh
Publication of CN113220416A publication Critical patent/CN113220416A/zh
Application granted granted Critical
Publication of CN113220416B publication Critical patent/CN113220416B/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
    • G06F8/00Arrangements for software engineering
    • G06F8/60Software deployment
    • G06F8/61Installation
    • G06F8/63Image based installation; Cloning; Build to order
    • 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/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/5011Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resources being hardware resources other than CPUs, Servers and Terminals
    • G06F9/5022Mechanisms to release resources
    • 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/5061Partitioning or combining of resources
    • G06F9/5072Grid computing
    • 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/5061Partitioning or combining of resources
    • G06F9/5077Logical partitioning of resources; Management or configuration of virtualized resources
    • 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/4557Distribution of virtual machine instances; Migration and load balancing
    • 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/45595Network integration; Enabling network access in virtual machine instances
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2209/00Indexing scheme relating to G06F9/00
    • G06F2209/50Indexing scheme relating to G06F9/50
    • G06F2209/5011Pool
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2209/00Indexing scheme relating to G06F9/00
    • G06F2209/50Indexing scheme relating to G06F9/50
    • G06F2209/508Monitor

Landscapes

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

Abstract

本发明公开了一种基于云平台的集群节点伸缩系统,包括:节点管理中心,用于提供一个可视化的便捷操作的web界面和后端;自定义节点管理器,用于提供一个自定义的节点添加和删除功能的API和控制监听功能,以执行相应的操作构造一个短期工作的Job任务;虚拟机资源池,用于负责将虚拟机资源添加到虚拟机资源池中、或者从虚拟机资源池中删除、并管理添加到虚拟机资源池中的虚拟机的状态信息,比如是否处于闲置状态还是工作状态;Job任务管理器,用于负责监听Job任务的创建,并按照Job任务提供的参数,执行相应的节点添加或者删除任务;Worker镜像仓库,用于存储上传的镜像,预置一些提前制作好的worker工作镜像。本发明还提供了相应的实现和运行方法。

Description

基于云平台的集群节点伸缩系统及实现方法和运行方法
技术领域
本发明属于微服务容器云平台技术领域,更具体地,涉及一种基于云平台的集群节点伸缩系统及实现方法和运行方法。
背景技术
随着微服务技术及容器云平台技术的不断发展,微服务以容器承载运行的方式越来越普及,另一方面,由于大型软件产品被拆分成若干个小型微服务应用,并被容器云平台编排管理;因此,当容器云平台所管理的容器应用越来越多时,所需要的计算能力也就越大,即当容器云平台集群节点计算资源不够时,需要及时扩展容器平台的节点资源。
Docker镜像是容器的基础,容器是镜像的运行实例。图1描述了镜像分层存储文件结构,位于最下层是基础镜像层,它提供容器启动所需要的操作系统,微服务应用镜像就是在基础镜像上一层层叠加生成,每一层都根据层数据内容生成唯一哈希值,也就是层ID。Docker根据镜像描述文件(dockerfile)中包含的一系列构建指令,创建服务镜像。
Docker镜像仓库存储了每个服务应用的镜像数据,镜像在仓库中按层存储,每层数据都有唯一哈希ID标识。仓库为存储的服务镜像创建摘要文件,记录该服务镜像名称、版本及其所包含层Id等元数据信息。镜像仓库这种基于分层存储特点,使得不同服务镜像能够共享基础层数据,极大节省了存储资源,图2描述了镜像在仓库中存储方式。
Docker提供指令,与远程镜像仓库接口对接,实现从本地推送或从远程仓库拉取指定版本服务镜像数据。
Kubernetes是一个开源容器云管理平台,为容器云集群提供资源调度、扩缩容、自动化部署等一整套管理功能,它以容器组为逻辑管理单元,每个容器组中包含一个或多个docker容器进程,是一个主从分布式架构系统,基本上所有的kubernetes请求命令都会发送给它,由它负责具体的执行过程。Master通常会占据一个独立的服务器(通常建议搭建多台Master集群模式),图3描述了一个kubernetes工作的基础架构图。Kubernetes包含Master和Node两部分,Master部分作为它的控制平面,是集群的控制节点。
Master:master节点是集群的控制节点,负责整个集群的管理和控制。针对集群执行的控制命令都是发送给master节点的,master节点作为一个中央大脑,master节点默认是不执行工作负载的,是kubernetes系统的控制平面。Master节点上运行的主要组件有:
Kube-Apiserver:对外提供http rest服务,是集群控制的入口,任何的资源请求或者调用操作都是通过kuber-apiserver提供的接口进行。
Etcd:是kubernetes提供的一个高可用的键值数据库,用于保存集群所有的网络配置和资源状态的对象信息,即集群的整个状态信息。集群中所有的数据变更,都是通过kube-apiserver进行的。
Kube-Scheduler:监听新创建的但没有分配Node的Pod,并通过一系列调度算法选择一个最适合的Node节点。调度成功后,会将pod信息绑定到目标Node节点上,同时将信息写入到etcd组件中。
Kube-Controller-Manager:负责维护集群的状态,比如故障检测、自动扩展、滚动扩展等。每个资源在kubernetes系统中都对应一个控制器,这些控制器通过kube-apiserver实时监控各自资源的状态。当有资源因为故障等原因导致状态发生变化,相应资源的控制器会尝试将系统由“现有系统”恢复到“期望状态”,保证其下每一个控制器所对应的资源始终处于期望状态。
Node:node节点时集群中的工作负载节点,node节点上的工作负载由master分配,当某个node节点宕机时,master会将上面的工作负载迁移到其他Node节点上。Node节点上运行的主要组件有:
Kubelet:负责pod的创建、启动、监听、重启和销毁等工作,同时与master协作,实现集群管理的基本功能。Kubelet在启动时,会将自身所在节点信息注册到master节点,以将节点纳入到master的管理范围,此后kubelet进程就定时向master节点上报自身的资源情况,而master节点就掌握了集群中所有节点的资源情况,就可以凭此实施更高效的资源调度策略。
Kube-Proxy:实现service的通信与负载均衡,将发往service的请求转发到后端的pod上。
Docker Engin(docker):Docker引擎,负责本机的容器创建和管理工作。
Pod是kubernetes集群管理的最小单元,一个pod可以容纳一个或者多个容器,图4是一个pod的基本组成。
一个Pod封装一个应用容器(也可以有多个容器),存储资源,一个独立的网络IP以及管理控制容器运行方式的策略选项。Pod的使用可以分为两种主要方式:
Pod中运行一个容器,是kubernetes中最常见的用法,在这种场景下,可以将pod视为单个封装的容器,但需要注意的是kubernetes直接管理的是Pod而不是容器。
Pod中运行多个需要一起协作的容器,pod中的容器可以共享资源、网络和相互依赖关系,并同时被调度使用。
CRD(Custom Resource Definition)自定义资源API,用于扩展kubernetes已有的资源类型,从而构建出满足工作负载的应用。
CR(Custom Resource)自定义资源,是上述CRD的一个实例。
自定义节点管理器:包含自定义节点管理CR资源对象和监听自定义节点管理CR资源对象的自定义节点管理Controller两部分。
自定义节点管理CR资源对象:对节点管理定义的一个API资源对象。
自定义节点管理Controller,是一个期望状态管理器,通过监控自定义节点管理CR资源对象请求的期望的状态,会尝试把应用状态维持在CR所期望的状态上。
借助于CoreOS公司推出的旨在简化有状态应用管理的脚手架Operator SDK,可用于编写CR和自定义控制器,它是一个感知应用状态的控制器,通过扩展kubernetes API来自动创建、管理和配置应用实例,图5是CRD在kubernetes集群中的基本工作方式。
通过扩展kubernetes定义API资源对象(即Custom Resource),包含yaml spec和被kubernetes API服务所接受的对象类型(kubernetes kind),同时编写CustomController以监听扩展的API资源对象,并根据实际状态执行自定义任务,以期完成要达到的目的。
当kubernetes集群中对应的一个CR应用实例出现故障时,通过CustomController来协调CR应用实例的状态,以期恢复到CR所期望的状态。
综上所述,容器云平台环境下,当集群内的应用负载越来越多,集群节点资源不够时,需要向集群内添加节点资源以承载更多的工作负载,而增加节点则需要在节点上安装Node节点所需要的进程组件,其中一些组件(比如kubelet、kube-proxy等)需要能与Master节点通信协作,而为了保证新增Node节点能与Master节点安全通信,则需要使用集群Master所使用的CA证书给新增节点进行签名,以保证新增Node上的进程kubelet与kube-proxy能够与Master在通信前认证通过;除此以外,还需要对新增Node准备一些必要的检查和设置工作。
发明内容
基于上述kubernetes容器平台的特点,面向提高容器PaaS平台管理应用工作负载的运维效率,本发明提出了一种基于云平台的集群节点伸缩系统。针对kubernetes集群在使用中工作负载压力越来越大的情况,提供一种集群节点伸缩系统的实现方案。
为实现上述目的,按照本发明的一个方面,提供了一种基于云平台的集群节点伸缩系统,包括Job任务管理器和Worker镜像仓库,还包括:节点管理中心、自定义节点管理器和虚拟机资源池,其中:
所述节点管理中心,用于提供一个可视化的便捷操作的web界面和后端,所有操作均可从节点管理中心上去执行;
所述自定义节点管理器,用于提供一个自定义的节点添加和删除功能的API和控制监听功能,以执行相应的操作构造一个短期工作的Job任务;
所述虚拟机资源池,用于负责将虚拟机资源添加到虚拟机资源池中、或者从虚拟机资源池中删除、并管理添加到虚拟机资源池中的虚拟机的状态信息,比如是否处于闲置状态还是工作状态;
所述Job任务管理器,用于负责监听Job任务的创建,并按照Job任务提供的参数,执行相应的节点添加或者删除任务;
所述Worker镜像仓库,用于存储上传的镜像,预置一些提前制作好的worker工作镜像,该工作镜像中包含了ansible脚本,用于从集群中执行添加或者删除节点任务。
本发明的一个实施例中,所述节点管理中心,提供给用户一个简便操作的可视化界面,通过该可视化界面用户可以查看集群中尚未被使用的虚拟机资源,可以添加新的虚拟机资源到资源池中,可以删除虚拟机资源池中的虚拟机资源,并关联判断是否能够删除集群中已被使用的该节点,并且用户还可以通过查询虚拟机资源池资源选择将虚拟机添加到集群中,也可以选择回收添加的虚拟机节点资源。
本发明的一个实施例中,所述自定义节点管理器运行在kubernetes集群中或者运行在kubernetes集群外;通过监控节点管理中心提交的任务请求,执行一系列的相应动作,并向虚拟机资源池查询节点信息,然后构造kubernetes job任务,提交给kubernetes集群。
本发明的一个实施例中,所述虚拟机资源池运行在kubernetes集群中,负责对可用虚拟机资源的管理和维护,当新增虚拟机资源到虚拟机资源池中时,该虚拟机状态会被标识为闲置状态;当该虚拟机节点被添加到集群中时,会通知虚拟机资源池,虚拟机资源池将该虚拟机资源标识为活跃状态;当虚拟机资源被从集群中回收时,同样会通知虚拟机池,虚拟机资源池将其标识为闲置状态。
按照本发明的另一方面,还提供了一种基于云平台的集群节点伸缩系统的实现方法,包括:
S1:在节点管理界面上,查询虚拟机资源池信息,查看是否有闲置状态的虚拟机资源可用,如果没有,则用户首先申请虚拟机资源,申请好虚拟机资源后,添加虚拟机资源到虚拟机资源池中,当虚拟机资源信息状态显示为闲置状态时,表明虚拟机资源添加到虚拟机资源池中成功:
S2:在节点管理界面上,用户从虚拟机资源池中选择一个处于闲置状态的虚拟机,然后点击添加节点到集群的操作,请求将会发送给节点管理后端;
S3:节点管理后端收到请求后,根据节点信息标识符,向虚拟机资源池查询节点的具体信息,并把任务类型和节点信息按照自定义节点管理器的要求,构造一个CR请求给集群;
S4:自定义节点管理器监控到有对应CR请求后,获取请求信息,然后将请求信息构造成Job任务资源对象的传入参数,并指定要使用的worker工作镜像,然后将该Job任务资源对象提交到集群中;
S5:Job任务控制器监听到Job任务资源对象后,根据请求信息和指定的worker工作镜像构造一个承担Job任务的容器任务Pod,该Pod会拉取相应的worker工作镜像启动一个容器,并执行相应的ansible任务脚本,即与远程节点Node交互,完成新增一个节点的所有工作,包括节点准备和检查、docker安装、kubernetes相关组件安装及确认工作;
S6:当Job任务执行完成后,自定义节点管理器通知虚拟机资源池,告知该虚拟机资源已经被成功添加使用,虚拟机资源池更新该虚拟机资源的状态为活跃状态,此时添加节点到集群动作完成。
本发明的一个实施例中,所述方法还包括:
S7:当某一台虚拟机资源需要回收时,用户在节点管理界面上基于已经添加的节点选择回收操作;
S8:节点管理后端收到请求后,将任务类型和节点信息构造成自定义节点管理CR资源对象请求,发送给集群;
S9:自定义节点管理Controller监听到回收请求后,进行一系列的检查动作,然后将该节点标识为不可调度状态,继而驱逐节点上的所有容器应用,当全部执行完后,最后将该节点从集群中回收掉;另外,还必须通知虚拟机资源池将该虚拟机节点状态置为闲置状态。
本发明的一个实施例中,所述方法还包括:
S10:用户通过节点管理界面还可以对新增节点上的工具执行升级操作,比如docker版本,当升级docker版本时,同样的,需要先检查节点上的容器应用是否可以迁移,如果可以,则先将节点置为不可调度状态,然后驱逐完所有的容器应用后,升级docker版本。
本发明的一个实施例中,所述步骤S5中新增一个节点的所有工作,包括:节点准备和检查、docker安装、kubernetes相关组件安装及确认工作。
本发明的一个实施例中,所述步骤S9中的一系列的检查动作包括:检查要回收的节点上是否有不可迁移的容器应用,如果存在则直接返回不可删除。。
按照本发明的另一方面,还提供了一种基于云平台的集群节点伸缩系统的运行方法,包括:
S1:用户构建好包含ansible执行脚本的worker工作镜像,将worker工作镜像上传到Worker镜像仓库中;
S2:用户安装好自定义节点管理器、节点管理中心和虚拟机资源池;
S3:检查虚拟机资源池中是否有处于闲置状态的虚拟机资源,如果没有,则用户需要首先申请可用的虚拟机资源,一旦申请好可用的虚拟机资源,则可以将该虚拟机资源添加到虚拟机资源池中;
S4:用户在节点管理界面上选择可用的处于闲置状态的虚拟机资源,执行添加节点到集群的操作;
S5:节点管理后端收到请求后,将添加节点请求类型和节点标识符信息构建成自定义节点管理CR资源对象请求;
S6:自定义节点管理Controller监听到相应的CR请求后,首先根据节点标识信息向虚拟机资源池服务查询节点的基本信息,然后将请求任务类型与节点基本信息构造成一个Job任务资源对象请求,发送到集群中;
S7:Job控制器监听到有Job任务资源对象请求,则根据job的请求信息,基于Worker镜像仓库中提供的worker工作镜像构造一个容器任务Pod,而Pod就是由一个或者多个容器实体构成,用于执行具体的任务;
S8:Job任务资源对象请求任务执行完成后,若任务执行成功,则自定义节点管理器会更新虚拟机资源池相应虚拟机状态为活跃状态,同时返回添加节点到集群成功消息给节点管理中心;若任务执行失败,则直接返回失败信息给节点管理中心;
S9:若用户想回收某个虚拟机资源,则在节点管理界面上对已经添加的节点执行回收操作,回收操作指令请求将会发送给节点管理后端;
S10:节点管理后端收到节点回收请求后,构造相应的自定义节点管理CR资源对象请求,并提交到集群中;
S11:自定义节点管理Controller监听到回收节点请求后,首先检查需要回收的节点上是否有不可迁移的容器应用,如果存在不可迁移的容器应用,则直接返回不可回收信息给节点管理中心;如果容器应用都是可以迁移的,则首先将该节点标记为不可调度状态,然后驱逐该节点上的所有容器应用,驱逐完成后执行回收下线动作,然后将回收完成信息返回给节点管理中心。
总体而言,通过本发明所构思的以上技术方案与现有技术相比,具有如下有益效果:
(1)本发明提供了一种集群节点的伸缩实现方式,并将节点的整个添加过程以自动化的方式实现,大大提高了用户的工作效率。解决了集群节点添加过程中节点的一系列检查准备工作、工具安装、kubernetes组件证书颁发等一些繁琐的重复化过程;
(2)本发明提供了一种轻量级的业务实现组件,自定义节点管理器用于监听请求,并与虚拟机资源池通信获取节点信息,然后构造成kubernetes job任务请求;虚拟机资源池则主要管理处于闲置状态和活跃状态的虚拟机资源,提供增删改查的一些基本功能;worker镜像则用于封装一系列的ansible脚本任务,当有请求来临时,便执行相应的任务;
(3)本发明通过封装ansible脚本任务到worker镜像方式来扩展或者更新镜像,维护成本低;
(4)本发明充分利用kubernetes job的特性,当容器应用负载pod执行完成后,容器会被销毁,从一定程度上减少集群内节点资源消耗。
附图说明
图1为镜像层数据结构图;
图2为镜像在仓库中存储结构;
图3为kubernetes架构示意图;
图4为Pod构成示意图;
图5为CRD工作原理图;
图6为本发明实施例中节点伸缩结构示意图。
具体实施方式
为了使本发明的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。此外,下面所描述的本发明各个实施方式中所涉及到的技术特征只要彼此之间未构成冲突就可以相互组合。
云计算时代,服务以容器所承载工作的粒度越来越小,原先大型单体式应用因功能迭代缓慢、可维护性差已不适合当前应用系统的开发节奏,因此现有一个大型软件系统可能是由数十个、甚至数百个微服务所构成,如何管理编排这些微服务便是kubernetes分布式系统的任务,而当集群工作节点资源不够是,则需要实时的实现集群节点资源的横向扩展。本发明需要解决的技术问题如下:
(1)安装过程繁琐,需要使用具体集群的信任证书来颁发证书,无法做到模板化;
(1.1)新增一个集群节点往往涉及到执行很多个动作,包括一系列的节点准备和检查、docker工具安装、kubelet及kube-proxy组件证书颁发及安装、安装后检查确认等工作;如果手动操作,往往耗时耗力,极大的影响工作效率。
(1.2)为了保证集群中各个组件的通信安全,集群中各个组件都是使用证书来做认证的,只有认证通过才能开始通信,因此,在扩展节点的过程中,与集群master通信的kubelet、kube-proxy必须要使用集群信任的证书给kubelet和kube-proxy组件颁发证书。
(2)工具及组件版本的安装及升级;
(2.1)在新增集群节点时,如docker等这样的工具安装,需要提供不同的工具版本,以供用户选择;当组件出现安全漏洞时,还能够及时更新节点上的工具版本。
(2.2)与集群master协作通信相关的组件(如kubelet、kube-proxy)的版本号需要与集群master保持一致,以避免组件不能正常工作的情况。
(3)节点伸缩管理系统可视化管理;
(3.1)提供一套可视化操作的UI界面,能够简化用户的运维操作,极大的提高工作效率。
(3.2)在实际环境中,客户处于安全角度考虑,kubernetes集群往往搭建在物理网络隔绝的局域网环境中,因此在这样一种离线环境下快速扩展节点,如果仅凭手工操作,或者提供脚本,对用户来讲,都需要一定的学习成本,且容器出错。
为达到以上目的,本发明提供了一种基于云平台的集群节点伸缩系统,具有以下方面功能特性:
系统提供一种集群节点的伸缩实现和管理系统:
该系统提供了一个供用户(包括人和计算机程序)来操作的可视化操作界面,以下所描述的用户均指代的是人或者计算机程序,用于描述人机交互的场景。当用户在操作界面上执行相应的动作后,由后端服务接收请求并执行相应的请求动作。
用户首先在虚拟机资源池中查找是否有可用的虚拟机资源,如果有可用的虚拟机资源,则选择该虚拟机,将该虚拟机添加到集群中,即向集群中发送添加节点请求;如果没有可用的虚拟机资源,则首先向管理员申请虚拟机资源,申请到虚拟机资源后,将虚拟机资源信息添加到虚拟机资源池中,然后发送添加集群节点请求;
自定义节点管理器监听到有相应的请求对象时,执行一系列的动作,构造相应的ansible任务,并向集群发送一个kubernetes job资源对象请求,kubernetes job控制器监控到请求后,拉取相应的worker镜像,通过参数传入方式,执行要执行的任务。
系统提供统一的可视化节点管理界面:
虚拟机资源的增加删除、集群节点的伸缩管理都在可视化节点管理界面上呈现。用户可以根据此查询已添加过的节点信息,并可以升级一些工具,比如docker等,如此用户可以方便的对节点进行一些操作。
图6描述了该系统框架,该系统主要包括节点管理中心(包括节点管理界面和节点管理后端)、自定义节点管理器(包含自定义节点管理CR资源对象和自定义节点管理Controller)、虚拟机资源池、Job任务管理器、Worker镜像仓库(包含worker工作镜像),其中:
所述节点管理中心,用于提供一个可视化的便捷操作的web界面和后端,所有操作均可从节点管理中心上去执行;
所述自定义节点管理器,用于提供一个自定义的节点添加和删除功能的API和控制监听功能,以执行相应的操作,以构造一个短期工作的Job任务;
所述虚拟机资源池,用于负责将虚拟机资源添加到虚拟机资源池中、或者从虚拟机资源池中删除、并管理添加到虚拟机资源池中的虚拟机的状态信息,比如是否处于闲置状态还是工作状态;
所述Job任务管理器,用于负责监听Job任务的创建,并按照Job任务提供的参数,执行相应的节点添加或者删除任务;
所述Worker镜像仓库,用于存储上传的镜像,预置一些提前制作好的worker工作镜像,该工作镜像中包含了众多的ansible脚本,用于从集群中执行添加或者删除节点任务。
系统功能部件介绍如下:
节点管理中心:包含节点管理界面和节点管理后端两部分,提供给用户一个简便操作的可视化界面,通过该可视化界面用户可以查看集群中尚未被使用的虚拟机资源,可以添加新的虚拟机资源到资源池中,可以删除虚拟机资源池中的虚拟机资源(会关联判断是否能够删除集群中已被使用的该节点);另外,用户通过查询虚拟机资源池资源选择将虚拟机添加到集群中,也可以选择回收添加的虚拟机节点资源;
自定义节点管理器:可运行在kubernetes集群中,也可以运行在kubernetes集群外;通过监控节点管理中心提交的任务请求,执行一系列的相应动作,并向虚拟机资源池查询节点信息(包括用户名、密码信息等),然后构造kubernetes job任务,提交给kubernetes集群;
虚拟机资源池:运行在kubernetes集群中,负责对可用虚拟机资源的管理和维护,当新增虚拟机资源到虚拟机资源池中时,该虚拟机状态会被标识为闲置状态;当该虚拟机节点被添加到集群中时,会通知虚拟机资源池,虚拟机资源池将该虚拟机资源标识为活跃状态;当虚拟机资源被从集群中回收时,同样会通知虚拟机池,虚拟机资源池将其标识为闲置状态;
Job任务管理器:kubernetes集群本身提供的短期任务工作机制,本发明中将添加、回收集群节点任务的ansible执行脚本封装到一个worker镜像中,构造kubernetes job工作,通过给该worker镜像提供不同的任务参数,区分不同的任务类型,从而执行不同的ansible脚本,完成相应的任务;
Worker镜像仓库:如第三方开源镜像仓库Harbor、Portus等等,负责存储容器云平台中软件产品的服务镜像,包含上传的worker工作镜像。worker工作镜像存放于镜像仓库中,worker镜像是封装了一系列ansible任务脚本的工作镜像,是用于构造kubernetes job任务的基础镜像,通过传入不同的参数,worker镜像在启动后,执行相应的动作,以期完成相应的任务。
本发明提供了一种基于云平台的集群节点伸缩系统的实现方法,包括以下步骤:
S1:在节点管理界面上,查询虚拟机资源池信息,查看是否有闲置状态的虚拟机资源可用,如果没有,则用户首先申请虚拟机资源,申请好虚拟机资源后,添加虚拟机资源到虚拟机资源池中,当虚拟机资源信息状态显示为闲置状态时,表明虚拟机资源添加到虚拟机资源池中成功;
S2:在节点管理界面上,用户从虚拟机资源池中选择一个处于闲置状态的虚拟机,然后点击添加节点到集群的操作,请求将会发送给节点管理后端;
S3:节点管理后端收到请求后,根据节点信息标识符,向虚拟机资源池查询节点的具体信息,并把任务类型、节点信息等按照自定义节点管理器的要求,构造一个CR请求给集群;
S4:自定义节点管理Controller监控到有对应CR请求后,获取请求信息,然后将请求信息构造成Job任务资源对象的传入参数,并指定要使用的worker工作镜像,然后将该Job任务资源对象提交到集群中;
S5:Job任务控制器监听到Job任务资源对象后,根据请求信息和指定的worker工作镜像构造一个承担Job任务的容器任务Pod,该Pod会拉取相应的worker工作镜像启动一个容器,并执行相应的ansible任务脚本,即与远程节点Node交互,完成新增一个节点的所有工作,包括节点准备和检查、docker安装、kubernetes相关组件安装及确认等工作;
S6:当Job任务执行完成后,自定义节点管理器会通知虚拟机资源池,告知该虚拟机资源已经被成功添加使用,需要更新虚拟机资源池中该虚拟机资源的状态为活跃状态,此时添加节点到集群动作完成;
S7:当某一台虚拟机资源需要回收时,用户在节点管理界面上基于已经添加的节点选择回收操作;
S8:节点管理后端收到请求后,将任务类型和节点信息构造成自定义节点管理CR资源对象请求,发送给集群;
S9:自定义节点管理Controller监听到回收请求后,进行一系列的检查动作(包含要回收的节点上是否有不可迁移的容器应用等,如果存在则直接返回不可删除),然后将该节点标识为不可调度状态,继而驱逐节点上的所有容器应用,当全部执行完后,最后将该节点从集群中回收掉;另外,还必须通知虚拟机资源池将该虚拟机节点状态置为闲置状态;
S10:用户通过节点管理界面还可以对新增节点上的工具执行升级操作,比如docker版本。当升级docker版本时,同样的,需要先检查节点上的容器应用是否可以迁移,如果可以,则先将节点置为不可调度状态,然后驱逐完所有的容器应用后,升级docker版本。
如图6所示,本发明提供了一种基于云平台的集群节点伸缩系统的运行方法,包括以下步骤:
S1:用户构建好包含ansible执行脚本的worker工作镜像,将worker工作镜像上传到Worker镜像仓库中;
S2:用户安装好自定义节点管理器、节点管理中心、虚拟机资源池等应用;
S3:检查虚拟机资源池中是否有处于闲置状态的虚拟机资源,如果没有,则用户需要首先申请可用的虚拟机资源,一旦申请好可用的虚拟机资源,则可以将该虚拟机资源添加到虚拟机资源池中;
S4:用户在节点管理界面上选择可用的处于闲置状态的虚拟机资源,执行添加节点到集群的操作;
S5:节点管理后端收到请求后,将添加节点请求类型和节点标识符等信息构建成自定义节点管理CR资源对象请求;
S6:自定义节点管理Controller监听到相应的CR请求后,首先根据节点标识信息向虚拟机资源池服务查询节点的基本信息,然后将请求任务类型与节点基本信息构造成一个Job任务资源对象请求,发送到集群中;
S7:Job控制器监听到有Job任务资源对象请求,则根据job的请求信息,基于Worker镜像仓库中提供的worker工作镜像构造一个容器任务Pod,而Pod就是由一个或者多个容器实体构成,用于执行具体的任务;
S8:Job任务资源对象请求任务执行完成后,若任务执行成功,则自定义节点管理器会更新虚拟机资源池相应虚拟机状态为活跃状态,同时返回添加节点到集群成功消息给节点管理中心;若任务执行失败,则直接返回失败信息给节点管理中心;
S9:若用户想回收某个虚拟机资源,则在节点管理界面上对已经添加的节点执行回收操作,回收操作指令请求将会发送给节点管理后端;
S10:节点管理后端收到节点回收请求后,构造相应的自定义节点管理CR资源对象请求,并提交到集群中;
S11:自定义节点管理Controller监听到回收节点请求后,首先检查需要回收的节点上是否有不可迁移的容器应用,如果存在不可迁移的容器应用,则直接返回不可回收信息给节点管理中心;如果容器应用都是可以迁移的,则首先将该节点标记为不可调度状态,然后驱逐该节点上的所有容器应用,驱逐完成后执行回收下线动作,然后将回收完成信息返回给节点管理中心。
本领域的技术人员容易理解,以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精神和原则之内所作的任何修改、等同替换和改进等,均应包含在本发明的保护范围之内。

Claims (10)

1.一种基于云平台的集群节点伸缩系统,包括Job任务管理器和Worker镜像仓库,其特征在于,还包括:节点管理中心、自定义节点管理器和虚拟机资源池,其中:
所述节点管理中心,用于提供一个可视化的便捷操作的web界面和后端,所有操作均可从节点管理中心上去执行;所述操作包括:查看集群中尚未被使用的虚拟机资源,添加新的虚拟机资源到资源池中,删除虚拟机资源池中的虚拟机资源,通过查询虚拟机资源池资源选择将虚拟机添加到集群中,或者选择回收添加的虚拟机节点资源;
所述自定义节点管理器,用于提供一个自定义的节点添加和删除功能的API和控制监听功能,以执行相应的操作构造一个短期工作的Job任务;
所述虚拟机资源池,用于负责将虚拟机资源添加到虚拟机资源池中、或者从虚拟机资源池中删除、并管理添加到虚拟机资源池中的虚拟机的状态信息,是处于闲置状态还是工作状态;
所述Job任务管理器,用于负责监听Job任务的创建,并按照Job任务提供的参数,执行相应的节点添加或者删除任务;
所述Worker镜像仓库,用于存储上传的镜像,预置一些提前制作好的worker工作镜像,该工作镜像中包含了ansible脚本,用于从集群中执行添加或者删除节点任务。
2.如权利要求1所述的基于云平台的集群节点伸缩系统,其特征在于,所述节点管理中心,提供给用户一个简便操作的可视化界面,通过该可视化界面用户可以查看集群中尚未被使用的虚拟机资源,可以添加新的虚拟机资源到资源池中,可以删除虚拟机资源池中的虚拟机资源,并关联判断是否能够删除集群中已被使用的该节点,并且用户还可以通过查询虚拟机资源池资源选择将虚拟机添加到集群中,也可以选择回收添加的虚拟机节点资源。
3.如权利要求1或2所述的基于云平台的集群节点伸缩系统,其特征在于,所述自定义节点管理器运行在kubernetes集群中或者运行在kubernetes集群外;通过监控节点管理中心提交的任务请求,执行一系列的相应动作,并向虚拟机资源池查询节点信息,然后构造kubernetes job任务,提交给kubernetes集群。
4.如权利要求1或2所述的基于云平台的集群节点伸缩系统,其特征在于,所述虚拟机资源池运行在kubernetes集群中,负责对可用虚拟机资源的管理和维护,当新增虚拟机资源到虚拟机资源池中时,该虚拟机状态会被标识为闲置状态;当该虚拟机节点被添加到集群中时,会通知虚拟机资源池,虚拟机资源池将该虚拟机资源标识为活跃状态;当虚拟机资源被从集群中回收时,同样会通知虚拟机池,虚拟机资源池将其标识为闲置状态。
5.一种基于云平台的集群节点伸缩系统的实现方法,其特征在于,包括:
S1:在节点管理界面上,查询虚拟机资源池信息,查看是否有闲置状态的虚拟机资源可用,如果没有,则用户首先申请虚拟机资源,申请好虚拟机资源后,添加虚拟机资源到虚拟机资源池中,当虚拟机资源信息状态显示为闲置状态时,表明虚拟机资源添加到虚拟机资源池中成功:
S2:在节点管理界面上,用户从虚拟机资源池中选择一个处于闲置状态的虚拟机,然后点击添加节点到集群的操作,请求将会发送给节点管理后端;
S3:节点管理后端收到请求后,根据节点信息标识符,向虚拟机资源池查询节点的具体信息,并把任务类型和节点信息按照自定义节点管理器的要求,构造一个CR请求给集群;
S4:自定义节点管理器监控到有对应CR请求后,获取请求信息,然后将请求信息构造成Job任务资源对象的传入参数,并指定要使用的worker工作镜像,然后将该Job任务资源对象提交到集群中;
S5:Job任务控制器监听到Job任务资源对象后,根据请求信息和指定的worker工作镜像构造一个承担Job任务的容器任务Pod,该Pod会拉取相应的worker工作镜像启动一个容器,并执行相应的ansible任务脚本,即与远程节点Node交互,完成新增一个节点的所有工作,包括节点准备和检查、docker安装、kubernetes相关组件安装及确认工作;
S6:当Job任务执行完成后,自定义节点管理器通知虚拟机资源池,告知该虚拟机资源已经被成功添加使用,虚拟机资源池更新该虚拟机资源的状态为活跃状态,此时添加节点到集群动作完成。
6.如权利要求5所述的基于云平台的集群节点伸缩系统的实现方法,其特征在于,还包括:
S7:当某一台虚拟机资源需要回收时,用户在节点管理界面上基于已经添加的节点选择回收操作;
S8:节点管理后端收到请求后,将任务类型和节点信息构造成自定义节点管理CR资源对象请求,发送给集群;
S9:自定义节点管理Controller监听到回收请求后,进行一系列的检查动作,然后将该节点标识为不可调度状态,继而驱逐节点上的所有容器应用,当全部执行完后,最后将该节点从集群中回收掉;另外,还必须通知虚拟机资源池将虚拟机节点状态置为闲置状态。
7.如权利要求6所述的基于云平台的集群节点伸缩系统的实现方法,其特征在于,还包括:
S10:用户通过节点管理界面还可以对新增节点上的工具执行升级操作,比如docker版本,当升级docker版本时,同样的,需要先检查节点上的容器应用是否可以迁移,如果可以,则先将节点置为不可调度状态,然后驱逐完所有的容器应用后,升级docker版本。
8.如权利要求5或6所述的基于云平台的集群节点伸缩系统的实现方法,其特征在于,所述步骤S5中新增一个节点的所有工作,包括:节点准备和检查、docker安装、kubernetes相关组件安装及确认工作。
9.如权利要求6所述的基于云平台的集群节点伸缩系统的实现方法,其特征在于,所述步骤S9中的一系列的检查动作包括:检查要回收的节点上是否有不可迁移的容器应用,如果存在则直接返回不可删除。
10.一种基于云平台的集群节点伸缩系统的运行方法,其特征在于,包括:
S1:用户构建好包含ansible执行脚本的worker工作镜像,将worker工作镜像上传到Worker镜像仓库中;
S2:用户安装好自定义节点管理器、节点管理中心和虚拟机资源池;
S3:检查虚拟机资源池中是否有处于闲置状态的虚拟机资源,如果没有,则用户需要首先申请可用的虚拟机资源,一旦申请好可用的虚拟机资源,则可以将该虚拟机资源添加到虚拟机资源池中;
S4:用户在节点管理界面上选择可用的处于闲置状态的虚拟机资源,执行添加节点到集群的操作;
S5:节点管理后端收到请求后,将添加节点请求类型和节点标识符信息构建成自定义节点管理CR资源对象请求;
S6:自定义节点管理Controller监听到相应的CR请求后,首先根据节点标识信息向虚拟机资源池服务查询节点的基本信息,然后将请求任务类型与节点基本信息构造成一个Job任务资源对象请求,发送到集群中;
S7:Job控制器监听到有Job任务资源对象请求,则根据job的请求信息,基于Worker镜像仓库中提供的worker工作镜像构造一个容器任务Pod,而Pod就是由一个或者多个容器实体构成,用于执行具体的任务;
S8:Job任务资源对象请求任务执行完成后,若任务执行成功,则自定义节点管理器会更新虚拟机资源池相应虚拟机状态为活跃状态,同时返回添加节点到集群成功消息给节点管理中心;若任务执行失败,则直接返回失败信息给节点管理中心;
S9:若用户想回收某个虚拟机资源,则在节点管理界面上对已经添加的节点执行回收操作,回收操作指令请求将会发送给节点管理后端;
S10:节点管理后端收到节点回收请求后,构造相应的自定义节点管理CR资源对象请求,并提交到集群中;
S11:自定义节点管理Controller监听到回收节点请求后,首先检查需要回收的节点上是否有不可迁移的容器应用,如果存在不可迁移的容器应用,则直接返回不可回收信息给节点管理中心;如果容器应用都是可以迁移的,则首先将该节点标记为不可调度状态,然后驱逐该节点上的所有容器应用,驱逐完成后执行回收下线动作,然后将回收完成信息返回给节点管理中心。
CN202110467358.5A 2021-04-28 2021-04-28 基于云平台的集群节点伸缩系统及实现方法和运行方法 Active CN113220416B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202110467358.5A CN113220416B (zh) 2021-04-28 2021-04-28 基于云平台的集群节点伸缩系统及实现方法和运行方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202110467358.5A CN113220416B (zh) 2021-04-28 2021-04-28 基于云平台的集群节点伸缩系统及实现方法和运行方法

Publications (2)

Publication Number Publication Date
CN113220416A CN113220416A (zh) 2021-08-06
CN113220416B true CN113220416B (zh) 2022-06-17

Family

ID=77089704

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202110467358.5A Active CN113220416B (zh) 2021-04-28 2021-04-28 基于云平台的集群节点伸缩系统及实现方法和运行方法

Country Status (1)

Country Link
CN (1) CN113220416B (zh)

Families Citing this family (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN114064279A (zh) * 2021-11-18 2022-02-18 广州文远知行科技有限公司 容器资源调度方法、装置、存储介质及计算机设备
CN114584559A (zh) * 2022-03-07 2022-06-03 浪潮云信息技术股份公司 一种实现声明式管理容器云的方法及装置
CN114584489A (zh) * 2022-03-08 2022-06-03 浪潮云信息技术股份公司 一种基于ssh通道的远程环境信息和配置检测方法和系统
CN115086335A (zh) * 2022-07-27 2022-09-20 北京思和科创软件有限公司 容器云的节点动态添加方法、装置、电子设备及存储介质
CN116192870B (zh) * 2023-04-21 2023-07-11 中国科学技术大学 基于镜像级元数据管理和负载感知的p2p下载镜像方法

Family Cites Families (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10664592B2 (en) * 2018-03-22 2020-05-26 International Business Machines Corporation Method and system to securely run applications using containers
CN109067828B (zh) * 2018-06-22 2022-01-04 杭州才云科技有限公司 基于Kubernetes和OpenStack容器云平台多集群构建方法、介质、设备
CN108958745B (zh) * 2018-06-26 2021-11-26 郑州云海信息技术有限公司 一种在云平台部署Spark集群的装置和方法
US11222123B2 (en) * 2019-04-22 2022-01-11 Cyberark Software Ltd. Securing privileged virtualized execution instances from penetrating a virtual host environment
CN112398914B (zh) * 2020-10-28 2023-03-24 武汉大势智慧科技有限公司 基于Kubernetes容器集群的云渲染平台
CN112416524B (zh) * 2020-11-25 2023-06-23 电信科学技术第十研究所有限公司 基于docker和kubernetes离线的跨平台的CI/CD的实现方法及装置

Also Published As

Publication number Publication date
CN113220416A (zh) 2021-08-06

Similar Documents

Publication Publication Date Title
CN113220416B (zh) 基于云平台的集群节点伸缩系统及实现方法和运行方法
CN108924217B (zh) 一种分布式云系统自动化部署方法
CN110768833A (zh) 基于kubernetes的应用编排部署方法及装置
CN111274001B (zh) 微服务管理平台
CN111966305A (zh) 持久卷分配方法、装置、计算机设备和存储介质
CN112214330A (zh) 集群中主节点的部署方法、装置及计算机可读存储介质
CN113569987A (zh) 模型训练方法和装置
KR20170051471A (ko) 하나 이상의 클라우드 시스템 상에 애플리케이션들을 이식 가능하게 배치하기 위한 방법들 및 시스템들
CN104021078B (zh) 软件监控装置及方法
CN101454766A (zh) 组合软件服务的管理
CN104579792A (zh) 多适配方式实现多种类型虚拟资源集中管理架构及方法
CN113742031A (zh) 节点状态信息获取方法、装置、电子设备及可读存储介质
WO2010000142A1 (zh) 一种分布式网管系统及其维护管理方法
CN112437129B (zh) 集群的管理方法及集群的管理装置
CN112615882A (zh) 航天测运控地面站异构资源监控数据处理方法
US9836365B2 (en) Recovery execution system using programmatic generation of actionable workflows
CN111736809A (zh) 分布式机器人集群网络管理框架及其实现方法
CN113835834A (zh) 一种基于k8s容器集群计算节点的扩容方法及系统
CN109787792B (zh) 一种管理分布式业务集群的系统
JP2008181298A (ja) 作業状態復帰プログラム、作業状態復帰方法および作業状態復帰装置
CN111045697A (zh) 自动化快速部署方法及系统
CN113746676B (zh) 基于容器集群的网卡管理方法、装置、设备、介质及产品
CN115357336A (zh) 容器组的在线扩容方法、装置、终端设备与介质
CN114489955A (zh) 一种DockerSwarm集群实现GitOps的系统和方法
CN113987068A (zh) 基于脚本的MySQL组复制集群自动配置方法

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