在公共云中为用户部署k8s托管集群的方法、设备和介质与流程

文档序号:30057981发布日期:2022-05-17 19:43阅读:179来源:国知局
在公共云中为用户部署k8s托管集群的方法、设备和介质与流程

1.本公开总体上涉及容器编排工具k8s技术领域,更具体地涉及在 公共云中为用户部署k8s托管集群的方法、设备和介质。


背景技术:

2.k8s是kubernetes的简称。kubernetes是google开源的一个容器 编排引擎,是目前使用最为广泛的容器编排工具,解决了应用容器化 后大规模部署的问题。在kubernetes中,可以创建多个容器,每个容 器里面运行一个应用实例,然后通过内置的负载均衡策略,实现对这 一组应用实例的管理、发现、访问,而这些细节都不需要运维人员去 进行复杂的手工配置和处理。
3.kubernetes的组件分为两类:master组件与node组件。master组 件中包括etcd、kube-apiserver、kube-scheduler、kube-controller
-ꢀ
manager。node组件包括kubelet和kube-proxy。master组件中,etcd 是一个key-value数据库,k8s的数据都存储在etcd中;kube-apiserver 是一个http服务端,暴露restapi给外部用户及node节点;kube
-ꢀ
scheduler是一个调度器,它会通过kube-apiserver的api一直监听集 群中的pod(容器),然后将其调度到某个node节点上。kube-controller
-ꢀ
manager也会一直监听kube-apiserver的api,执行一些循环任务。
4.在传统的k8s集群部署架构中,部署一个高可用的k8s集群,至 少需要三个节点,每个节点上都要部署master组件,与node组件共 用主机。
5.在公有云的模式下,通常会遇到这样的场景:用户的应用规模很 小,通常一台或两台主机就能满足需求。此时,如果要搭建一个传统 的k8s集群,那么用户至少需要购买三台主机,成本较高。所以,托 管集群的模式,非常适合小用户。
6.托管集群的实现方式有很多种:最简单的方法,就是选三台主机, 当有一个用户开通一个托管集群时,选择工作节点的配置与数量。对 于本示例,就是在这三台主机上部署一套高可用的k8s的master组件 (一台主机上可以部署多套master)。但是,这种方式缺乏横向扩展的 能力,它们最多可能只能部署n个集群的master。所以,以物理的方 式把托管集群的master直接跑在主机上不可行。
7.因此,现有技术中需要能够在公有云中为具有任意数量的主机的 用户部署可伸缩的k8s托管集群的技术。


技术实现要素:

8.在下文中给出了关于本公开的简要概述,以便提供关于本公开的 一些方面的基本理解。但是,应当理解,这个概述并不是关于本公开 的穷举性概述。它并不是意图用来确定本公开的关键性部分或重要部 分,也不是意图用来限定本公开的范围。其目的仅仅是以简化的形式 给出关于本公开的某些概念,以此作为稍后给出的更详细描述的前序。
9.根据本公开的一个方面,提供一种在公共云中为用户部署k8s托 管集群的方法,
其中所述用户具有至少一个主机并且所述至少一个主 机构成所述k8s托管集群,所述方法包括:在公共云中创建k8s管理 集群;以及容器化所述k8s托管集群的master组件以形成master容 器;在所述k8s管理集群中部署所述master容器,其中包括:在所述 k8s管理集群中为所述k8s托管集群创建编排文件;以及由所述k8s管 理集群中的控制器使用所述编排文件在所述k8s管理集群中为master 容器的每个子组件创建对应数量的容器以形成高可用的k8s托管集群。
10.根据本公开的另一个方面,提供一种公共云中的服务器,包括: 存储器,其上存储有指令;以及处理器,被配置为执行存储在所述存 储器上的指令,以执行根据本公开的上述方面所述的方法。
11.根据本公开的又一个方面,提供一种计算机可读存储介质,其包 括计算机可执行指令,所述计算机可执行指令在由一个或多个处理器 执行时,使得所述一个或多个处理器执行根据本公开的上述方面所述 的方法。
附图说明
12.构成说明书的一部分的附图描述了本公开的实施例,并且连同说 明书一起用于解释本公开的原理。
13.参照附图,根据下面的详细描述,可以更清楚地理解本公开,其 中:
14.图1示出了根据本公开一个实施例的在公共云中为用户部署k8s 托管集群的处理的流程图;
15.图2示出了根据本公开一个实施例的托管集群的部署架构的示意 图;
16.图3示出了根据本公开一个实施例的托管集群master的编排文件 及部署工具的示意图;
17.图4示出了可以实现根据本公开一个实施例的在公共云中为用户 部署k8s托管集群的网络侧服务器的示例性配置。
具体实施方式
18.参考附图进行以下详细描述,并且提供以下详细描述以帮助全面 理解本公开的各种示例实施例。以下描述包括各种细节以帮助理解, 但是这些细节仅被认为是示例,而不是为了限制本公开,本公开是由 随附权利要求及其等同内容限定的。在以下描述中使用的词语和短语 仅用于能够清楚一致地理解本公开。另外,为了清楚和简洁起见,可 能省略了对公知的结构、功能和配置的描述。本领域普通技术人员将 认识到,在不脱离本公开的精神和范围的情况下,可以对本文描述的 示例进行各种改变和修改。
19.本发明人认识到在现有技术中把托管集群的master直接运行于主 机上之上是不可行的。因此,本发明人提出了一种将托管集群的master 运行在一个k8s管理集群中,使托管集群的master容器相当于是管理 集群中一个普通容器运行。
20.图1示出了根据本公开一个实施例的在公共云中为用户部署k8s 托管集群的处理100的流程图。用户可以具有至少一个主机并且请求 开通一个k8s托管集群。用户可以在开通时选择主机的配置和数量。 用户的至少一个主机构成所述k8s托管集群。
21.在步骤101处,本处理开始。在该步骤处,在公共云中创建k8s管 理集群。
22.在步骤102处,容器化所述k8s托管集群的master组件以形成 master容器。
23.在步骤103处,在所述k8s管理集群中部署所述master容器。该 部署可以通过以下操作来实现:在所述k8s管理集群中为所述k8s托 管集群创建编排文件;以及由所述k8s管理集群中的控制器使用所述 编排文件在所述k8s管理集群中为master容器的每个子组件创建对应 数量的容器以形成高可用的k8s托管集群。
24.值得注意的是,这个编排文件时原生k8s可以解析的。当所述用 户具有一个或2个主机时,所述编排文件指定为master容器的etcd、 kube-apiserver、kube-controller-manager、kube-scheduler子组件分别创 建3个容器、2个容器、2个容器、2个容器。
25.本处理100还可以包括:所述k8s管理集群中的所述控制器根据 所述编排文件顺序地启动etcd子组件的3个容器中的每个容器。
26.本处理100还可以包括:所述控制器监听编排文件;以及响应于 监听到所述编排文件,所述控制器在所述k8s管理集群中部署所述 master容器。
27.本处理100还可以包括:修改所述编排文件以适配所述用户的主 机数量的改变。
28.如以上所述的那样,公有云中的用户可能只有一个或两个主机。 在此情况下,使用现有技术是不能为用户提供高可用的k8s托管集群 的。本过程解决该问题。当用户只有一个或两个主机时,在k8s管理 集群中为该用户创建的k8s托管集群的master组件的etcd子组件创建3个容器以满足高可用集群的要求。
29.图2示出了根据本公开一个实施例的托管集群的部署架构的示意 图。
30.如图2所示,在公共云中创建k8s管理集群以运行各个托管集群 的master组件容器。例如,图2中示出了分别属于两个用户的两个托 管集群6443和6444。这两个托管集群的master组件被容器化为master 容器在k8s管理集群中运行。虽然每个用户只有两个节点,但是在 master容器中为etcd子组件创建3个容器以满足高可用的托管集群的 要求。值得注意的是,master组件的其他子组件kube-apiserver、kube
-ꢀ
controller-manager、kube-scheduler可以只为其创建2个容器。这些是 通过编排文件来实现的,并且使用控制器来监听编排文件。这在下面 进一步描述。
31.图2示出了托管集群的部署架构。图2中除etcd外,其他都是无 状态服务,以普通的deployment工作负载部署即可。etcd是有状态服 务,在这里,可以使用开源的etcd-operator容器化方案。而etcd的数 据,可以使用分布式存储或者本地存储。在这种部署架构下,master的 任何一个容器实例挂掉,都可以在秒级内进行恢复。另外,当托管集 群的规模变大即master容器变多时,只需要对管理集群的节点进行横 向扩展,便可以完美地解决。
32.kubeadm工具它只适合将集群的master部署到主机上,当根据本 发明需要把master容器化运行在k8s集群中时,master的部署就得另 找方法。为此,本发明基于k8s的crd(custom resource definition, 自定义资源定义)机制,设计了一个用来表示托管集群master的编排 文件,然后开发一个对应的控制器,监听这种编排文件,然后由控制 器在管理集群中来部署托管集群的master。
33.图3示出了根据本公开一个实施例的托管集群master的编排文件 及部署工具的示意图。如图3所示,k8s管理集群中已经形成了两个编 排文件cr。控制器operator不断监听cr(custom resource,自定义 资源)的出现或改变。响应于监听到cr的出现或改变,
operator为master组件创建各个容器。
34.以下详细描述编排文件与operator的工作机制。k8s的master组 件有etcd、kube-apiserver、kube-controller-manager、kube-scheduler; etcd至少三个容器组成一个etcd集群才能保证高可用,其他的需要两 个容器保证高可用。这个编排文件,原生的k8s是无法解析的,但是 operator能识别这个编排文件,并且会根据它,在集群中为每个组件 创建对应数量的容器。其中etcd组件的三个容器,不是独立工作的, 它们需要组成一个etcd集群。operator会控制每个etcd容器的启动顺 序,当第一个起来后,etcd集群只有一个实例;operator继续启动第二 个,并且把第二个容器加入到第一个etcd容器的集群中,这样就组成 了一个两个实例的etcd集群;如此往复直到加入所有etcd容器组成一 个三容器的etcd集群。
35.如果用户由于自身需要而增加了或减少了使用的主机,则可以通 过修改编排文件来进行调整。控制器operator监听到编排文件的改变, 可以创建或删除对应的子组件容器。因此,本发明为用户实现了高可 用的可伸缩的k8s托管集群。
36.例如,可以通过以下步骤来实现本发明的一个示例性实施例:(最 好对以下操作给出一些更详细的描述)
37.1、托管集群适用于公有云场景。用户在公有云上,选择开通一个 k8s托管集群,并选择工作节点的配置与数量。
38.2、公有云前端接收到请求后,先发送一个请求给k8s管理集群, 在k8s管理集群中创建一个cr(custom resource)对象。
39.3、管理集群中的operator监听到有cr对象生成后,便创建原生 k8s所能理解的编排文件。管理集群中的kube-controller-manager组件 根据这些编排文件创建托管集群的kube-apiserver、kube-controller
-ꢀ
manager、kube-scheduler等master容器。operator同时还需要按照顺 序创建指定数量的etcd容器,直到它们组成一个etcd集群。
40.4、当托管集群的master容器都运行起来后,公有云的前端便会 继续发送请求iaas层,请求获得工作节点主机,接着在这些主机上安 装k8s的worker组件,并为worker配置master的地址为管理集群中 刚刚创建的容器的地址。这样,管理集群中运行的master容器加上 worker节点主机,就组成了一个完整的托管集群,并交付给用户。另 外,在上面运行的master组件,均是使用开源的容器镜像。除了 operator这个容器是需要按照上面所描述的逻辑来自主研发外。
41.相对现有技术而言,本发明具有如下优点和效果中的至少一个。 首先,相对于传统的k8s集群部署模式而言,本发明可以降低小用户 的资源成本,同时还能保证托管集群的高可用。其次,相对于master 集中部署在三台主机的方式而言,具体更好的横向扩展性以及高可用 性。
42.图4示出了可以实现根据本公开一个实施例的在公共云中为用户 部署k8s托管集群的网络侧服务器1200的示例性配置。
43.计算设备1200是能够应用本公开的上述方面的硬件设备的实例。 计算设备1200可以是被配置为执行处理和/或计算的任何机器。计算 设备1200可以是但不限制于工作站、服务器、台式计算机、膝上型计 算机、平板计算机、个人数据助手(pda)、智能电话、车载计算机或 以上组合。
44.如图4所示,计算设备1200可以包括可以经由一个或多个接口与 总线1202连接或通信的一个或多个元件。总线2102可以包括但不限 于,工业标准架构(industry standard architecture,isa)总线、微通 道架构(micro channel architecture,mca)总线、增强isa(eisa) 总线、视频电子标准协会(vesa)局部总线、以及外设组件互连(pci)总 线等。计算设备1200可以包括例如一个或多个处理器1204、一个或 多个输入设备1206以及一个或多个输出设备1208。一个或多个处理 器1204可以是任何种类的处理器,并且可以包括但不限于一个或多个 通用处理器或专用处理器(诸如专用处理芯片)。处理器1202例如可 以被配置为实现在公共云中为用户部署k8s托管集群的处理。输入设 备1206可以是能够向计算设备输入信息的任何类型的输入设备,并且 可以包括但不限于鼠标、键盘、触摸屏、麦克风和/或远程控制器。输 出设备1208可以是能够呈现信息的任何类型的设备,并且可以包括但 不限于显示器、扬声器、视频/音频输出终端、振动器和/或打印机。
45.计算设备1200还可以包括或被连接至非暂态存储设备1214,该 非暂态存储设备1214可以是任何非暂态的并且可以实现数据存储的 存储设备,并且可以包括但不限于盘驱动器、光存储设备、固态存储 器、软盘、柔性盘、硬盘、磁带或任何其他磁性介质、压缩盘或任何其 他光学介质、缓存存储器和/或任何其他存储芯片或模块、和/或计算机 可以从其中读取数据、指令和/或代码的其他任何介质。计算设备1200 还可以包括随机存取存储器(ram)1210和只读存储器(rom)1212。 rom 1212可以以非易失性方式存储待执行的程序、实用程序或进程。 ram 1210可提供易失性数据存储,并存储与计算设备1200的操作相 关的指令。计算设备1200还可包括耦接至数据链路1218的网络/总线 接口1216。网络/总线接口1216可以是能够启用与外部装置和/或网络 通信的任何种类的设备或系统,并且可以包括但不限于调制解调器、 网络卡、红外线通信设备、无线通信设备和/或芯片集(诸如,蓝牙
tm
设备、802.11设备、wifi设备、wimax设备、蜂窝通信设施等)。
46.本公开可以被实现为装置、系统、集成电路和非瞬时性计算机可 读介质上的计算机程序的任何组合。可以将一个或多个处理器实现为 执行本公开中描述的部分或全部功能的集成电路(ic)、专用集成电路 (asic)或大规模集成电路(lsi)、系统lsi,超级lsi或超lsi组 件。
47.本公开包括软件、应用程序、计算机程序或算法的使用。可以将 软件、应用程序、计算机程序或算法存储在非瞬时性计算机可读介质 上,以使诸如一个或多个处理器的计算机执行上述步骤和附图中描述 的步骤。例如,一个或多个存储器以可执行指令存储软件或算法,并 且一个或多个处理器可以关联执行该软件或算法的一组指令,以根据 本公开中描述的实施例提供各种功能。
48.软件和计算机程序(也可以称为程序、软件应用程序、应用程序、 组件或代码)包括用于可编程处理器的机器指令,并且可以以高级过 程性语言、面向对象编程语言、功能性编程语言、逻辑编程语言或汇 编语言或机器语言来实现。术语“计算机可读介质”是指用于向可编 程数据处理器提供机器指令或数据的任何计算机程序产品、装置或设 备,例如磁盘、光盘、固态存储设备、存储器和可编程逻辑设备(pld), 包括将机器指令作为计算机可读信号来接收的计算机可读介质。
49.举例来说,计算机可读介质可以包括动态随机存取存储器 (dram)、随机存取存储器(ram)、只读存储器(rom)、电可擦只 读存储器(eeprom)、紧凑盘只读存储器(cd-rom)或
其他光盘存 储设备、磁盘存储设备或其他磁性存储设备,或可以用于以指令或数 据结构的形式携带或存储所需的计算机可读程序代码以及能够被通用 或专用计算机或通用或专用处理器访问的任何其它介质。如本文中所 使用的,磁盘或盘包括紧凑盘(cd)、激光盘、光盘、数字多功能盘 (dvd)、软盘和蓝光盘,其中磁盘通常以磁性方式复制数据,而盘则 通过激光以光学方式复制数据。上述的组合也包括在计算机可读介质 的范围内。
50.类似地,虽然在附图中以特定次序描绘了操作,但是这不应该被 理解为要求以所示的特定次序或者以顺序次序执行这样的操作,或者 要求执行所有图示的操作以实现所希望的结果。在某些情况下,多任 务处理和并行处理可以是有利的。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1