CN116860387A - 一种cloudinit的kubernetes集群自动部署方法、装置及存储介质 - Google Patents

一种cloudinit的kubernetes集群自动部署方法、装置及存储介质 Download PDF

Info

Publication number
CN116860387A
CN116860387A CN202310757380.2A CN202310757380A CN116860387A CN 116860387 A CN116860387 A CN 116860387A CN 202310757380 A CN202310757380 A CN 202310757380A CN 116860387 A CN116860387 A CN 116860387A
Authority
CN
China
Prior art keywords
cluster
virtual machine
kubernetes
kvm
initialization
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
CN202310757380.2A
Other languages
English (en)
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.)
Guangdong Eshore Technology Co Ltd
Original Assignee
Guangdong Eshore Technology 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 Guangdong Eshore Technology Co Ltd filed Critical Guangdong Eshore Technology Co Ltd
Priority to CN202310757380.2A priority Critical patent/CN116860387A/zh
Publication of CN116860387A publication Critical patent/CN116860387A/zh
Pending legal-status Critical Current

Links

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/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/45575Starting, stopping, suspending or resuming 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/45595Network integration; Enabling network access in virtual machine instances
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
    • Y02D10/00Energy efficient computing, e.g. low power processors, power management or thermal management

Abstract

本发明公开一种cloudinit的kubernetes集群自动部署方法、装置及存储介质,在基础kubernetes集群的虚机上部署fileserver文件服务器及kvm‑controller服务,获取传入的metadata参数及待构建kubernetes集群的自定义资源,顺序在待构建kubernetes集群中创建master虚机并启动,自动执行cloudinit下载并执行脚本以自动下载初始化依赖文件,解码metadata参数得到执行命令后结合初始化依赖文件对master虚机进行初始化以得到目标kubernetes集群,提升部署效率及降低部署的复杂度。

Description

一种cloudinit的kubernetes集群自动部署方法、装置及存储 介质
技术领域
本发明涉及云领域,尤其是一种cloudinit的kubernetes集群自动部署方法、装置及存储介质。
背景技术
目前市场上的容器云资源池部署kubernetes集群都是通过开源组件kubespray、magnum或者自己开发的ansible脚本来部署kubernetes集群。在使用这些技术过程中,只能分为两步创建虚机和部署kubernetes集群,即先创建虚机,然后再进行集群部署,部署kubernetes集群的效率低,复杂度高。
发明内容
有鉴于此,为了解决上述技术问题的至少之一,本发明的目的是提供一种cloudinit的kubernetes集群自动部署方法、装置及存储介质,提高集群部署的效率以及降低复杂度。
本发明实施例提供了一种cloudinit的kubernetes集群自动部署方法,包括:
响应于部署指令,部署基础kubernetes集群、在所述基础kubernetes集群的虚机上部署fileserver文件服务器以及部署kvm-controller服务;所述fileserver文件服务器中包括脚本以及初始化依赖文件;
响应于集群创建指令,通过所述kvm-controller服务获取传入的metadata参数以及待构建kubernetes集群的自定义资源,根据所述自定义资源顺序在所述待构建kubernetes集群中创建master虚机;
启动所述master虚机,通过所述master虚机自动执行cloudinit下载并执行所述脚本以自动下载所述初始化依赖文件,并对所述metadata参数进行解码得到执行命令,根据所述执行命令以及所述初始化依赖文件对所述master虚机进行初始化得到初始化master节点,根据所述初始化master节点得到目标kubernetes集群。
进一步,所述部署kvm-controller服务之前,还包括:
进行etcd集群的部署;所述etcd集群用于响应于集群创建指令,将metadata参数、所述自定义资源以及所述待构建kubernetes集群的集群信息写入所述etcd集群中。
进一步,所述进行etcd集群的部署之后还包括:
部署harbor镜像服务;所述harbor镜像服务用于提供创建所述master虚机依赖的镜像。
进一步,所述根据所述初始化master节点得到目标kubernetes集群,包括:
当得到所述初始化master节点,将当前所述待构建kubernetes集群的token信息返回给所述kvm-controller服务;
通过所述kvm-controller服务更新所述etcd集群中的自定义资源;
根据更新后的自定义资源返回所述根据所述自定义资源顺序创建master虚机的步骤,直至得到所有初始化master节点形成第一集群,根据所述第一集群得到目标kubernetes集群。
进一步,所述根据所述第一集群得到目标kubernetes集群,包括:
当得到所述第一集群,将当前所述待构建kubernetes集群的token信息返回给所述kvm-controller服务;
通过所述kvm-controller服务再次更新所述etcd集群中的自定义资源;
当所述kvm-controller服务检测到再次更新的自定义资源,创建node节点以及对应的新虚机;
启动所述新虚机,通过所述新虚机自动执行cloudinit下载并执行所述脚本以自动下载所述初始化依赖文件,并对所述metadata参数进行解码得到新的执行命令,根据所述新的执行命令以及所述初始化依赖文件对所述新虚机进行初始化得到初始化node节点并加入第二集群中,并将当前所述待构建kubernetes集群的token信息返回给所述kvm-controller服务最后更新所述etcd集群中的自定义资源,根据所述第一集群以及所述第二集群得到目标kubernetes集群。
进一步,所述部署kvm-controller服务,包括:
进行自定义资源定义的定义文件的编写;
进行kvm-controller的镜像和代码的编写;
部署kvm-controller到所述基础kubernetes集群并部署自定义资源定义对象;所述kvm-controller服务提供创建master虚机的接口以及所述待构建kubernetes集群的生命周期rest接口。
进一步,所述根据所述自定义资源顺序在所述待构建kubernetes集群中创建master虚机,包括:
通过所述kvm-controller服务根据所述自定义资源顺序调用云服务在所述待构建kubernetes集群中创建所述master虚机。
本发明实施例还提供一种cloudinit的kubernetes集群自动部署装置,包括:
部署模块,用于响应于部署指令,部署基础kubernetes集群、在所述基础kubernetes集群的虚机上部署fileserver文件服务器以及部署kvm-controller服务;所述fileserver文件服务器中包括脚本以及初始化依赖文件;
创建模块,用于响应于集群创建指令,通过所述kvm-controller服务获取传入的metadata参数以及虚机的自定义资源,根据所述自定义资源顺序创建master虚机;
执行模块,用于启动所述master虚机,通过所述master虚机自动执行cloudinit下载并执行所述脚本以自动下载所述初始化依赖文件,并对所述metadata参数进行解码得到执行命令,根据所述执行命令以及所述初始化依赖文件对所述master虚机进行初始化得到初始化master节点,根据所述初始化master节点得到目标kubernetes集群。
本发明实施例还提供一种cloudinit的kubernetes集群自动部署装置,所述cloudinit的kubernetes集群自动部署装置包括处理器和存储器,所述存储器中存储有至少一条指令、至少一段程序、代码集或指令集,所述至少一条指令、所述至少一段程序、所述代码集或指令集由所述处理器加载并执行以实现所述方法。
本发明实施例还提供一种计算机可读存储介质,所述存储介质中存储有至少一条指令、至少一段程序、代码集或指令集,所述至少一条指令、所述至少一段程序、所述代码集或指令集由处理器加载并执行以实现所述方法。
本发明的有益效果是:
通过响应于部署指令,部署基础kubernetes集群、在所述基础kubernetes集群的虚机上部署fileserver文件服务器以及部署kvm-controller服务,响应于集群创建指令,通过所述kvm-controller服务获取传入的metadata参数以及待构建kubernetes集群的自定义资源,根据所述自定义资源顺序在所述待构建kubernetes集群中创建master虚机,启动所述master虚机,通过所述master虚机自动执行cloudinit下载并执行所述脚本以自动下载所述初始化依赖文件,并对所述metadata参数进行解码得到执行命令,根据所述执行命令以及所述初始化依赖文件对所述master虚机进行初始化得到初始化master节点,根据所述初始化master节点得到目标kubernetes集群,通过cloud-init将master虚机虚机创建、初始化以部署目标kubernetes集群整合为一步,从而提升部署目标kubernetes集群的效率以及降低部署的复杂度。
为了更好地理解和实施,下面结合附图详细说明本发明。
附图说明
图1为本发明cloudinit的kubernetes集群自动部署方法的步骤流程示意图。
具体实施方式
为了使本技术领域的人员更好地理解本申请方案,下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本申请一部分的实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都应当属于本申请保护的范围。
本申请的说明书和权利要求书及所述附图中的术语“第一”、“第二”、“第三”和“第四”等是用于区别不同对象,而不是用于描述特定顺序。此外,术语“包括”和“具有”以及它们任何变形,意图在于覆盖不排他的包含。例如包含了一系列步骤或单元的过程、方法、系统、产品或设备没有限定于已列出的步骤或单元,而是可选地还包括没有列出的步骤或单元,或可选地还包括对于这些过程、方法、产品或设备固有的其它步骤或单元。
在本文中提及“实施例”意味着,结合实施例描述的特定特征、结构或特性可以包含在本申请的至少一个实施例中。在说明书中的各个位置出现该短语并不一定均是指相同的实施例,也不是与其它实施例互斥的独立的或备选的实施例。本领域技术人员显式地和隐式地理解的是,本文所描述的实施例可以与其它实施例相结合。
如图1所示,本发明实施例提供一种cloudinit的kubernetes集群自动部署方法,包括步骤S100-S300:
S100、响应于部署指令,部署基础kubernetes集群、在基础kubernetes集群的虚机上部署fileserver文件服务器以及部署kvm-controller服务。
可选地,部署指令可以包括第一指令、第二指令以及第三指令,第一指令用于部署基础kubernetes集群,第二指令用于在基础kubernetes集群的虚机上部署fileserver文件服务器,第三指令用于部署kvm-controller服务。
可选地,部署基础kubernetes集群(管理区集群)的步骤包括:
1、安装并配置Docker。
2、安装并配置kubeadm工具,kubeadm工具用于快速启动基础Kubernetes集群的命令行工具。
3、在基础kubernetes集群的Master节点(记为第一节点)上使用kubeadm初始化基础Kubernetes集群,并指定control-plane-endpoint参数,以使多个第一节点共享相同的终结点。
4、将Worker节点(记为第二节点)加入基础Kubernetes集群,通常使用kubeadmjoin命令,并将输出的join token和CA证书提供给节点。需要说明的是,第一节点和/或第二节点上设置有虚机(即虚拟机)。
5、配置基础Kubernetes集群的网络,可以使用多种网络插件实现,如Flannel、Calico或Weave Net。
可选地,在基础kubernetes集群的虚机上部署fileserver文件服务器的步骤包括:
1、在基础kubernetes集群的虚机上进行Docker的安装(yum install docker);
2、启动FileServer(sudo docker run-d-p8080:80-v/path/to/files:/files--name fileserver-e PORT=80-eDIR=/files filebrowser/filebrowser),从而得到部署后的fileserver文件服务器。需要说明的是,fileserver文件服务器中包括脚本以及初始化依赖文件。
可选地,脚本为后续创建待构建kubernetes集群所需要的脚本,可以事先准备:
create-first-master.sh:在指定虚机一系列参数中通过执行此脚本能够创建出集群的first-master;
join-node-master.sh:在指定虚机一系列参数中通过执行此脚本能够将node节点加入集群的other-master,如果是单master集群,此步可以执行;
join-node-worker.sh:在指定虚机一系列参数中通过执行此脚本能够node节点加入集群。
可选地,部署fileserver文件服务器的步骤之后,以及部署kvm-controller服务的步骤之前,还包括部署etcd集群的步骤S101以及arbor镜像服务的部署步骤S102:
S101、进行etcd集群的部署,包括:
1、在各节点(etcd0、etcd1、etcd2)上安装etcd
cd/path/to/etcd-v3.0.14-linux-amd64.tar.gz
tar xf etcd-v3.0.14-linux-amd64.tar.gz
mv etcd-v3.0.14-linux-amd64 etcd
vim/etc/profile
export PATH=/path/to/etcd
source/etc/profile
2、配置etcd集群,Static方式,创建etcd0脚本,方便配置etcd启动参数
etcd--name etcd0--data-dir/data/etcd/data --listen-peer-urls
http://10.1.2.61:2380 --listen-client-urls
http://10.1.2.61:2379,http://127.0.0.1:2379 --advertise-client-urls
http://10.1.2.61:2379
需要说明的是,etcd集群用于持久化保存集群信息以及CR(Custom Resouce,自定义资源)的相关信息。其中,etcd集群还可以用于响应于集群创建指令,通过kvm-controller服务将metadata参数、自定义资源以及待构建kubernetes集群的集群信息写入etcd集群中。
S102、部署harbor镜像服务,包括:
1、安装Docker Compose工具,用于部署、管理harbor(yum install docker-compose)
2、下载并解压Harbor
wget
https://github.com/goharbor/harbor/releases/download/v2.3.0/harbor-offline-inst aller-v2.3.0.tgz tar zxvf harbor-offline-installer-v2.3.0.tgz
3、修改配置文件
在解压Harbor后,需要修改harbor.yml配置文件,例如可以指定Harbor的访问地址、端口和存储位置等信息。
4、安装Harbor
./install.sh--with-notary--with-trivy
5、启动Harbor
docker-compose up-d
需要说明的是,harbor镜像服务用于提供创建master虚机依赖的镜像。
可选地,部署kvm-controller服务之前还包括部署KVM服务以及cloud-init的步骤S103,具体包括:
1、安装KVM软件
yum install qemu-kvm libvirt-daemon libvirt-clients bridge-utilsvirt-manager
2、创建虚拟网络
sudo virsh net-define<network-xml-file>
sudo virsh net-start<network-name>
sudo virsh net-autostart<network-name>
3、安装cloud-init软件
sudo apt install cloud-init
可选地,部署kvm-controller服务的步骤包括S104-S106:
S104、进行自定义资源定义的定义文件的编写。
具体地,编写CRD(Custom Resource Definition自定义资源定义)的定义文件machines_crd.yaml。
S105、进行kvm-controller的镜像和代码的编写。
S106、部署kvm-controller到基础kubernetes集群并部署自定义资源定义对象。
具体地,部署kvm-controller到基础kubernetes集群:kubectl apply-fkvm-controller.yaml;部署自定义资源定义对象(CRD对象):kubectl apply-fmachines_crd.yaml。
需要说明的是,kvm-controller服务提供创建master虚机的接口以及待构建kubernetes集群的生命周期rest接口,如创建kubernetes集群、删除kubernetes集群、添加node、删除node等接口。
S200、响应于集群创建指令,通过kvm-controller服务获取传入的metadata参数以及待构建kubernetes集群的自定义资源,根据自定义资源在待构建kubernetes集群中创建master虚机。
本发明实施例中,当用户需要创建kubernetes用户区集群(即待构建kubernetes集群),输入待构建kubernetes集群,响应于集群创建指令,将metadata参数传入kvm-controller服务,kvm-controller服务获取传入的metadata参数以及待构建kubernetes集群(clusters)的自定义资源(CR),将待构建kubernetes集群的集群信息和待构建kubernetes集群(clusters)的自定义资源(CR)写入etcd集群中。
步骤S200中的待构建kubernetes集群,具体地,当响应于集群创建指令,此时基于集群创建指令的CRD对象,创建待构建kubernetes集群的clusters CR(自定义资源),然后创建first-master machine对象,即定义待构建kubernetes集群中虚机的YAML文件,并将sh create-first-master.sh写入待构建kubernetes集群中虚机的CR,在待构建kubernetes集群中创建machine CR,此时会触发kvm-controller服务的控制器根据自定义资源顺序调用云服务创建master虚机,记该master虚机为first-master虚机(master1虚机)。
S300、启动master虚机,通过master虚机自动执行cloudinit下载并执行脚本以自动下载初始化依赖文件,并对metadata参数进行解码得到执行命令,根据执行命令以及初始化依赖文件对master虚机进行初始化得到初始化master节点,根据初始化master节点得到目标kubernetes集群。
具体地,启动master虚机,此时通过master虚机自动执行cloudinit下载并执行脚本,脚本在执行的过程中会去fileserver文件服务器上自动下载初始化依赖文件。同时,master虚机会传入metadata参数并对metadata参数进行base64解码得到部署first-master的执行命令,通过执行该执行命令并利用初始化依赖文件可以对master虚机行初始化得到初始化master节点,记为master1节点。
可选地,步骤S300中根据初始化master节点得到目标kubernetes集群包括步骤S310-S330:
S310、当得到初始化master节点,将当前待构建kubernetes集群的token信息返回给kvm-controller服务。
S320、通过kvm-controller服务更新etcd集群中的自定义资源。
可选地,当得到初始化master节点,将当前待构建kubernetes集群的token信息返回给kvm-controller服务,kvm-controller服务利用token信息将etcd集群中的自定义资源进行更新,即写入到etcd集群中的clusters的自定义资源(CR)。
S330、根据更新后的自定义资源返回根据自定义资源顺序创建master虚机的步骤,直至得到所有初始化master节点形成第一集群,根据第一集群得到目标kubernetes集群。
可选地,当kvm-controller服务监听到clusters的自定义资源变化,根据更新后的自定义资源返回根据自定义资源顺序创建master虚机的步骤,从而创建新的master虚机,如master2虚机,同样启动master2虚机自动执行cloudinit下载并执行脚本以自动下载初始化依赖文件以得到另一个初始化master节点,更新etcd集群中的自定义资源,同理master3等其他other-master节点的初始化步骤类似,直至最终得到所有初始化master节点形成第一集群(master1集群)。
可选地,步骤S330中根据第一集群得到目标kubernetes集群,包括步骤S3301-S3304:
S3301、当得到第一集群,将当前待构建kubernetes集群的token信息返回给kvm-controller服务。
S3302、通过kvm-controller服务再次更新etcd集群中的自定义资源。
本发明实施例中,当得到第一集群,将当前待构建kubernetes集群的token信息返回给kvm-controller服务,通过kvm-controller服务再次更新etcd集群中的clusters的自定义资源(CR)。
S3303、当kvm-controller服务检测到再次更新的自定义资源,创建node节点以及对应的新虚机。
本发明实施例中,当kvm-controller服务检测到再次更新的自定义资源,此时创建node节点以及对应的新虚机,并将join-node-worker.sh first-master-ip token写入到CR。
S3304、启动新虚机,通过新虚机自动执行cloudinit下载并执行脚本以自动下载初始化依赖文件,并对metadata参数进行解码得到新的执行命令,根据新的执行命令以及初始化依赖文件对新虚机进行初始化得到初始化node节点并加入第二集群中,并将当前待构建kubernetes集群的token信息返回给kvm-controller服务最后更新etcd集群中的自定义资源,根据第一集群以及第二集群得到目标kubernetes集群。
可选地,启动新虚机,通过新虚机自动执行cloudinit下载并执行脚本以自动下载初始化依赖文件,并对metadata参数进行base64解码得到新的执行命令,根据新的执行命令以及初始化依赖文件对新虚机进行初始化得到初始化node节点并加入第二集群(master集群)中,并将当前待构建kubernetes集群的token信息返回给kvm-controller服务最后更新etcd集群中的自定义资源,从而根据第一集群以及第二集群得到目标kubernetes集群,目标kubernetes集群创建成功。
可选地,用户可以通过kubectl get命令查看machines对象的状态,获取目标kubernetes集群中虚机的详细信息。
需要说明的是,在其他实施例中,可以将fileserver、harbor、kvm、cloud-init实现高可用,以便以确保系统可靠性和可用性;可以使用主备或多主机配置来实现Fileserver的高可用性;可以使用多个Harbor实例来实现高可用性;KVM-controller实现高可用可以提高虚拟机创建和配置的可靠性和稳定性,同时也可以提高整个集群的高可用性,保证业务的连续性。
相对于现有技术,本发明实施例的cloudinit的kubernetes集群自动部署方法:
1)、通过cloud-init将虚机创建和部署目标kubernetes集群整合为一步,一次性把虚机创建和目标kubernetes集群部署给整合到一起,从而提升容器集群管理效率和降低复杂度;使用cloud-init可以使创建集群更加简单、可靠和跨平台,并且可以更加灵活地管理kubernetes用户集群。
2)、自动化配置:使用cloud-init可以自动化地配置虚拟机实例,从而配置和管理kubernetes集群;
3)、灵活性:使用cloud-init可以轻松配置和管理虚拟机实例,可以在任何环境中使用,而不限于特定的云平台或基础设施;
4)、高度定制化:可以非常方便地自定义安装kubernetes集群,可以灵活地添加和删除软件包、用户、配置文件等;
5)、跨平台:使用cloud-init可以在不同的平台上配置虚拟机实例,例如KVM、VMware、AWS、GCP等。
本发明实施例还提供一种cloudinit的kubernetes集群自动部署装置,包括:
部署模块,用于响应于部署指令,部署基础kubernetes集群、在基础kubernetes集群的虚机上部署fileserver文件服务器以及部署kvm-controller服务;fileserver文件服务器中包括脚本以及初始化依赖文件;
创建模块,用于响应于集群创建指令,通过kvm-controller服务获取传入的metadata参数以及虚机的自定义资源,根据自定义资源顺序创建master虚机;
执行模块,用于启动master虚机,通过master虚机自动执行cloudinit下载并执行脚本以自动下载初始化依赖文件,并对metadata参数进行解码得到执行命令,根据执行命令以及初始化依赖文件对master虚机进行初始化得到初始化master节点,根据初始化master节点得到目标kubernetes集群。
上述方法实施例中的内容均适用于本装置实施例中,本装置实施例所具体实现的功能与上述方法实施例相同,并且达到的有益效果与上述方法实施例所达到的有益效果也相同,不再赘述。
本发明实施例还提供了另一种cloudinit的kubernetes集群自动部署装置,该cloudinit的kubernetes集群自动部署装置包括处理器和存储器,存储器中存储有至少一条指令、至少一段程序、代码集或指令集,至少一条指令、至少一段程序、代码集或指令集由处理器加载并执行以实现前述实施例的cloudinit的kubernetes集群自动部署方法。
上述方法实施例中的内容均适用于本装置实施例中,本装置实施例所具体实现的功能与上述方法实施例相同,并且达到的有益效果与上述方法实施例所达到的有益效果也相同,不再赘述。
本发明实施例还提供一种计算机可读存储介质,存储介质中存储有至少一条指令、至少一段程序、代码集或指令集,至少一条指令、至少一段程序、代码集或指令集由处理器加载并执行以实现前述实施例的cloudinit的kubernetes集群自动部署方法。
本发明实施例还提供一种计算机程序产品或计算机程序,该计算机程序产品或计算机程序包括计算机指令,该计算机指令存储在计算机可读存储介质中。计算机设备的处理器从计算机可读存储介质读取该计算机指令,处理器执行该计算机指令,使得该计算机设备执行前述实施例的cloudinit的kubernetes集群自动部署方法。
本申请的说明书及上述附图中的术语“第一”、“第二”、“第三”、“第四”等(如果存在)是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便这里描述的本申请的实施例能够以除了在这里图示或描述的那些以外的顺序实施。此外,术语“包括”和“具有”以及他们的任何变形,意图在于覆盖不排他的包含,例如,包含了一系列步骤或单元的过程、方法、系统、产品或设备不必限于清楚地列出的那些步骤或单元,而是可包括没有清楚地列出的或对于这些过程、方法、产品或设备固有的其它步骤或单元。
应当理解,在本申请中,“至少一个(项)”是指一个或者多个,“多个”是指两个或两个以上。“和/或”,用于描述关联对象的关联关系,表示可以存在三种关系,例如,“A和/或B”可以表示:只存在A,只存在B以及同时存在A和B三种情况,其中A,B可以是单数或者复数。字符“/”一般表示前后关联对象是一种“或”的关系。“以下至少一项(个)”或其类似表达,是指这些项中的任意组合,包括单项(个)或复数项(个)的任意组合。例如,a,b或c中的至少一项(个),可以表示:a,b,c,“a和b”,“a和c”,“b和c”,或“a和b和c”,其中a,b,c可以是单个,也可以是多个。
在本申请所提供的几个实施例中,应该理解到,所揭露的装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。另外,在本申请各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。
集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本申请的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括多指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本申请各个实施例方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(Read-Only Memory,简称ROM)、随机存取存储器(Random Access Memory,简称RAM)、磁碟或者光盘等各种可以存储程序的介质。
以上,以上实施例仅用以说明本申请的技术方案,而非对其限制;尽管参照前述实施例对本申请进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本申请各实施例技术方案的精神和范围。

Claims (10)

1.一种cloudinit的kubernetes集群自动部署方法,其特征在于,包括:
响应于部署指令,部署基础kubernetes集群、在所述基础kubernetes集群的虚机上部署fileserver文件服务器以及部署kvm-controller服务;所述fileserver文件服务器中包括脚本以及初始化依赖文件;
响应于集群创建指令,通过所述kvm-controller服务获取传入的metadata参数以及待构建kubernetes集群的自定义资源,根据所述自定义资源顺序在所述待构建kubernetes集群中创建master虚机;
启动所述master虚机,通过所述master虚机自动执行cloudinit下载并执行所述脚本以自动下载所述初始化依赖文件,并对所述metadata参数进行解码得到执行命令,根据所述执行命令以及所述初始化依赖文件对所述master虚机进行初始化得到初始化master节点,根据所述初始化master节点得到目标kubernetes集群。
2.根据权利要求1所述cloudinit的kubernetes集群自动部署方法,其特征在于:所述部署kvm-controller服务之前,还包括:
进行etcd集群的部署;所述etcd集群用于响应于集群创建指令,将metadata参数、所述自定义资源以及所述待构建kubernetes集群的集群信息写入所述etcd集群中。
3.根据权利要求2所述cloudinit的kubernetes集群自动部署方法,其特征在于:所述进行etcd集群的部署之后还包括:
部署harbor镜像服务;所述harbor镜像服务用于提供创建所述master虚机依赖的镜像。
4.根据权利要求2所述cloudinit的kubernetes集群自动部署方法,其特征在于:所述根据所述初始化master节点得到目标kubernetes集群,包括:
当得到所述初始化master节点,将当前所述待构建kubernetes集群的token信息返回给所述kvm-controller服务;
通过所述kvm-controller服务更新所述etcd集群中的自定义资源;
根据更新后的自定义资源返回所述根据所述自定义资源顺序创建master虚机的步骤,直至得到所有初始化master节点形成第一集群,根据所述第一集群得到目标kubernetes集群。
5.根据权利要求4所述cloudinit的kubernetes集群自动部署方法,其特征在于:所述根据所述第一集群得到目标kubernetes集群,包括:
当得到所述第一集群,将当前所述待构建kubernetes集群的token信息返回给所述kvm-controller服务;
通过所述kvm-controller服务再次更新所述etcd集群中的自定义资源;
当所述kvm-controller服务检测到再次更新的自定义资源,创建node节点以及对应的新虚机;
启动所述新虚机,通过所述新虚机自动执行cloudinit下载并执行所述脚本以自动下载所述初始化依赖文件,并对所述metadata参数进行解码得到新的执行命令,根据所述新的执行命令以及所述初始化依赖文件对所述新虚机进行初始化得到初始化node节点并加入第二集群中,并将当前所述待构建kubernetes集群的token信息返回给所述kvm-controller服务最后更新所述etcd集群中的自定义资源,根据所述第一集群以及所述第二集群得到目标kubernetes集群。
6.根据权利要求2所述cloudinit的kubernetes集群自动部署方法,其特征在于:所述部署kvm-controller服务,包括:
进行自定义资源定义的定义文件的编写;
进行kvm-controller的镜像和代码的编写;
部署kvm-controller到所述基础kubernetes集群并部署自定义资源定义对象;所述kvm-controller服务提供创建master虚机的接口以及所述待构建kubernetes集群的生命周期rest接口。
7.根据权利要求1所述cloudinit的kubernetes集群自动部署方法,其特征在于:所述根据所述自定义资源顺序在所述待构建kubernetes集群中创建master虚机,包括:
通过所述kvm-controller服务根据所述自定义资源顺序调用云服务在所述待构建kubernetes集群中创建所述master虚机。
8.一种cloudinit的kubernetes集群自动部署装置,其特征在于,包括:
部署模块,用于响应于部署指令,部署基础kubernetes集群、在所述基础kubernetes集群的虚机上部署fileserver文件服务器以及部署kvm-controller服务;所述fileserver文件服务器中包括脚本以及初始化依赖文件;
创建模块,用于响应于集群创建指令,通过所述kvm-controller服务获取传入的metadata参数以及虚机的自定义资源,根据所述自定义资源顺序创建master虚机;
执行模块,用于启动所述master虚机,通过所述master虚机自动执行cloudinit下载并执行所述脚本以自动下载所述初始化依赖文件,并对所述metadata参数进行解码得到执行命令,根据所述执行命令以及所述初始化依赖文件对所述master虚机进行初始化得到初始化master节点,根据所述初始化master节点得到目标kubernetes集群。
9.一种cloudinit的kubernetes集群自动部署装置,其特征在于:所述cloudinit的kubernetes集群自动部署装置包括处理器和存储器,所述存储器中存储有至少一条指令、至少一段程序、代码集或指令集,所述至少一条指令、所述至少一段程序、所述代码集或指令集由所述处理器加载并执行以实现如权利要求1-7中任一项所述方法。
10.一种计算机可读存储介质,其特征在于:所述存储介质中存储有至少一条指令、至少一段程序、代码集或指令集,所述至少一条指令、所述至少一段程序、所述代码集或指令集由处理器加载并执行以实现如权利要求1-7中任一项所述方法。
CN202310757380.2A 2023-06-25 2023-06-25 一种cloudinit的kubernetes集群自动部署方法、装置及存储介质 Pending CN116860387A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202310757380.2A CN116860387A (zh) 2023-06-25 2023-06-25 一种cloudinit的kubernetes集群自动部署方法、装置及存储介质

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202310757380.2A CN116860387A (zh) 2023-06-25 2023-06-25 一种cloudinit的kubernetes集群自动部署方法、装置及存储介质

Publications (1)

Publication Number Publication Date
CN116860387A true CN116860387A (zh) 2023-10-10

Family

ID=88222591

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202310757380.2A Pending CN116860387A (zh) 2023-06-25 2023-06-25 一种cloudinit的kubernetes集群自动部署方法、装置及存储介质

Country Status (1)

Country Link
CN (1) CN116860387A (zh)

Similar Documents

Publication Publication Date Title
US20210406079A1 (en) Persistent Non-Homogeneous Worker Pools
CN110413288B (zh) 应用部署方法、装置、服务器及存储介质
Yang et al. A profile-based approach to just-in-time scalability for cloud applications
CN106126273B (zh) 一种升级bios的方法
US11106453B2 (en) Method and system for a client to server deployment via an online distribution platform
US20140172405A1 (en) Evaluating distributed application performance in a new environment
CN106371881B (zh) 一种用于服务器内程序版本更新的方法和系统
CN113645071B (zh) 一种集群部署方法、系统、介质及电子终端
US9996379B2 (en) Program execution without the use of bytecode modification or injection
CN108829588B (zh) 一种测试应用程序的处理方法、部署系统及装置
CN115292026B (zh) 容器集群的管理方法、装置、设备及计算机可读存储介质
CN108563440A (zh) 列表控制器代码自动添加方法、装置及可读存储介质
CN104765624B (zh) 虚拟机应用程序的更新处理方法和装置
US11750451B2 (en) Batch manager for complex workflows
CN109032696A (zh) 一种页面调起方法、终端及计算机存储介质
CN116860387A (zh) 一种cloudinit的kubernetes集群自动部署方法、装置及存储介质
CN114422358A (zh) Api网关配置更新方法及设备
CN113934443A (zh) 软件升级系统
CN110971665A (zh) 一种对接多类型存储的管理方法、系统、设备及存储介质
Mardan et al. Getting Node. js Apps Production Ready
CN108196852A (zh) 一种软件运行方法、更新方法和相关装置
CN117389713B (zh) 存储系统应用业务数据迁移方法、装置、设备及介质
CN110362320A (zh) 一种应用开发平台的命令实现方法和装置
US11743188B2 (en) Check-in monitoring for workflows
CN108733467A (zh) 电子设备运行应用的方法及装置、电子设备

Legal Events

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