CN114942845A - 跨集群资源调度方法及装置 - Google Patents
跨集群资源调度方法及装置 Download PDFInfo
- Publication number
- CN114942845A CN114942845A CN202210551837.XA CN202210551837A CN114942845A CN 114942845 A CN114942845 A CN 114942845A CN 202210551837 A CN202210551837 A CN 202210551837A CN 114942845 A CN114942845 A CN 114942845A
- Authority
- CN
- China
- Prior art keywords
- cluster
- pod
- information
- working
- scheduling
- 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
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5083—Techniques for rebalancing the load in a distributed system
Abstract
本发明提供一种跨集群资源调度方法及装置,包括:响应于用户发送的应用部署请求,获取应用部署请求对应的待创建pod的pod信息;向联邦集群的监控中心发送pod信息,以使监控中心根据pod信息返回最优调度策略;根据最优调度策略获取联邦集群中的各个工作集群对应的调度信息和待创建pod的节点绑定信息;保存待创建pod的pod信息和节点绑定信息至联邦集群对应的ectd中;向每个工作集群发送其对应的调度信息,以使每个工作集群根据自身对应的调度信息创建该工作集群对应的部署脚本,完成应用部署的过程。应用该方法,可以解决容器云多集群无法感知对方集群的资源余量和服务状态的问题,从而实现对多集群间资源的均衡利用。
Description
技术领域
本发明涉及互联网云原生技术领域,特别是涉及一种跨集群资源调度方法及装置。
背景技术
Kubernetes,简称k8s,是用于动态部署、编排和管理容器化应用的开源系统。云原生的发展使得k8s已经成为了大规模企业生产级的容器编排平台标准。随着企业日益增多的业务量,单个k8s集群的扩容已不能满足企业需求,企业往往需要同时部署多个集群,并且,由于企业同时使用多个云厂商的服务,并且基础资源层的资源调度类型多样,使得现如今多云、多集群部署架构已成为常态。
但是,现有技术中的部署的容器云多集群存在无法感知对方集群的资源余量和服务状态的问题,难以实现对多集群间资源的均衡利用。
发明内容
有鉴于此,本发明提供一种跨集群资源调度方法,通过该方法,可以解决容器云多集群无法感知对方集群的资源余量和服务状态的问题,从而实现对多集群间资源的均衡利用。
本发明还提供了一种跨集群资源调度装置,用以保证上述方法在实际中的实现及应用。
一种跨集群资源调度方法,应用于联邦集群中的任一控制集群,所述联邦集群由多个控制集群和多个工作集群组成,包括:
响应于用户发送的应用部署请求,获取所述应用部署请求对应的待创建pod的pod信息;
向所述联邦集群的监控中心发送所述pod信息,以使所述监控中心根据所述pod信息返回最优调度策略;
获取所述最优调度策略,并根据所述最优调度策略获取所述联邦集群中的各个所述工作集群对应的调度信息,以及所述待创建pod的节点绑定信息;
保存所述待创建pod的pod信息和所述节点绑定信息至所述联邦集群对应的数据存储组件ectd中;
向每个所述工作集群发送该工作集群对应的调度信息,以使每个所述工作集群根据该工作集群对应的调度信息创建该工作集群对应的部署脚本,完成应用部署的过程。
上述的方法,可选的,还包括:
响应于任意所述工作集群发送的pod调度请求,并获取所述pod调度请求对应的待调度pod的待调度pod信息;
向所述监控中心发送所述待调度pod信息,以使所述监控中心根据所述待调度pod信息返回最优重调策略;
获取所述最优重调策略,并根据所述最优重调策略在所述ectd中更新所述待调度pod的节点绑定信息;
根据所述最优重调策略,获取各个所述工作集群的重调度信息;
向每个所述工作集群发送该工作集群对应的重调度信息,以使每个所述工作集群根据该工作集群对应的重调度信息更新该工作集群对应的部署脚本,完成pod重调度过程。
上述的方法,可选的,所述保存所述待创建pod的pod信息和节点绑定信息至所述联邦集群对应的ectd中,包括:
判断所述控制集群的kubeconfig证书是否通过所述联邦集群的原生接口服务组件认证授权;
当所述控制集群的kubeconfig证书通过所述联邦集群的原生接口服务组件认证授权时,保存所述待创建pod的pod信息和节点绑定信息至所述联邦集群对应的ectd中;
当所述控制集群的kubeconfig证书未通过所述联邦集群的原生接口服务组件认证授权时,结束应用部署的过程。
一种跨集群资源调度方法,应用于联邦集群中的任一工作集群,所述联邦集群由多个控制集群和多个工作集群组成,包括:
通过所述工作集群的自研接口服务组件获取所述控制集群发送的调度信息;
当所述自研接口服务组件的kubeconfig证书通过所述工作集群的原生接口服务组件认证授权时,根据所述调度信息,调用所述原生接口服务组件的api接口创建部署脚本,以实现应用部署的过程。
一种跨集群资源调度方法,应用于联邦集群中的监控中心,所述联邦集群由各个集群组成,各个所述集群包括多个控制集群和多个工作集群,并且所述联邦集群设置有所述监控中心,包括:
获取所述控制集群发送的pod信息;
获取每个所述集群中的各个节点的metric指标,并根据各个所述metric指标计算各个所述集群的当前资源余量;
根据所述pod信息以及各个所述集群的当前资源余量,运用预设的调度算法计算得到最优调度策略;
向所述控制集群发送所述最优调度策略,以使所述控制集群根据所述最优调度策略向各个所述工作集群发送每个所述工作集群对应的调度信息。
一种跨集群资源调度装置,所述装置应用于联邦集群中的任一控制集群,所述联邦集群由多个控制集群和多个工作集群组成,包括:
第一获取单元,用于响应于用户发送的应用部署请求,获取所述应用部署请求对应的待创建pod的pod信息;
第一发送单元,用于向所述联邦集群的监控中心发送所述pod信息,以使所述监控中心根据所述pod信息返回最优调度策略;
第一执行单元,用于获取所述最优调度策略,并根据所述最优调度策略获取所述联邦集群中的各个所述工作集群对应的调度信息,以及所述待创建pod的节点绑定信息;
第二执行单元,用于保存所述待创建pod的pod信息和所述节点绑定信息至所述联邦集群对应的数据存储组件ectd中;
第二发送单元,用于向每个所述工作集群发送该工作集群对应的调度信息,以使每个所述工作集群根据该工作集群对应的调度信息创建该工作集群对应的部署脚本,完成应用部署的过程。
上述的装置,可选的,还包括:
第二获取单元,用于响应于任意所述工作集群发送的pod调度请求,并获取所述pod调度请求对应的待调度pod的待调度pod信息;
第三发送单元,用于向所述监控中心发送所述待调度pod信息,以使所述监控中心根据所述待调度pod信息返回最优重调策略;
第三执行单元,用于获取所述最优重调策略,并根据所述最优重调策略在所述ectd中更新所述待调度pod的节点绑定信息;
第三获取单元,用于根据所述最优重调策略,获取各个所述工作集群的重调度信息;
第四发送单元,用于向每个所述工作集群发送该工作集群对应的重调度信息,以使每个所述工作集群根据该工作集群对应的重调度信息更新该工作集群对应的部署脚本,完成pod重调度过程。
上述的装置,可选的,所述第二执行单元,包括:
判断子单元,用于判断所述控制集群的kubeconfig证书是否通过所述联邦集群的原生接口服务组件认证授权;
第一执行子单元,用于当所述控制集群的kubeconfig证书通过所述联邦集群的原生接口服务组件认证授权时,保存所述待创建pod的pod信息和节点绑定信息至所述联邦集群对应的ectd中;
第二执行子单元,用于当所述控制集群的kubeconfig证书未通过所述联邦集群的原生接口服务组件认证授权时,结束应用部署的过程。
一种跨集群资源调度装置,应用于联邦集群中的任一工作集群,所述联邦集群由多个控制集群和多个工作集群组成,包括:
第四获取单元,用于通过所述工作集群的自研接口服务组件获取所述控制集群发送的调度信息;
第四执行单元,用于当所述自研接口服务组件的kubeconfig证书通过所述工作集群的原生接口服务组件认证授权时,根据所述调度信息,调用所述原生接口服务组件的api接口创建部署脚本,以实现应用部署的过程。
一种跨集群资源调度装置,应用于联邦集群中的监控中心,所述联邦集群由各个集群组成,各个所述集群包括多个控制集群和多个工作集群,并且所述联邦集群设置有所述监控中心,所述装置包括:
第五获取单元,用于获取所述控制集群发送的pod信息;
第一计算单元,用于获取每个所述集群中的各个节点的metric指标,并根据各个所述metric指标计算各个所述集群的当前资源余量;
第二计算单元,用于根据所述pod信息以及各个所述集群的当前资源余量,运用预设的调度算法计算得到最优调度策略;
第五发送单元,用于向所述控制集群发送所述最优调度策略,以使所述控制集群根据所述最优调度策略向各个所述工作集群发送每个所述工作集群对应的调度信息。
一种存储介质,所述存储介质包括存储的指令,其中,在所述指令运行时控制所述存储介质所在的设备执行上述的跨集群资源调度方法。
一种电子设备,包括存储器,以及一个或者一个以上的指令,其中一个或者一个以上指令存储于存储器中,且经配置以由一个或者一个以上处理器执行上述的跨集群资源调度方法。
与现有技术相比,本发明包括以下优点:
基于本发明实施例提供的方法,在执行跨集群资源调度的过程中响应于用户发送的应用部署请求,获取应用部署请求对应的待创建pod的pod信息;向联邦集群的监控中心发送pod信息,以使监控中心根据pod信息返回最优调度策略;获取最优调度策略,并根据最优调度策略获取联邦集群中的各个工作集群对应的调度信息,以及待创建pod的节点绑定信息;保存待创建pod的pod信息和节点绑定信息至联邦集群对应的ectd中;向每个工作集群发送该工作集群对应的调度信息,以使每个工作集群根据该工作集群对应的调度信息创建该工作集群对应的部署脚本,完成应用部署的过程。
应用本发明提供的方法,在容器云多集群架构中,设置监控中心以根据预估资源总量和策略选择最优的集群和节点动态扩缩方案,并由控制集群向监控中心请求最优调度策略并根据最优调度策略向各个工作集群广播调度信息,解决容器云多集群无法感知对方集群的资源余量和服务状态的问题,从而实现对多集群间资源的均衡利用。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据提供的附图获得其他的附图。
图1为本发明实施例提供的一种跨集群资源调度方法的方法流程图;
图2为本发明实施例提供的一种跨集群资源调度方法的又一方法流程图;
图3为本发明实施例提供的一种跨集群资源调度方法的再一方法流程图;
图4为本发明实施例提供的一种跨集群资源调度装置的装置结构图;
图5为本发明实施例提供的一种电子设备结构示意图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
在本申请中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。
本发明可用于众多通用或专用的计算装置环境或配置中。例如:个人计算机、服务器计算机、手持设备或便携式设备、平板型设备、多处理器装置、包括以上任何装置或设备的分布式计算环境等等。
Kubernetes,又称k8s,Kubernetes的集群架构主要由Master(控制)节点和Worker(工作)节点两类节点组成,在k8s上部署应用的工作流程为:
当用户使用kubelet命令创建一个deployment部署请求,api-server作为统一认证入口将pod相关信息存储到etcd,后面过程其它组件直接和api-server交互。控制器监听到api-server的watch接口发现pod更新事件,执行该资源对象的依赖拓扑整合过程并回调给api-server更新etcd,正式进入pod调度过程。Kube-scheduler监听到api-server调度pod事件,通过默认的调度策略和算法绑定pod和节点,并回调给api-server更新etcd,正式托管给特定节点的kubelet执行任务操作。Kubelet调用容器网络接口(Container NetworkInterface,csi)创建容器网络,调用容器运行时接口(Container Runtime Interface,CRI)启动容器,调用容器存储接口(Container Storage Interface,csi)进行存储卷挂载,完成pod的创建,待业务进程完成启动后,pod运行成功。
其中,Kubelet是kubernetes工作节点上的一个代理组件,运行在每个节点上,用来处理控制节点下发到本节点的任务。pod是kubernetes在容器上的一层封装,由一组运行在同一主机的一个或者多个容器组成,是kubernetes中最基本的管理单位。etcd是kubernetes的数据存储组件。api-server是kubernetes中各个功能模块之间数据交互和通信的中心枢纽,为Kubernetes的各类资源对象提供了增、删、改、查以及watch的HTTP Rest接口。
本发明实施例提供了一种跨集群资源调度方法,该方法可以应用在多种系统平台,其执行主体可以为计算机终端或各种移动设备的处理器,具体应用于联邦集群中的任一控制集群,所述联邦集群由多个控制集群和多个工作集群组成,所述方法的方法流程图如图1所示,具体包括:
S101:响应于用户发送的应用部署请求,获取所述应用部署请求对应的待创建pod的pod信息。
本发明提供的实施例中,用户在控制集群发起kubelete部署应用请求时,由控制集群的自研接口服务组件mgtv-apiserver响应于用户发送的应用部署请求,监听到pod创建资源事件变化,获取到应用部署请求对应的待创建pod的pod信息。
S102:向所述联邦集群的监控中心发送所述pod信息,以使所述监控中心根据所述pod信息返回最优调度策略。
本发明提供的实施例中,控制集群的自研接口服务组件mgtv-apiserver根据待创建的pod的pod信息主动向监控中心请求最优调度策略,监控中心根据pod信息和各个集群的当前资源余量计算得到最优调度策略,并向控制集群返回最优调度策略。
S103:获取所述最优调度策略,并根据所述最优调度策略获取所述联邦集群中的各个所述工作集群对应的调度信息,以及所述待创建pod的节点绑定信息。
S104:保存所述待创建pod的pod信息和所述节点绑定信息至所述联邦集群对应的数据存储组件ectd中。
本发明提供的实施例中,控制集群的mgvt-apiserver在获取到监控中心回调的最优调度策略后,可以根据最优调度策略得到各个工作集群的调度信息,并获得待创建pod的节点绑定信息。
由控制集群的mgvt-apiserver将待创建pod的pod信息和节点绑定信息同步保存至etcd中,以便联邦集群管理后台查看当前的集群调度情况和历史记录。
S105:向每个所述工作集群发送该工作集群对应的调度信息,以使每个所述工作集群根据该工作集群对应的调度信息创建该工作集群对应的部署脚本,完成应用部署的过程。
本发明提供的实施例中,控制集群的mgtv-apiserver根据监控中心返回的最优调度策略,向各个工作集群mgtv-apiserver广播pod的创建指令和每个工作集群对应的调度信息。工作集群mgtv-apiserver组件监听到控制集群的创建应用部署请求时,根据控制中心传送的该工作集群的调度信息调用原生接口服务组件kube-apiserver的api接口创建相应的部署脚本,完成应用部署全过程。
基于本发明实施例提供的方法,在执行跨集群资源调度的过程中,响应于用户发送的应用部署请求,获取应用部署请求对应的待创建pod的pod信息;向联邦集群的监控中心发送pod信息,以使监控中心根据pod信息返回最优调度策略;获取最优调度策略,并根据最优调度策略获取联邦集群中的各个工作集群对应的调度信息,以及待创建pod的节点绑定信息;保存待创建pod的pod信息和节点绑定信息至联邦集群对应的ectd中;向每个工作集群发送该工作集群对应的调度信息,以使每个工作集群根据该工作集群对应的调度信息创建该工作集群对应的部署脚本,完成应用部署的过程。
应用本发明提供的实施例,在容器云多集群架构中,设置监控中心以根据预估资源总量和策略选择最优的集群和节点动态扩缩方案,并由控制集群向监控中心请求最优调度策略并根据最优调度策略向各个工作集群广播调度信息,解决容器云多集群无法感知对方集群的资源余量和服务状态的问题,从而实现对多集群间资源的均衡利用。
本发明提供的实施例中,可选的,应用运行时发生状态变更的跨集群资源调度过程,具体步骤包括:
响应于任意所述工作集群发送的pod调度请求,并获取所述pod调度请求对应的待调度pod的待调度pod信息;
本发明提供的实施例中,工作集群的自研接口服务组件mgtv-apiserver与控制集群而的自研接口服务组件mgtv-apiserver通过传输控制协议(TCP,Transmission ControlProtocol)保持长链接,当工作集群的mgtv-apiserver监听到pod生命周期发生变化或者触发动态弹性伸缩时,该工作集群的mgtv-apiserver会向控制集群的mgtv-apiserver发起pod调度请求。控制集群的mgtv-apiserver响应该pod调度请求,并获取pod调度请求对应的待调度pod的待调度pod信息。
向所述监控中心发送所述待调度pod信息,以使所述监控中心根据所述待调度pod信息返回最优重调策略;
获取所述最优重调策略,并根据所述最优重调策略在所述ectd中更新所述待调度pod的节点绑定信息;
本发明提供的实施例中,控制集群的mgtv-apiserver接收到pod调度请求后,根据pod调度请求对应的待调度pod信息,向监控中心询问最优重调策略,并根据监控中心返回的最优重调策略,同步向etcd更新当前待调度pod的pod信息和节点绑定信息。
根据所述最优重调策略,获取各个所述工作集群的重调度信息;
向每个所述工作集群发送该工作集群对应的重调度信息,以使每个所述工作集群根据该工作集群对应的重调度信息更新该工作集群对应的部署脚本,完成pod重调度过程。
根据最优重调策略,获取到各个工作集群需要执行的重调度信息,将各个工作集群对应的重调信息回调给每个所述工作集群的mgtv-apiserver。工作集群的mgtv-apiserver组件接收到其对应的调度信息后,执行调度信息对应的重新调度指令,调用原生接口服务组件kube-apiserver的api接口更新相应的部署脚本。
应用本发明提供的实施例,在应用运行过程中,根据应用中各个pod的运行状态及时进行弹性伸缩,能够有利于维护业务应用健康的生命状态。
本发明提供的实施例中,可选的,所述保存所述待创建pod的pod信息和节点绑定信息至所述联邦集群对应的ectd中,包括:
判断所述控制集群的kubeconfig证书是否通过所述联邦集群的原生接口服务组件认证授权;
当所述控制集群的kubeconfig证书通过所述联邦集群的原生接口服务组件认证授权时,保存所述待创建pod的pod信息和节点绑定信息至所述联邦集群对应的ectd中;
当所述控制集群的kubeconfig证书未通过所述联邦集群的原生接口服务组件认证授权时,结束应用部署的过程。
具体的,用户通过原生kubelet发布应用是用控制集群的kubeconfig证书和控制k8集群交互。不管是原生kubelet还是以调用k8s-api组件方式的自研mgtv-apiserver组件,若要同k8集群交互,需要通过kubeconfig证书向k8s的原生接口服务组件kube-apiserver认证授权才能交互。因此,要将创建pod的pod信息和节点绑定信息保存至联邦集群对应的ectd中,需要先验证所述控制集群的kubeconfig证书是否通过联邦集群的原生接口服务组件kube-apiserver的认证授权。
当控制集群的kubeconfig证书通过联邦集群的原生接口服务组件认证授权时,控制集群的自研接口服务组件可以与k8s集群交互,控制集群将待创建pod的pod信息和节点绑定信息保存至联邦集群对应的ectd中;如果控制集群的kubeconfig证书没有通过联邦集群的原生接口服务组件认证授权,则报错并终止结束应用部署的过程。
应用本发明提供的实施例,验证控制集群的kubeconfig证书是否通过联邦集群的原生接口服务组件认证授权,当通过时则将待创建pod的pod信息和节点绑定信息保存至联邦集群对应的ectd中,能够保证k8s集群同其他信息进行交互时的信息安全。
本发明还提供了一种跨集群资源调度方法,可选的,所述方法应用于联邦集群中的任一工作集群,所述联邦集群由多个控制集群和多个工作集群组成,包括:
通过所述工作集群的自研接口服务组件获取所述控制集群发送的调度信息;
当所述自研接口服务组件的kubeconfig证书通过所述工作集群的原生接口服务组件认证授权时,根据所述调度信息,调用所述原生接口服务组件的api接口创建部署脚本,以实现应用部署的过程。
具体的,工作集群的自研接口服务组件mgtv-apiserver和工作集群的原生接口服务组件kube-apiserver交互也是要通过工作集群的kubeconfig证书。当工作集群的自研接口服务组件mgtv-apiserver接收到控制集群发送的调度信息时,判断自研接口服务组件的kubeconfig证书是否通过该工作集群的原生接口服务组件认证授权,若通过,则根据控制集群传输过来的该工作集群的调度信息,调用所述工作集群的原生接口服务组件kube-apiserver的api接口创建部署脚本,以实现应用部署的过程。
应用本发明提供的实施例,验证工作集群的自研接口服务组件kubeconfig证书是否通过该工作集群的原生接口服务组件认证授权,当通过时,工作集群的原生接口服务组件接收自研接口服务组件传输过来的调度信息,再根据调度信息进行资源调用,能够保证k8s集群同其他信息进行交互时的信息安全。
如图2所示,本发明还提供了一种跨集群资源调度方法,可选的,所述方法应用于联邦集群中的监控中心,所述联邦集群由各个集群组成,各个所述集群包括多个控制集群和多个工作集群,并且所述联邦集群设置有所述监控中心,如图2所示,该方法包括:
S201:获取所述控制集群发送的pod信息。
S202:获取每个所述集群中的各个节点的metric指标,并根据各个所述metric指标计算各个所述集群的当前资源余量。
本发明提供的实施例中,建立联邦集群的统一监控中心,监控中心分两部分,其中开源promethus-server负责获取各个k8s集群的可观测性metric指标,自研调度中心服务负责接受控制集群的调度请求,并计算最优调度策略。联邦集群由多个集群组成,每个集群中有多个节点,每个节点运行一个pod,用于收集节点的metric指标并推送到监控中心。监控中心获取到各个节点的metric指标,并根据每个集群中的各个节点的metric指标,计算得到各个集群的当前资源余量。
S203:根据所述pod信息以及各个所述集群的当前资源余量,运用预设的调度算法计算得到最优调度策略。
S204:向所述控制集群发送所述最优调度策略,以使所述控制集群根据所述最优调度策略向各个所述工作集群发送每个所述工作集群对应的调度信息。
本发明提供的实施例中,监控中心根据待创建pod的pod信息和各个集群的当前资源余量结合自研调度算法快速计算得出最优调度策略;监控中心计算得到最优调度策略后,向所述控制集群发送所述最优调度策略,使得控制集群的自研接口服务组件mgtv-apiserver接收到最优调度策略后,根据最优调度策略,获取到各个工作集群的调度信息,并向各个工作集群发送每个工作集群对应的调度信息,使得工作集群的自研接口服务组件mgtv-apiserver接收到调度信息时,调用其原生接口服务组件kube-apiserver的api接口创建相应的部署脚本,完成应用部署过程。
应用本发明提供的实施例,联邦集群的监控中心根据各个集群的metric指标和需要部署的pod信息,得出最优调度策略。通过监控中心使得在联邦集群上部署应用时可以实时动态感知各个集群的资源余量,并在各个集群之间实现应用部署的最优策略,从而实现多集群架构的资源监控和策略计算。
可选的,本发明实施例中的联邦集群的构建方法,包括:
运用keepalive结合haproxy的组件将各个集群组成所述联邦集群,所述多个集群包括控制集群和工作集群;
设置各个所述集群对应的自研接口服务组件,以使每个所述集群通过其对应的自研接口服务组件实现该集群的职能;具体的联邦集群的构建过程为:
当每个所述工作集群的自研接口服务组件的kubeconfig证书通过该工作集群的原生接口服务组件的认证授权时,该工作集群的自研接口服务组件通过其对应的原生接口服务组件获取到该工作集群的运行信息,并根据所述控制集群对应的jwt(JSON WebToken)秘钥向该控制集群发送所述运行信息;所述控制集群接收到各个所述工作集群的运行信息,将各个所述运行信息保存到所述ectd中,完成所述联邦集群的构建。
本发明提供的实施例中,k8s集群的部署分控制集群和工作集群,为了保证业务和集群的高可用性和负载均衡,所有k8s集群采用keepalive结合haproxy的组件搭建高可用生产级集群。为了达到灾备能力,每个集群可准备2个VIP采用热备模式搭载负载均衡器,每个工作集群相对独立,只需要保证每个工作集群和控制集群网络互通即可。
其中,keepalive,是在TCP中一个可以检测死连接的机制。haproxy是一个使用C语言编写的自由及开放源代码软件,其提供高可用性、负载均衡,以及基于TCP和超文本传输协议(Hyper Text Transfer Protocol,HTTP)的应用程序代理。
自研每个集群专属的接口服务组件api-server,每个工作集群部署mgtv-apiserver组件,获取本地kubeconfig认证,根据控制集群提供的jwt密钥,定时上报本集群的健康状态并和控制集群保持长连接。集群间建立受信任证书机制,保证集群控制指令可达和集群安全。控制集群的接口服务组件mgtv-apiserver接收到工作集群的心跳包,自动注册并保存相应的信息到etcd,至此联邦集群建立完毕。
其中,控制集群可以与其他控制集群竞争选举成为master的资格,保证控制集群的高可用。控制集群主要负责监听应用部署时pod变更事件,向各工作集群广播调度策略,并接收应用运行时工作集群发起的重调度资源请求。同时控制集群还负责请求监控中心已计算完成的最优调度策略,控制集群一旦获取到应用变化状态的请求就会更新etcd的信息。控制集群实际覆盖了工作集群职能,是可以部署业务容器,考虑到生产业务容器和组件竞争资源,推荐生产环境中控制集群只部署核心组件。
工作集群主要负责监听控制集群下发的应用部署指令,并调用原生kube-apiserver根据调度信息执行部署指令。在业务容器全生命周期起到维护作用,负责监听和维护业务容器运行时健康状态。工作集群不需要和监控中心交互,只单纯执行控制集群下发的应用部署和重调度指令。
控制和工作集群的关系是多对多,其中集群角色和相应资源权限都会持久化到etcd。
需要说明的是,jwt密钥是基于JSON的开放安全标准定义的RSA公私密钥数字签名,用于工作集群和控制集群双方安全传递信息。
上述提及的本发明提供的一种联邦集群的构建方法,可选的,还包括:
每个所述集群通过CRD的机制部署promethus-operator并启动promethus部署实例,以使每个所述集群向所述监控中心推送该集群中所有节点的metric指标。
具体的,每个集群通过CRD(CustomResourceDefinition)的机制部署promethus-operator,在本地集群都会启动一个promethus部署实例,Deployment的部署方式让集群至少运行两个agentpod,收集本集群所有节点的metric指标并远程推送到监控中心。
其中,CRD机制是k8s v1.7+之后新增的管理自定义对象资源,可通过自定义的资源控制器统一管理operator资源的变更。
应用本发明提供的实施例,可以构建出高可用、高容灾的联邦集群,使得在所述联邦集群进行多集群的容器类应用部署时具有多重可靠性和高可用性。
如图3联邦集群调度交互图和工作流程图所示,其中,应用部署请求流程如图3中的步骤一到步骤六所示:
用户在控制集群发起kubelete部署应用请求时,控制集群的控制mgtv-apiserver,即自研接口服务组件监听到pod创建资源事件变化,根据待创建pod的pod信息主动向监控中心请求最优调度策略,同时根据最优调度策略将pod信息和待创建pod的节点绑定信息写入etcd。控制集群的控制mgtv-apiserver根据监控中心返回的最优调度策略,向各个工作集群工作mgtv-apiserver,即自研接口服务组件广播pod的创建指令和调度信息。工作集群工作mgtv-apiserver组件监听到控制集群的创建应用部署请求,调用原生kube-apiserver的api接口创建相应的部署脚本,至此完成了应用部署全过程。其中,步骤一和步骤六是通过kubeconfig证书向k8s的原生kube-apiserver进行认证授权,如果认证授权通过才能与k8s中的其他组件进行交互,如果鉴权不通过则报错终止后续流程。
应用运行时重调度流程如图3中的步骤七到步骤十所示:
工作集群的工作mgtv-apiserver与控制集群的控制mgtv-apiserver保持TCP长链接,当工作集群的工作mgtv-apiserver监听到pod生命周期发生变化或者触发动态弹性伸缩时,工作集群的工作mgtv-apiserver会向控制集群的控制mgtv-apiserver发起调度请求。控制mgtv-apiserver接收到请求后向监控中心询问最优重调策略,同步向etcd更新当前pod和节点绑定的信息,并将调度结果回调给工作集群的工作mgtv-apiserver。工作集群的工作mgtv-apiserver组件执行重新调度指令,调用原生kube-apiserver的api接口更新相应的部署脚本,完成集群资源的重调用全过程,维护业务应用健康的生命状态。
上述各个实施例的具体实施过程及其衍生方式,均在本发明的保护范围之内。
与图1所述的方法相对应,本发明实施例还提供了一种跨集群资源调度装置,用于对图1中方法的具体实现,本发明实施例提供的跨集群资源调度装置可以应用计算机终端或各种移动设备中,具体应用于联邦集群中的任一控制集群,所述联邦集群由多个控制集群和多个工作集群组成,其结构示意图如图4所示,具体包括:
第一获取单元401,用于响应于用户发送的应用部署请求,获取所述应用部署请求对应的待创建pod的pod信息;
第一发送单元402,用于向所述联邦集群的监控中心发送所述pod信息,以使所述监控中心根据所述pod信息返回最优调度策略;
第一执行单元403,用于获取所述最优调度策略,并根据所述最优调度策略获取所述联邦集群中的各个所述工作集群对应的调度信息,以及所述待创建pod的节点绑定信息;
第二执行单元404,用于保存所述待创建pod的pod信息和所述节点绑定信息至所述联邦集群对应的数据存储组件ectd中;
第二发送单元405,用于向每个所述工作集群发送该工作集群对应的调度信息,以使每个所述工作集群根据该工作集群对应的调度信息创建该工作集群对应的部署脚本,完成应用部署的过程。
本发明实施例提供的跨集群资源调度装置,第一获取单元响应于用户发送的应用部署请求,获取应用部署请求对应的待创建pod的pod信息;由第一发送单元向联邦集群的监控中心发送pod信息,以使监控中心根据pod信息返回最优调度策略;然后第一执行单元获取最优调度策略,并根据最优调度策略获取联邦集群中的各个工作集群对应的调度信息,以及待创建pod的节点绑定信息;接着第二执行单元保存待创建pod的pod信息和节点绑定信息至联邦集群对应的ectd中;最后由第二发送单元向每个工作集群发送该工作集群对应的调度信息,以使每个工作集群根据该工作集群对应的调度信息创建该工作集群对应的部署脚本,完成应用部署的过程。
应用本发明实施例提供的装置,在容器云多集群架构中,设置监控中心以根据预估资源总量和策略选择最优的集群和节点动态扩缩方案,并由控制集群向监控中心请求最优调度策略并根据最优调度策略向各个工作集群广播调度信息,解决容器云多集群无法感知对方集群的资源余量和服务状态的问题,从而实现对多集群间资源的均衡利用。
上述的装置,可选的,还包括:
第二获取单元,用于响应于任意所述工作集群发送的pod调度请求,并获取所述pod调度请求对应的待调度pod的待调度pod信息;
第三发送单元,用于向所述监控中心发送所述待调度pod信息,以使所述监控中心根据所述待调度pod信息返回最优重调策略;
第三执行单元,用于获取所述最优重调策略,并根据所述最优重调策略在所述ectd中更新所述待调度pod的节点绑定信息;
第三获取单元,用于根据所述最优重调策略,获取各个所述工作集群的重调度信息;
第四发送单元,用于向每个所述工作集群发送该工作集群对应的重调度信息,以使每个所述工作集群根据该工作集群对应的重调度信息更新该工作集群对应的部署脚本,完成pod重调度过程。
上述的装置,可选的,所述第二执行单元,包括:
判断子单元,用于判断所述控制集群的kubeconfig证书是否通过所述联邦集群的原生接口服务组件认证授权;
第一执行子单元,用于当所述控制集群的kubeconfig证书通过所述联邦集群的原生接口服务组件认证授权时,保存所述待创建pod的pod信息和节点绑定信息至所述联邦集群对应的ectd中;
第二执行子单元,用于当所述控制集群的kubeconfig证书未通过所述联邦集群的原生接口服务组件认证授权时,结束应用部署的过程。
本发明实施例还提供了一种跨集群资源调度装置,应用于联邦集群中的任一工作集群,所述联邦集群由多个控制集群和多个工作集群组成,包括:
第四获取单元,用于通过所述工作集群的自研接口服务组件获取所述控制集群发送的调度信息;
第四执行单元,用于当所述自研接口服务组件的kubeconfig证书通过所述工作集群的原生接口服务组件认证授权时,根据所述调度信息,调用所述原生接口服务组件的api接口创建部署脚本,以实现应用部署的过程。
本发明实施例还提供了一种跨集群资源调度装置,应用于联邦集群中的监控中心,所述联邦集群由各个集群组成,各个所述集群包括多个控制集群和多个工作集群,并且所述联邦集群设置有所述监控中心,所述装置包括:
第五获取单元,用于获取所述控制集群发送的pod信息;
第一计算单元,用于获取每个所述集群中的各个节点的metric指标,并根据各个所述metric指标计算各个所述集群的当前资源余量;
第二计算单元,用于根据所述pod信息以及各个所述集群的当前资源余量,运用预设的调度算法计算得到最优调度策略;
第五发送单元,用于向所述控制集群发送所述最优调度策略,以使所述控制集群根据所述最优调度策略向各个所述工作集群发送每个所述工作集群对应的调度信息。
以上本发明实施例公开的跨集群资源调度装置中各个单元及子单元的具体工作过程,可参见本发明上述实施例公开的跨集群资源调度方法中的对应内容,这里不再进行赘述。
本发明实施例还提供了一种存储介质,所述存储介质包括存储的指令,其中,在所述指令运行时控制所述存储介质所在的设备执行上述跨集群资源调度方法。
本发明实施例还提供了一种电子设备,其结构示意图如图5所示,具体包括存储器501,以及一个或者一个以上的指令502,其中一个或者一个以上指令502存储于存储器501中,且经配置以由一个或者一个以上处理器503执行所述一个或者一个以上指令502进行以下操作:
响应于用户发送的应用部署请求,获取所述应用部署请求对应的待创建pod的pod信息;
向所述联邦集群的监控中心发送所述pod信息,以使所述监控中心根据所述pod信息返回最优调度策略;
获取所述最优调度策略,并根据所述最优调度策略获取所述联邦集群中的各个所述工作集群对应的调度信息,以及所述待创建pod的节点绑定信息;
保存所述待创建pod的pod信息和所述节点绑定信息至所述联邦集群对应的数据存储组件ectd中;
向每个所述工作集群发送该工作集群对应的调度信息,以使每个所述工作集群根据该工作集群对应的调度信息创建该工作集群对应的部署脚本,完成应用部署的过程。
本说明书中的各个实施例均采用递进的方式描述,各个实施例之间相同相似的部分互相参见即可,每个实施例重点说明的都是与其他实施例的不同之处。尤其,对于系统或系统实施例而言,由于其基本相似于方法实施例,所以描述得比较简单,相关之处参见方法实施例的部分说明即可。以上所描述的系统及系统实施例仅仅是示意性的,其中所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部模块来实现本实施例方案的目的。本领域普通技术人员在不付出创造性劳动的情况下,即可以理解并实施。
专业人员还可以进一步意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、计算机软件或者二者的结合来实现。
为了清楚地说明硬件和软件的可互换性,在上述说明中已经按照功能一般性地描述了各示例的组成及步骤。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本发明的范围。
对所公开的实施例的上述说明,使本领域专业技术人员能够实现或使用本发明。对这些实施例的多种修改对本领域的专业技术人员来说将是显而易见的,本文中所定义的一般原理可以在不脱离本发明的精神或范围的情况下,在其它实施例中实现。因此,本发明将不会被限制于本文所示的这些实施例,而是要符合与本文所公开的原理和新颖特点相一致的最宽的范围。
Claims (10)
1.一种跨集群资源调度方法,其特征在于,应用于联邦集群中的任一控制集群,所述联邦集群由多个控制集群和多个工作集群组成,包括:
响应于用户发送的应用部署请求,获取所述应用部署请求对应的待创建pod的pod信息;
向所述联邦集群的监控中心发送所述pod信息,以使所述监控中心根据所述pod信息返回最优调度策略;
获取所述最优调度策略,并根据所述最优调度策略获取所述联邦集群中的各个所述工作集群对应的调度信息,以及所述待创建pod的节点绑定信息;
保存所述待创建pod的pod信息和所述节点绑定信息至所述联邦集群对应的数据存储组件ectd中;
向每个所述工作集群发送该工作集群对应的调度信息,以使每个所述工作集群根据该工作集群对应的调度信息创建该工作集群对应的部署脚本,完成应用部署的过程。
2.根据权利要求1所述的方法,其特征在于,还包括:
响应于任意所述工作集群发送的pod调度请求,并获取所述pod调度请求对应的待调度pod的待调度pod信息;
向所述监控中心发送所述待调度pod信息,以使所述监控中心根据所述待调度pod信息返回最优重调策略;
获取所述最优重调策略,并根据所述最优重调策略在所述ectd中更新所述待调度pod的节点绑定信息;
根据所述最优重调策略,获取各个所述工作集群的重调度信息;
向每个所述工作集群发送该工作集群对应的重调度信息,以使每个所述工作集群根据该工作集群对应的重调度信息更新该工作集群对应的部署脚本,完成pod重调度过程。
3.根据权利要求1所述的方法,其特征在于,所述保存所述待创建pod的pod信息和节点绑定信息至所述联邦集群对应的ectd中,包括:
判断所述控制集群的kubeconfig证书是否通过所述联邦集群的原生接口服务组件认证授权;
当所述控制集群的kubeconfig证书通过所述联邦集群的原生接口服务组件认证授权时,保存所述待创建pod的pod信息和节点绑定信息至所述联邦集群对应的ectd中;
当所述控制集群的kubeconfig证书未通过所述联邦集群的原生接口服务组件认证授权时,结束应用部署的过程。
4.一种跨集群资源调度方法,其特征在于,应用于联邦集群中的任一工作集群,所述联邦集群由多个控制集群和多个工作集群组成,包括:
通过所述工作集群的自研接口服务组件获取所述控制集群发送的调度信息;
当所述自研接口服务组件的kubeconfig证书通过所述工作集群的原生接口服务组件认证授权时,根据所述调度信息,调用所述原生接口服务组件的api接口创建部署脚本,以实现应用部署的过程。
5.一种跨集群资源调度方法,其特征在于,应用于联邦集群中的监控中心,所述联邦集群由各个集群组成,各个所述集群包括多个控制集群和多个工作集群,并且所述联邦集群设置有所述监控中心,包括:
获取所述控制集群发送的pod信息;
获取每个所述集群中的各个节点的metric指标,并根据各个所述metric指标计算各个所述集群的当前资源余量;
根据所述pod信息以及各个所述集群的当前资源余量,运用预设的调度算法计算得到最优调度策略;
向所述控制集群发送所述最优调度策略,以使所述控制集群根据所述最优调度策略向各个所述工作集群发送每个所述工作集群对应的调度信息。
6.一种跨集群资源调度装置,其特征在于,所述装置应用于联邦集群中的任一控制集群,所述联邦集群由多个控制集群和多个工作集群组成,包括:
第一获取单元,用于响应于用户发送的应用部署请求,获取所述应用部署请求对应的待创建pod的pod信息;
第一发送单元,用于向所述联邦集群的监控中心发送所述pod信息,以使所述监控中心根据所述pod信息返回最优调度策略;
第一执行单元,用于获取所述最优调度策略,并根据所述最优调度策略获取所述联邦集群中的各个所述工作集群对应的调度信息,以及所述待创建pod的节点绑定信息;
第二执行单元,用于保存所述待创建pod的pod信息和所述节点绑定信息至所述联邦集群对应的数据存储组件ectd中;
第二发送单元,用于向每个所述工作集群发送该工作集群对应的调度信息,以使每个所述工作集群根据该工作集群对应的调度信息创建该工作集群对应的部署脚本,完成应用部署的过程。
7.根据权利要求6所述的装置,其特征在于,还包括:
第二获取单元,用于响应于任意所述工作集群发送的pod调度请求,并获取所述pod调度请求对应的待调度pod的待调度pod信息;
第三发送单元,用于向所述监控中心发送所述待调度pod信息,以使所述监控中心根据所述待调度pod信息返回最优重调策略;
第三执行单元,用于获取所述最优重调策略,并根据所述最优重调策略在所述ectd中更新所述待调度pod的节点绑定信息;
第三获取单元,用于根据所述最优重调策略,获取各个所述工作集群的重调度信息;
第四发送单元,用于向每个所述工作集群发送该工作集群对应的重调度信息,以使每个所述工作集群根据该工作集群对应的重调度信息更新该工作集群对应的部署脚本,完成pod重调度过程。
8.根据权利要求6所述的装置,其特征在于,所述第二执行单元,包括:
判断子单元,用于判断所述控制集群的kubeconfig证书是否通过所述联邦集群的原生接口服务组件认证授权;
第一执行子单元,用于当所述控制集群的kubeconfig证书通过所述联邦集群的原生接口服务组件认证授权时,保存所述待创建pod的pod信息和节点绑定信息至所述联邦集群对应的ectd中;
第二执行子单元,用于当所述控制集群的kubeconfig证书未通过所述联邦集群的原生接口服务组件认证授权时,结束应用部署的过程。
9.一种跨集群资源调度装置,其特征在于,应用于联邦集群中的任一工作集群,所述联邦集群由多个控制集群和多个工作集群组成,包括:
第四获取单元,用于通过所述工作集群的自研接口服务组件获取所述控制集群发送的调度信息;
第四执行单元,用于当所述自研接口服务组件的kubeconfig证书通过所述工作集群的原生接口服务组件认证授权时,根据所述调度信息,调用所述原生接口服务组件的api接口创建部署脚本,以实现应用部署的过程。
10.一种跨集群资源调度装置,其特征在于,应用于联邦集群中的监控中心,所述联邦集群由各个集群组成,各个所述集群包括多个控制集群和多个工作集群,并且所述联邦集群设置有所述监控中心,所述装置包括:
第五获取单元,用于获取所述控制集群发送的pod信息;
第一计算单元,用于获取每个所述集群中的各个节点的metric指标,并根据各个所述metric指标计算各个所述集群的当前资源余量;
第二计算单元,用于根据所述pod信息以及各个所述集群的当前资源余量,运用预设的调度算法计算得到最优调度策略;
第五发送单元,用于向所述控制集群发送所述最优调度策略,以使所述控制集群根据所述最优调度策略向各个所述工作集群发送每个所述工作集群对应的调度信息。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210551837.XA CN114942845A (zh) | 2022-05-20 | 2022-05-20 | 跨集群资源调度方法及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210551837.XA CN114942845A (zh) | 2022-05-20 | 2022-05-20 | 跨集群资源调度方法及装置 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN114942845A true CN114942845A (zh) | 2022-08-26 |
Family
ID=82908607
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202210551837.XA Pending CN114942845A (zh) | 2022-05-20 | 2022-05-20 | 跨集群资源调度方法及装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN114942845A (zh) |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN115550371A (zh) * | 2022-12-05 | 2022-12-30 | 安超云软件有限公司 | 基于Kubernetes的Pod调度方法、系统及云平台 |
CN116010111A (zh) * | 2023-03-22 | 2023-04-25 | 安超云软件有限公司 | 一种跨集群资源调度方法、系统及终端设备 |
CN116204286A (zh) * | 2022-12-21 | 2023-06-02 | 山东未来网络研究院(紫金山实验室工业互联网创新应用基地) | 一种支持拓扑感知的Kubernetes调度方法 |
-
2022
- 2022-05-20 CN CN202210551837.XA patent/CN114942845A/zh active Pending
Cited By (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN115550371A (zh) * | 2022-12-05 | 2022-12-30 | 安超云软件有限公司 | 基于Kubernetes的Pod调度方法、系统及云平台 |
CN115550371B (zh) * | 2022-12-05 | 2023-03-21 | 安超云软件有限公司 | 基于Kubernetes的Pod调度方法、系统及云平台 |
CN116204286A (zh) * | 2022-12-21 | 2023-06-02 | 山东未来网络研究院(紫金山实验室工业互联网创新应用基地) | 一种支持拓扑感知的Kubernetes调度方法 |
CN116204286B (zh) * | 2022-12-21 | 2023-12-12 | 山东未来网络研究院(紫金山实验室工业互联网创新应用基地) | 一种支持拓扑感知的Kubernetes调度方法 |
CN116010111A (zh) * | 2023-03-22 | 2023-04-25 | 安超云软件有限公司 | 一种跨集群资源调度方法、系统及终端设备 |
CN116010111B (zh) * | 2023-03-22 | 2023-12-22 | 安超云软件有限公司 | 一种跨集群资源调度方法、系统及终端设备 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN113169952B (zh) | 一种基于区块链技术的容器云管理系统 | |
CN114942845A (zh) | 跨集群资源调度方法及装置 | |
CN106921651B (zh) | 通信系统架构 | |
EP3014434B1 (en) | Management of computing sessions | |
CA2916279C (en) | Local execution of remote virtual desktop | |
EP3014431B1 (en) | Management of computing sessions | |
US20150006614A1 (en) | Management of computing sessions | |
EP3014432B1 (en) | Management of computing sessions | |
CN106911648B (zh) | 一种环境隔离方法及设备 | |
US11398989B2 (en) | Cloud service for cross-cloud operations | |
CN112559461A (zh) | 文件传输方法及装置、存储介质及电子设备 | |
CN116107704B (zh) | 区块链BaaS和多联盟部署方法、数据存储访问方法及装置 | |
US10587725B2 (en) | Enabling a traditional language platform to participate in a Java enterprise computing environment | |
US10686646B1 (en) | Management of computing sessions | |
CN109784709A (zh) | 企业信息化协作应用方法及系统 | |
US10599483B1 (en) | Decentralized task execution bypassing an execution service | |
CN115480921A (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 |