CN111522628B - 一种基于OpenStack的Kubernetes集群搭建部署方法、架构及存储介质 - Google Patents

一种基于OpenStack的Kubernetes集群搭建部署方法、架构及存储介质 Download PDF

Info

Publication number
CN111522628B
CN111522628B CN202010341086.XA CN202010341086A CN111522628B CN 111522628 B CN111522628 B CN 111522628B CN 202010341086 A CN202010341086 A CN 202010341086A CN 111522628 B CN111522628 B CN 111522628B
Authority
CN
China
Prior art keywords
kubernetes
cluster
virtual machine
sub
container
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
CN202010341086.XA
Other languages
English (en)
Other versions
CN111522628A (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.)
Inesa R&d Center
Original Assignee
Inesa R&d Center
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 Inesa R&d Center filed Critical Inesa R&d Center
Priority to CN202010341086.XA priority Critical patent/CN111522628B/zh
Publication of CN111522628A publication Critical patent/CN111522628A/zh
Application granted granted Critical
Publication of CN111522628B publication Critical patent/CN111522628B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

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/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

本发明涉及一种基于OpenStack的Kubernetes集群搭建部署方法、架构及存储介质,其中方法包括:步骤1:于OpenStack租户服务的虚拟机中创建Kubernetes主集群;步骤2:于Magnum中配置完成Kubeconfig文件;步骤3:创建Kubernetes子集群模板;步骤4:基于Kubernetes子集群模板创建Kubernetes子集群并通过Kubeconfig文件与Kubernetes主集群相连接,完成部署,架构包括Kubernetes主集群和Kubernetes子集群,Kubernetes主集群包括1个Master虚拟机节点和3个Worker虚拟机节点,Master虚拟机节点通过设置于Master虚拟机节点中的API Server组件分别与所有的Worker虚拟机节点相连接,所有的Worker虚拟机节点通过设置于Worker虚拟机节点中的API Server组件与Kubernetes子集群相连接。与现有技术相比,本发明具有拥有弹性伸缩,服务可自动恢复,拥有隔离,多个子Kubernetes集群间互相不影响,架构快速搭建等优点。

Description

一种基于OpenStack的Kubernetes集群搭建部署方法、架构及 存储介质
技术领域
本发明涉及分布式架构技术领域,尤其是涉及一种基于OpenStack的Kubernetes集群搭建部署方法、架构及存储介质。
背景技术
传统的应用部署方式是通过插件或脚本来安装应用。这样做的缺点是应用的运行、配置、管理、所有生存周期将与当前操作系统绑定,这样做并不利于应用的升级更新/回滚等操作,当然也可以通过创建虚拟机的方式来实现某些功能,但是虚拟机非常重,并不利于可移植性。
新的方式是通过部署容器方式实现,每个容器之间互相隔离,每个容器有自己的文件系统,容器之间进程不会相互影响,能区分计算资源。相对于虚拟机,容器能快速部署,由于容器与底层设施、机器文件系统解耦的,所以它能在不同云、不同版本操作系统间进行迁移。
容器占用资源少、部署快,每个应用可以被打包成一个容器镜像,每个应用与容器间成一对一关系也使容器有更大优势,使用容器可以在build或release的阶段,为应用创建容器镜像,因为每个应用不需要与其余的应用堆栈组合,也不依赖于生产环境基础结构,这使得从研发到测试、生产能提供一致的环境。类似地,容器比虚拟机轻量、更“透明”,这更便于监控和管理。
Kubernetes集群作为一种主流的为用户提供容器资源的平台,近年来得到了广泛的应用。云计算平台可以方便的以虚拟机的形式为用户提供计算、存储和网络资源。随着云计算平台服务模式的普及和kubernetes的广泛应用,越来越多的用户产生了在云端部署kubernetes集群的需求。
Kubernetes是一个开源的用于管理云平台中多个主机上的容器化的应用,Kubernetes的目标是让部署容器化应用更加简单高效。Kubernetes为开源的容器编排工具,可以实现将若干个容器组合成一个服务以及动态地分配容器运行的主机等功能,为用户使用容器提供了极大的便利。要使用Kubernetes,需要搭建Kubernetes集群,而Kubernetes集群包括主节点和从节点两类节点。但是,在搭建Kubernetes集群时,搭建过程中的每个步骤需要用户进行手动配置,搭建效率低下。目前的部署Kubernetes集群存在以下问题:部署Kubernetes架构对部署人员技术要求高;部署Kubernetes架构时间成本高,Kubernetes架构部署复杂,部署失败性高,不支持自动扩展、服务高可用、以及动态回滚。很有必要在寻找一种更加智能、可靠、高效的自动化的部署方法。
当前基于虚拟机的Magnum体系结构有很多缺点:Shell脚本太多,难以维护;创建集群的时间很长;很难进行集群的自动扩展,自动修复或滚动升级,特别是对于Kubernetes控制平面而言;很差的附加服务。
发明内容
本发明的目的就是为了克服上述现有技术存在的缺陷而提供一种基于OpenStack的Kubernetes集群搭建部署方法、架构及存储介质,在Kubernetes内部运行Kubernetes组件,但仍使用Magnum,Magnum像以前一样创建和管理子集群,可以在子集群内部管理用户集群的所有控制平面组件,加快在云上部署kubernetes集群的过程,优化kubernetes集群部署的流程,同时这种优化后的部署流程还能减少资源的消耗。
通常情况下,kubernetes集群的节点分为master节点和node节点,在云端部署kubernetes集群,需要分别在云端创建master节点和node节点的虚拟机,首先完成master节点上kubernetes相关组件的安装和配置,包含api server,scheduler,etcd,ControllerManager等服务,再完成node节点上的kubernetes相关组件的安装和配置,包含kubelet和kube-proxy服务。这一过程往往需要耗费大量的时间。
在kubernetes集群中,kubelet服务可以启动多个pod来运行容器,同时,kubenetes的系统服务都是可以容器化的,即kubernetes集群可以管理自己的系统服务。
本发明的目的可以通过以下技术方案来实现:
一种基于OpenStack的Kubernetes集群搭建部署方法,该搭建部署方法包括以下步骤:
步骤1:于OpenStack租户服务的虚拟机中创建Kubernetes主集群;
步骤2:于Magnum中配置完成Kubeconfig文件;
步骤3:创建Kubernetes子集群模板;
步骤4:基于Kubernetes子集群模板创建Kubernetes子集群并通过Kubeconfig文件与Kubernetes主集群相连接,完成部署。
进一步地,所述的步骤1包括以下分步骤:
步骤101:OpenStack按照租户区分虚拟机所在项目与用户,使用admin租户于Magnum中创建虚拟机;
步骤102:于虚拟机中创建Kubernetes主集群模板,并通过Kubernetes主集群模板创建Kubernetes主集群。
进一步地,所述的步骤102中的主集群模板包括容器管理引擎、镜像模板、虚拟机配置模板、网络、存储和容器镜像仓库。
进一步地,所述的步骤2中的Kubeconfig文件包括Kubernetes主集群的证书和Kubernetes主集群的api地址。
进一步地,所述的步骤3中的子集群模板包括容器管理引擎、镜像模板、虚拟机配置模板、网络、存储、容器镜像仓库以及服务类型。
进一步地,所述的服务类型包括Kubernetes集群创建于虚拟机的环境、Kubernetes集群创建于物理机的环境和Kubernetes集群创建于Kubernetes主集群的容器。
本发明还提供一种采用所述的基于OpenStack的Kubernetes集群搭建部署方法的架构,该架构包括Kubernetes主集群和Kubernetes子集群,所述Kubernetes主集群包括1个Master虚拟机节点和3个Worker虚拟机节点,所述Master虚拟机节点通过设置于所述Master虚拟机节点中的API Server组件分别与所有的所述Worker虚拟机节点相连接,所有的所述Worker虚拟机节点通过设置于所述Worker虚拟机节点中的API Server组件与所述Kubernetes子集群相连接。
进一步地,所述的Master虚拟机节点中还设有用于监视新创建的Pod,并选择要运行的节点,以管理资源分配的Scheduler组件、用于作为所有集群数据的Kubernetes的后备存储的ETCD组件、用于作为运行控制器以控制循环、监视集群的状态并将其移至所需状态的Controller Manager组件和用于作为云计算运行控制器的Cloud Controller Manager组件,所述Scheduler组件、所述ETCD组件、所述Controller Manager组件和所述CloudController Manager组件均与设置于所述Master虚拟机节点中的API Server组件相连接。
进一步地,所述的Worker虚拟机节点中还设有用于作为确保Pod中的容器正常运行且状况良好的代理工具的Kubelet组件、用于在每个节点中运行的网络代理,并通过维护网络规则和执行连接转发来启用Kubernetes服务抽象化的Kube-proxy组件和以POD形式存在的Scheduler组件、ETCD组件、Controller Manager组件以及Cloud Controller Manager组件。
本发明还提供一种计算机可读存储介质,所述计算机可读存储介质存储有计算机程序,其特征在于,所述计算机程序被处理器执行时实现如所述的基于OpenStack的Kubernetes集群搭建部署方法的步骤。
与现有技术相比,本发明具有以下优点:
(1)本发明方法在Kubernetes内部运行Kubernetes组件,但仍使用Magnum。Magnum像以前一样创建和管理子集群,但是可以在子集群内部管理用户集群的所有控制平面组件,拥有弹性伸缩,服务可自动恢复以及拥有隔离,多个子Kubernetes集群间互相不影响的优点。
(2)本发明架构包括Kubernetes主集群和Kubernetes子集群,Kubernetes主集群包括1个Master虚拟机节点和3个Worker虚拟机节点,Master虚拟机节点通过设置于Master虚拟机节点中的API Server组件分别与所有的Worker虚拟机节点相连接,所有的Worker虚拟机节点通过设置于Worker虚拟机节点中的API Server组件与Kubernetes子集群相连接,可以节约成本,一个Kubernetes内可以创建成百上千个Kubernetes子集群。
(3)本发明架构中Worker虚拟机节点中还设有用于作为确保Pod中的容器正常运行且状况良好的代理工具的Kubelet组件、用于在每个节点中运行的网络代理,并通过维护网络规则和执行连接转发来启用Kubernetes服务抽象化的Kube-proxy组件和以POD形式存在的Scheduler组件、ETCD组件、Controller Manager组件以及Cloud Controller Manager组件,秒级快速搭建Kubernetes子集群。
(4)本发明的效果是优化了云上部署kubernetes集群的流程,加快了普通用户云上部署kubernetes的过程,并减少了云端资源的消耗。
附图说明
图1为本发明Kubernetes集群内创建子集群的方法流程图;
图2为本发明实施例的架构图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明的一部分实施例,而不是全部实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动的前提下所获得的所有其他实施例,都应属于本发明保护的范围。
本发明的基本原理如下:
在OpenStack中创建好Kubernetes主集群模板,再OpenStack中创建主集群。所述主集群模板包括容器管理引擎、镜像模板、虚拟机配置模板、网络、存储、容器镜像仓库。所述容器管理引擎是指编排、部署Kubernetes、Swarm或者Mesos容器管理引擎。所述镜像模板是指创建虚拟机所需的镜像,通常是通过glance服务来管理镜像模板,此处需要选择一个虚拟机镜像ID。所述虚拟机配置模板是指创建的虚拟机配置大小,具体包括虚拟机CPU个数,内存大小,磁盘空间大小。所述网络是指虚拟机创建所连接的网络,为了让虚拟机连接外网,特别的需要使用虚拟路由器加上虚拟网络。所述存储是指虚拟机所用的存储方式,包括cinder云硬盘方式和非云硬盘方式。云硬盘方式指的是虚拟机的数据盘是由cinder云硬盘提供,重要的数据盘与系统盘数据是分开的,并且数据盘采用独立盘方式挂载,系统盘删除后,数据盘不会被删除,数据依然保留下来。非云硬盘方式则是数据存放在系统盘内,当系统盘删除后,数据不被保留被一同删除。所述容器镜像仓库是指创建Kubernetes集群所需的容器镜像,需要有个存放镜像的地方,即称为容器镜像仓库。
所述创建主集群,需要提供容器集群模板名称或ID、集群主节点数、集群从节点数、超时时限。选择好容器集群模板,表示使用预先创建好的Kubernetes容器管理引擎,虚拟机镜像模板,虚拟机配置模板和网络、存储等信息。其中因为本发明特定使用的是Kubernetes容器管理引擎,因此创建主集群模板的时候需要选择Kubernetes,而不是Swarm或者Mesos。虚拟机镜像模板是指预先制作好的虚拟机镜像,通常虚拟机镜像存放在OpenStack的Glance中,并且有很多种版本,包括fedora-atomic、Coreos等容器化虚拟机镜像。从系统启动速度和操作便捷性方面着眼,本发明建议采用Fedora-Atomic-27版本的操作系统。本发明的虚拟机配置模板建议采用2CPU核数4GB内存20G数据盘的模板或以上的规格。本发明的网络建议采用可连接外网的网络,在创建主集群以及创建子集群的时候需要从公网下载相应的容器镜像,采用可连接外网的网络可以大大简便创建集群所需要的步骤。当然也可以使用私有镜像仓库,所述私有镜像仓库是指自己搭建的一个类似公网容器镜像仓库的私有IP镜像仓库。使用私有镜像仓库需要提前搭建,然后在主/子集群模板中的容器镜像仓库地址填写私有IP加端口即可使用。
本发明提供的基于openstack的容器部署方法及架构,该方法包括:在openstack中准备好创建容器集群需要的资源,客户端通过调用接口模块,结合资源创建容器集群模板,并将容器集群模板的配置信息记录在数据模块;客户端通过接口模块、根据输入的容器集群模板和容器集群大小信息,创建容器集群;接口模块验证容器集群大小信息,并把容器集群大小信息发送给决策模块,决策模块从数据模块中获取容器集群模板的配置信息,再从驱动管理模块获取对应容器管理引擎的编排模板,生成heat编排模板;heat编排根据heat编排模板自动调度openstack资源和编排、部署容器集群环境;该方法通过该架构可以快速构建一个可靠、可扩展的容器环境;基于openstack的容器部署架构,充分发挥云计算的按需、快速提供资源的能力;把容器环境的部署与openstack深度集成,实现容器的多租户功能;利用openstack现有的heat编排,节省了开发成本,又提升了部署效率;通过容器集群模板的方式,实现容器集群的快速部署,支持多种容器管理技术;通过openstack的cinder,可以实现容器环境的多后端存储能力。
所述Magnum项目是通过Openstack API能够在Openstack中创建基于容器的服务,但它本身并不直接对容器进行操作,而是通过Kubernetes,Swarm或者Mesos后端进行管理。
Magnum特征:
(1)Clusters(node对象的集合,以前版本称为Bay)抽象化。
(2)与Kubernetes,Swarm以及Mesos进行集成,管理容器。
(3)与Keystone集成,提供多租户安全。
(4)与Neutron集成,为Kubernetes提供多租户安全。
(5)与Cinder集成,为容器提供volume服务
一个有效的Kubernetes集群包含如下:
一个控制平面;该控制平面包括ApiServer、Scheduler、Controller-manager和etcd
一组节点;该节点包含运行pod所需要的服务,其中Kubelet和Kube-proxy在每个节点上运行。用来维护运行中的Pod并提供Kubernetes运行时环境。
主组件
在此类组件中,有:
API Server:公开Kubernetes API。它是Kubernetes控制平面的入口点。
Scheduler:监视新创建的Pod,并选择要运行的节点,以管理资源分配。
Controller-manager:运行控制器,控制循环,监视集群的状态并将其移至所需状态。
ETCD:一致且高度可用的键值存储,用作所有集群数据的Kubernetes的后备存储。
节点组件
在每个节点中,都拥有这两个组件:
Kubelet:节点代理工具,确保Pod中的容器正常运行且状态良好的代理工具。这是节点和控制平面之间的链接。
Kube-proxy:在每个节点中运行的网络代理,通过维护网络规则和执行连接转发来启用Kubernetes服务抽象化。
通过本发明从单个Kubernetes架构变成Kubernetes之上的Kubernetes,是一种能够使得部署集群的最简单,最自动化的方式。
称Kubernetes管理集群为主集群;
称在Kubernetes集群上部署的客户集群为子集群;
在Kubernetes主集群中创建Kubernetes子集群的架构中能使集群弹性化、隔离化、成本优化。
与每个Kubernetes主集群一样,子集群具有一组节点和一个控制平面,该控制平面由几个主组件(API Server,调度程序,控制管理,ETCD)组成。
本发明提出一种将子集群的主组件部署为主集群节点中的Pod。这样能够达到子集群控制平面的无状态组件,在主集群中根据租户信息创建不同的命名空间,所述命名空间是指Kubernetes集群中资源隔离的要素。
总结以上内容,得到本发明一种基于在OpenStack上的Kubernetes集群中创建Kubernetes集群容器的方法和架构,如图1所示,
包括以下步骤:
步骤1:在openstack租户服务的虚拟机中创建Kubernetes主集群,首先的,OpenStack是按照租户来区分虚拟机所在项目与用户,使用admin租户在Magnum中创建虚拟机。需要先创建Kubernetes主集群模板,所述主集群模板包括容器管理引擎、镜像模板、虚拟机配置模板、网络、存储、容器镜像仓库。所述容器管理引擎是指编排、部署Kubernetes、Swarm或者Mesos容器管理引擎。所述镜像模板是指创建虚拟机所需的镜像,通常是通过glance服务来管理镜像模板,此处需要选择一个虚拟机镜像ID。所述虚拟机配置模板是指创建的虚拟机配置大小,具体包括虚拟机CPU个数,内存大小,磁盘空间大小。所述网络是指虚拟机创建所连接的网络,为了让虚拟机连接外网,特别的需要使用虚拟路由器加上虚拟网络。所述存储是指虚拟机所用的存储方式,包括cinder云硬盘方式和非云硬盘方式。云硬盘方式指的是虚拟机的数据盘是由cinder云硬盘提供,重要的数据盘与系统盘数据是分开的,并且数据盘采用独立盘方式挂载,系统盘删除后,数据盘不会被删除,数据依然保留下来。非云硬盘方式则是数据存放在系统盘内,当系统盘删除后,数据不被保留被一同删除。所述容器镜像仓库是指创建Kubernetes集群所需的容器镜像,需要有个存放镜像的地方,即称为容器镜像仓库。其次的,需要通过上述Kubernetes主集群模板创建主集群,所述创建主集群,需要提供容器集群模板名称或ID、集群主节点数、集群从节点数、超时时限。选择好容器集群模板,表示使用预先创建好的Kubernetes容器管理引擎,虚拟机镜像模板,虚拟机配置模板和网络、存储等信息。其中因为本发明特定使用的是Kubernetes容器管理引擎,因此创建主集群模板的时候需要选择Kubernetes,而不是Swarm或者Mesos。虚拟机镜像模板是指预先制作好的虚拟机镜像,通常虚拟机镜像存放在OpenStack的Glance中,并且有很多种版本,包括fedora-atomic、Coreos等容器化虚拟机镜像。从系统启动速度和操作便捷性方面着眼,本发明建议采用Fedora-Atomic-27版本的操作系统。本发明的虚拟机配置模板建议采用2CPU核数4GB内存20G数据盘的模板或以上的规格。本发明的网络建议采用可连接外网的网络,在创建主集群以及创建子集群的时候需要从公网下载相应的容器镜像,采用可连接外网的网络可以大大简便创建集群所需要的步骤。当然也可以使用私有镜像仓库,所述私有镜像仓库是指自己搭建的一个类似公网容器镜像仓库的私有IP镜像仓库。使用私有镜像仓库需要提前搭建,然后在主/子集群模板中的容器镜像仓库地址填写私有IP加端口即可使用。
步骤2:在Magnum中配置好kubeconfig文件。在Kubernetes集群中创建应用需要配置kubeconfig,因此在通过Magnum创建子集群的时候需要获取到Kubernetes集群的kubeconfig,kubeconfig中包含有Kubernetes主集群的证书、Kubernetes主集群的api地址。将Kubernetes集群的kubeconfig配置导出并且存放在Magnum的目录中。
步骤3:创建Kubernetes子集群模板。所需创建Kubernetes子集群模板,包括容器管理引擎、镜像模板、虚拟机配置模板、网络、存储、容器镜像仓库、服务类型。其中容器管理引擎、镜像模板、虚拟机配置模板、网络、存储、容器镜像仓库在步骤1中已有阐述,而服务类型则表示创建的Kubernetes集群所处的环境,服务类型包括vm、bm、container这三种配置。vm表示Kubernetes集群是创建在虚拟机的环境上,bm表示Kubernetes集群是创建在物理机环境上,container表示Kubernetes集群是创建在Kubernetes主集群中的容器中。
步骤4:在Kubernetes主集群的容器中创建新的Kubernetes集群。通过步骤2中的kubeconfig,即可连接到Kubernetes主集群。通过步骤3中创建出来的Kubernetes子集群模板可以创建出Kubernetes子集群,分为1个Master和3个Worker的主集群配置。四个节点均为虚拟机,Master节点运行API Server,Scheduler,Controller Manager,CloudController Manager,ETCD服务;
API Server:公开Kubernetes API。它是Kubernetes控制平面的入口点。
Scheduler:监视新创建的Pod,并选择要运行的节点,以管理资源分配。
Controller-manager:运行控制器,控制循环,监视集群的状态并将其移至所需状态。
ETCD:一致且高度可用的键值存储,用作所有集群数据的Kubernetes的后备存储。
Worker节点运行Kubelet和Kube-proxy服务
Kubelet:节点代理工具,确保Pod中的容器正常运行且状况良好的代理工具。这是节点和控制平面之间的链接。
Kube-proxy:在每个节点中运行的网络代理,通过维护网络规则和执行连接转发来启用Kubernetes服务抽象化。
在Kubernetes的命名空间内创建相应的Kubernetes子集群。所有子集群的主组件服务都运行在Kubernetes主集群里,通过该Kubernetes主集群的命名空间进行隔离,各个子集群间不会互相冲突。各个子集群的服务都是以Pod的形式运行在Kubernetes主集群中。因此Kubernetes子集群拥有弹性伸缩,服务可自动恢复。拥有隔离,多个子Kubernetes集群间互相不影响。节约成本,一个Kubernetes内可以创建成百上千个Kubernetes子集群。以及秒级快速搭建Kubernetes子集群。
以上内容总体简单概括如下:
本发明作为一种加快云上部署kubernetes集群的方法及系统,应用在云计算环境中。包括以下步骤:
1、云平台的系统管理员预先创建一个kubernetes集群,包含master节点的虚拟机和node节点的虚拟机。这个集群命名为MainCluster。
2、在MainCluster中master节点上运行着API-server,etcd,scheduler,controller-manager服务;node节点上运行着kubelet,kube-proxy服务。MainCluster的创建过程遵循惯常的创建流程,即分别创建多个虚拟机节点,首先在其中master节点中安装master节点所需的服务,再依次在node节点中安装node节点所需的服务。
3、云平台的普通用户提交创建kubernetes集群的请求,命名为NormalCluster。NormalCluster集群的创建过程可以简化。NormalCluster不需要创建master节点。Normalcluster的Api-server,etcd,scheduler,controller-manager服务由MainCluster统一调度启动在MainCluster的node节点上。
4、云平台启动若干个虚拟机作为NormalCluster的node节点。NormalCluster的kubelet、kube-proxy服务启动在node节点上。
5、MainCluster的node节点个数依据NormalCluster的规模和负载动态扩展。
具体实际实施例,如图2所示:
1、在一个openstack云平台环境中,系统管理员admin利用magnum服务在service租户下预先启动一个kubernetes集群,命名为MainCluster,其中包含1个master节点和3个node节点。
2、MainCluster的master节点包含etcd,API server,scheduler,controllermanager服务,node节点包含kubelet和kube-proxy服务。
3、普通用户提交创建kubernetes集群的需求,记为NormalCluster。NormalCluster无需创建master节点,按需创建Node节点即可。
4、如图中所示,NormalCluster所需的master节点对应服务,由MainCluster的Node节点创建并提供服务。MainCluster的Node节点创建容器,容器内运行NormalCluster所需的API Server,etcd,scheduler,Controller Manager服务。MainCluster的Node节点预先缓存了这些服务所需的容器镜像,省去了镜像下载所需的时间。同时,在这个过程中,master虚拟机的创建时间也可以省去了,因此这个方法减少了创建NormalCluster所需要的时间。
5、在这种部署系统中,普通用户创建第2个,第3个等多个NormalCluster的场景中,都无需创建Master节点,所有NormalCluster都无需创建master节点,master节点所需提供的服务都由MainCluster创建容器来提供,节省了云端的资源。
6、考虑到NormalCluster数量过多,MainCluster可能会面对的高负载问题,MainCluster可以根据负载来动态扩展节点的数量。即图中MainCluster的Node节点数量是可以根据NormalCluster的数量和负载来动态变化的。
以上所述,仅为本发明的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,可轻易想到各种等效的修改或替换,这些修改或替换都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应以权利要求的保护范围为准。

Claims (7)

1.一种基于OpenStack的Kubernetes集群搭建部署方法,其特征在于,该搭建部署方法包括以下步骤:
步骤1:于OpenStack租户服务的虚拟机中创建Kubernetes主集群;
步骤2:于Magnum中配置完成Kubeconfig文件;
步骤3:创建Kubernetes子集群模板;
步骤4:基于Kubernetes子集群模板创建Kubernetes子集群并通过Kubeconfig文件与Kubernetes主集群相连接,完成部署;
该部署方法采用的部署架构包括Kubernetes主集群和Kubernetes子集群,所述Kubernetes主集群包括1个Master虚拟机节点和3个Worker虚拟机节点,所述Master虚拟机节点通过设置于所述Master虚拟机节点中的API Server组件分别与所有的所述Worker虚拟机节点相连接,所有的所述Worker虚拟机节点通过设置于所述Worker虚拟机节点中的API Server组件与所述Kubernetes子集群相连接;
所述的Master虚拟机节点中还设有用于监视新创建的Pod,并选择要运行的节点,以管理资源分配的Scheduler组件、用于作为所有集群数据的Kubernetes的后备存储的ETCD组件、用于作为运行控制器以控制循环、监视集群的状态并将其移至所需状态的ControllerManager组件和用于作为云计算运行控制器的Cloud Controller Manager组件,所述Scheduler组件、所述ETCD组件、所述Controller Manager组件和所述Cloud ControllerManager组件均与设置于所述Master虚拟机节点中的API Server组件相连接;
所述的Worker虚拟机节点中还设有用于作为确保Pod中的容器正常运行且状况良好的代理工具的Kubelet组件、用于在每个节点中运行的网络代理,并通过维护网络规则和执行连接转发来启用Kubernetes服务抽象化的Kube-proxy组件和以POD形式存在的Scheduler组件、ETCD组件、Controller Manager组件以及Cloud Controller Manager组件。
2.根据权利要求1所述的一种基于OpenStack的Kubernetes集群搭建部署方法,其特征在于,所述的步骤1包括以下分步骤:
步骤101:OpenStack按照租户区分虚拟机所在项目与用户,使用admin租户于Magnum中创建虚拟机;
步骤102:于虚拟机中创建Kubernetes主集群模板,并通过Kubernetes主集群模板创建Kubernetes主集群。
3.根据权利要求2所述的一种基于OpenStack的Kubernetes集群搭建部署方法,其特征在于,所述的步骤102中的主集群模板包括容器管理引擎、镜像模板、虚拟机配置模板、网络、存储和容器镜像仓库。
4.根据权利要求1所述的一种基于OpenStack的Kubernetes集群搭建部署方法,其特征在于,所述的步骤2中的Kubeconfig文件包括Kubernetes主集群的证书和Kubernetes主集群的api地址。
5.根据权利要求1所述的一种基于OpenStack的Kubernetes集群搭建部署方法,其特征在于,所述的步骤3中的子集群模板包括容器管理引擎、镜像模板、虚拟机配置模板、网络、存储、容器镜像仓库以及服务类型。
6.根据权利要求5所述的一种基于OpenStack的Kubernetes集群搭建部署方法,其特征在于,所述的服务类型包括Kubernetes集群创建于虚拟机的环境、Kubernetes集群创建于物理机的环境和Kubernetes集群创建于Kubernetes主集群的容器。
7.一种计算机可读存储介质,所述计算机可读存储介质存储有计算机程序,其特征在于,所述计算机程序被处理器执行时实现如权利要求1至6中任一项所述的基于OpenStack的Kubernetes集群搭建部署方法的步骤。
CN202010341086.XA 2020-04-27 2020-04-27 一种基于OpenStack的Kubernetes集群搭建部署方法、架构及存储介质 Active CN111522628B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202010341086.XA CN111522628B (zh) 2020-04-27 2020-04-27 一种基于OpenStack的Kubernetes集群搭建部署方法、架构及存储介质

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202010341086.XA CN111522628B (zh) 2020-04-27 2020-04-27 一种基于OpenStack的Kubernetes集群搭建部署方法、架构及存储介质

Publications (2)

Publication Number Publication Date
CN111522628A CN111522628A (zh) 2020-08-11
CN111522628B true CN111522628B (zh) 2024-04-09

Family

ID=71902742

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202010341086.XA Active CN111522628B (zh) 2020-04-27 2020-04-27 一种基于OpenStack的Kubernetes集群搭建部署方法、架构及存储介质

Country Status (1)

Country Link
CN (1) CN111522628B (zh)

Families Citing this family (22)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN114157569A (zh) * 2020-08-17 2022-03-08 中国电信股份有限公司 集群系统及其构建方法和构建装置
CN112035216B (zh) * 2020-09-01 2023-02-21 浪潮云信息技术股份公司 一种Kubernetes集群网络和OpenStack网络的打通方法
CN112104723B (zh) * 2020-09-07 2024-03-15 腾讯科技(深圳)有限公司 一种多集群的数据处理系统及方法
CN112162819B (zh) * 2020-09-18 2023-12-22 北京浪潮数据技术有限公司 跨虚拟机和Kubernetes集群的应用部署方法
CN112202940B (zh) * 2020-10-27 2022-03-04 杭州朗澈科技有限公司 一种kubernetes对外暴露Pod服务方式
CN114443059A (zh) * 2020-10-30 2022-05-06 中国联合网络通信集团有限公司 Kubernetes集群的部署方法、装置及设备
CN112256405B (zh) * 2020-11-18 2022-07-29 浪潮云信息技术股份公司 一种paas平台服务管理方法及相关装置
CN114579250A (zh) * 2020-12-02 2022-06-03 腾讯科技(深圳)有限公司 一种构建虚拟集群的方法、装置及存储介质
CN112667362B (zh) * 2021-01-04 2022-06-21 烽火通信科技股份有限公司 Kubernetes上部署Kubernetes虚拟机集群的方法与系统
US11245748B1 (en) 2021-02-24 2022-02-08 International Business Machines Corporation Proxied nodes in a container orchestration environment for scalable resource allocation
CN112925609B (zh) * 2021-03-01 2022-03-15 浪潮云信息技术股份公司 OpenStack云平台升级方法及装置
US11693649B2 (en) 2021-04-06 2023-07-04 International Business Machines Corporation Autonomous Kubernetes operator creation and management
CN113220432B (zh) * 2021-05-08 2023-11-21 中国联合网络通信集团有限公司 多云互联方法、装置、设备、存储介质及产品
CN113254158B (zh) * 2021-06-11 2021-10-12 苏州浪潮智能科技有限公司 一种深度学习系统的部署方法和装置
CN113467794A (zh) * 2021-07-23 2021-10-01 烽火通信科技股份有限公司 Magnum自动部署Kubernetes和云原生应用的方法与电子设备
CN113852669B (zh) * 2021-09-03 2024-01-12 紫光云(南京)数字技术有限公司 一种适应多种网络环境的高效的容器集群部署方法
CN114338820A (zh) * 2021-12-31 2022-04-12 中国电信股份有限公司 网络访问方法、装置、电子设备及存储介质
CN114553874B (zh) * 2022-02-28 2023-04-18 北京理工大学 一种混合仿真云平台及自动化部署方法
CN114661312B (zh) * 2022-03-25 2023-06-09 安超云软件有限公司 一种OpenStack集群嵌套部署方法及系统
CN115834595A (zh) * 2022-11-17 2023-03-21 浪潮云信息技术股份公司 一种Kubernetes控制组件的管理方法及系统
CN115550321B (zh) * 2022-11-29 2023-03-21 联通(广东)产业互联网有限公司 一种分级解耦融合开放的通信开放系统
CN117573295B (zh) * 2024-01-16 2024-05-28 之江实验室 一种基于k8s的多集群组件管理方法、装置及计算机设备

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2018113443A1 (zh) * 2016-12-21 2018-06-28 北京大学 一种多用户环境下利用浏览器访问Linux容器集群的方法和装置
CN108809722A (zh) * 2018-06-13 2018-11-13 郑州云海信息技术有限公司 一种部署Kubernetes集群的方法、装置和存储介质
CN109656686A (zh) * 2018-12-17 2019-04-19 武汉烽火信息集成技术有限公司 OpenStack上部署容器云方法、存储介质、电子设备及系统

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2018113443A1 (zh) * 2016-12-21 2018-06-28 北京大学 一种多用户环境下利用浏览器访问Linux容器集群的方法和装置
CN108809722A (zh) * 2018-06-13 2018-11-13 郑州云海信息技术有限公司 一种部署Kubernetes集群的方法、装置和存储介质
CN109656686A (zh) * 2018-12-17 2019-04-19 武汉烽火信息集成技术有限公司 OpenStack上部署容器云方法、存储介质、电子设备及系统

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
杜磊 ; .基于OpenStack和Kubernetes的双向部署技术研究.电脑知识与技术.2020,(01),全文. *

Also Published As

Publication number Publication date
CN111522628A (zh) 2020-08-11

Similar Documents

Publication Publication Date Title
CN111522628B (zh) 一种基于OpenStack的Kubernetes集群搭建部署方法、架构及存储介质
CN108924217B (zh) 一种分布式云系统自动化部署方法
CN112099918B (zh) 容器化环境中的集群的实时迁移
US11520639B2 (en) Method for allocating and managing cluster resource on cloud platform
CN111290834B (zh) 一种基于云管理平台实现业务高可用的方法、装置及设备
CN111989681A (zh) 自动部署的信息技术(it)系统和方法
CN112667362B (zh) Kubernetes上部署Kubernetes虚拟机集群的方法与系统
US20190082004A1 (en) Systems and methods for instantiating services on top of services
CN107220100A (zh) 一种开发运维方法、装置及云计算PaaS平台
CN107741852B (zh) 一种基于集群软件的服务部署方法
CN103491144A (zh) 一种广域网虚拟平台的构建方法
CN102571905A (zh) 为在线服务管理网络和机器
CN107995043B (zh) 基于混合云平台的应用灾备系统
CN109240716B (zh) 一种大数据平台版本管理与快速迭代部署方法及系统
US20190370023A1 (en) Distributed job manager for stateful microservices
CN106201527A (zh) 一种基于逻辑分区的应用程序容器架构
US20220385532A1 (en) Adding host systems to existing containerized clusters
CN115604120A (zh) 一种多云集群资源共享方法、装置、设备及存储介质
CN112667711B (zh) 一种MySQL只读实例管理方法、系统及计算机可读介质
US20230412671A1 (en) Distributed cloud system, data processing method of distributed cloud system, and storage medium
CN114615268B (zh) 基于Kubernetes集群的服务网络、监控节点、容器节点及设备
Khalel et al. Enhanced load balancing in kubernetes cluster by minikube
CN115037757B (zh) 一种多集群服务管理系统
CN116028463A (zh) 搭建存储与计算分离的大数据平台的方法
CN115934251A (zh) 一种实现云原生nfs高可用的方法及系统

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