一种残膜回收机防缠绕挑膜装置的制 一种秧草收获机用电力驱动行走机构

一种kubernetes集群联邦系统及其实现方法与流程

2021-12-03 23:46:00 来源:中国专利 TAG:


1.本发明涉及网络通信技术领域,更具体地说,它涉及一种kubernetes集群联邦系统及其实现方法。


背景技术:

2.随着云计算的不断发展,it基础设施的技术架构正在发生剧烈变革,kubernetes以全新的视角降低应用程序的开发、管理、部署和运维成本,它的体系结构已成为快速开发,测试和部署应用程序的事实上的标准,在生产环境上得到大规模部署并被越来越多的公司采用。
3.对于企业级的客户来说,由于在上云的过程中对数据有安全性合规性的要求,因此通常采用多云和混合云的方式进行上云。在kubernetes和容器技术诞生之前,需要针对每一个云服务商进行定制化开发要来实现多云和混合云。有了kubernetes和容器之后,本地数据中心和云服务商的kubernetes集群可以提供一致的接口,这样应用程序在大部分情况下就不需要跟具体的云服务商直接绑定了,解除云服务商锁定,避免服务单纯依赖于某一家云服务商。同时提高服务可用性,可根据云服务商的价格选择成本较低的方案,并保障业务突发的弹性扩展,在某个云服务商容量不足时扩展到其他云服务商中。
4.但是构建kubernetes集群联邦存在kubernetes的跨集群资源的服务发现和编排问题。


技术实现要素:

5.本发明要解决的技术问题是针对现有技术的上述不足,本发明的目的一是提供一种kubernetes集群联邦实现方法。
6.本发明的目的二是提供一种kubernetes集群联邦系统。
7.为了实现上述目的一,本发明提供一种kubernetes集群联邦实现方法,设置集群控制器、状态控制器、同步控制器、调度器、命令控制器;
8.初始化所述集群控制器、状态控制器、同步控制器、调度器、命令控制器至kubernetes系统中,使该kubernetes成为联邦集群的主集群,所述集群控制器、状态控制器、同步控制器、调度器、命令控制器可以运行至少1个副本;
9.通过所述命令控制器配置联邦集群、与管理员进行交互操作,包括初始化所述联邦集群、添加从集群、查看所述联邦集群的信息;
10.通过所述集群控制器管理所述联邦集群的生命周期,以及检查主集群、从集群的健康;
11.通过所述状态控制器感知和缓存从集群中联邦化资源的运行状态;
12.通过所述调度器将工作负载实例分散到所述联邦集群不同的集群中;
13.通过所述同步控制器监控从集群的联邦化资源的期望值、当前运行状态,当期望值与运行状态出现不一致时,所述同步控制器负责操作从集群的联邦化资源,使该资源的
运行状态与期望值保持一致。
14.作为进一步地改进,所述命令控制器运行如下:
15.步骤1.1.所述命令控制器初始化运行到所述主集群,与主集群的kube

apiserver通信,获取所述联邦集群的配置信息;如果获取成功,则执行步骤1.3;否则执行步骤1.2;
16.步骤1.2.所述命令控制器初始化所述联邦集群的配置信息;如果初始化成功,则所述命令控制器启动成功,执行步骤1.3;否则重新执行步骤1.1;
17.步骤1.3.所述命令控制器等待用户输入命令;
18.步骤1.4.当所述命令控制器接收到添加从集群命令时,执行添加从集群步骤;
19.步骤1.5.当所述命令控制器接收到删除从集群命令时,执行删除从集群步骤;
20.步骤1.6.当所述命令控制器接收到显示从集群列表的请求时,查找从集群的资源并显示;
21.步骤1.7.执行步骤1.3。
22.进一步地,执行添加从集群步骤包括:
23.步骤1.4.1.所述命令控制器接收到添加从集群的配置文件信息;
24.步骤1.4.2.所述命令控制器根据所述从集群的配置文件信息生成kubernetes的crd资源;
25.步骤1.4.3.所述命令控制器根据所述crd资源的连接信息连接所述从集群的kube

apiserver;
26.步骤1.4.4.所述命令控制器在所述从集群上创建角色资源,如果创建成功,则返回成功信息;否则返回失败信息。
27.进一步地,执行删除从集群步骤包括:
28.步骤1.5.1.所述命令控制器接收到删除指定从集群的请求,查找该从集群中资源中crd资源的连接信息;
29.步骤1.5.2.所述命令控制器根据步骤1.5.1中的连接信息连接指定从集群kube

apiserver,并删除指定从集群上的相关信息;
30.步骤1.5.3.所述命令控制器删除指定从集群的中crd资源,如果删除成功,则返回成功信息;否则返回失败信息。
31.进一步地,所述集群控制器运行如下:
32.步骤2.1.所述集群控制器初始化运行到所述主集群,与主集群的kube

apiserver通信,获取所述联邦集群的配置信息、从集群列表;如果获取成功,则执行步骤2.2;否则继续执行本步骤;
33.步骤2.2.所述集群控制器记录当前时间t1,遍历所述从集群列表获得从集群访问信息,然后访问从集群的kube

apiserver;当能正确返回请求且返回值为设定值时,则表示从集群处于健康状态,否则表示从集群处于不健康状态;
34.如果健康状态有变化,将新的健康信息写入从集群列表中,遍历完成后记录当前时间t2;
35.步骤2.3.所述集群控制器根据所述联邦集群的配置信息获取健康检查延迟时间t,如果t<t2

t1,则执行步骤2.2,否则重复运行本步骤。
36.进一步地,所述状态控制器运行如下:
37.步骤3.1.所述状态控制器初始化运行到所述主集群,与主集群的kube

apiserver通信,获取所述联邦集群的配置信息、集群列表;如果获取成功,则执行步骤3.2;否则继续执行本步骤;
38.步骤3.2.所述状态控制器遍历获取所有正在运行的联邦化资源;
39.步骤3.3.所述状态控制器获取当前单个联邦化资源,使用kubernetes informer模式订阅当前资源的变更,并缓存到主集群,循环本步骤直至监听到所有正在运行的联邦化资源。
40.步骤3.4.所述状态控制器持续监听所有正在运行的联邦化资源的变化,当出现联邦化资源变化时,将变化的信息缓存到主集群。
41.进一步地,所述调度器运行如下:
42.步骤4.1.所述调度器初始化运行到所述主集群,与主集群的kube

apiserver通信,如果成功则执行步骤4.2;否则继续执行本步骤;
43.步骤4.2.所述调度器记录当前时间t3,获取正在运行的deployment联邦化资源、replicaset联邦化资源、statefulset联邦化资源、daemonset联邦化资源;
44.步骤4.3.所述调度器获取步骤4.2中提到的当前单个联邦化资源,对比当前联邦化资源的调度状态,将新创建的kubernetes pod、未被调度的kubernetes pod和调度失败的kubernetes pod提取出来;
45.步骤4.4.所述调度器调用设定调度算法将当前获取的资源调度到合适的集群上去,将调度结果写入该资源中,由所述同步控制器执行资源同步;
46.步骤4.5.如果所述调度器已遍历所有步骤4.2中提到的资源,则执行步骤4.6;否则所述调度器获取下一个资源,执行步骤4.3;
47.步骤4.6.所述调度器获取当前时间t4,t5=t4

t3,如果t5>设定时间,则执行步骤4.2;否则等待设定时间

t5后执行步骤4.2。
48.进一步地,设定调度算法包括:
49.步骤4.4.1.获取当前资源类型、kubernetes nodes、集群信息、资源的使用情况;
50.步骤4.4.2.基于总副本数和集群的定义策略来将kubernetes的资源进行编排得到psp文件;
51.步骤4.4.3.根据所述psp文件执行优先级排序操作,对适合资源运行的节点进行优先级排序;
52.步骤4.4.4.从最终优先级最高的集群中选择出来一个作为资源调度的结果。
53.进一步地,所述同步控制器运行如下:
54.步骤5.1.所述同步控制器初始化运行到所述主集群,与主集群的kube

apiserver通信,如果成功,则执行步骤5.2;否则继续执行本步骤;
55.步骤5.2.所述同步控制器记录当前时间t6,遍历需要同步的资源列表;
56.步骤5.3.所述同步控制器获取单个资源、该资源的最新状态,如果该资源的期望状态与最新状态不一致,则执行步骤5.4;否则执行步骤5.6;
57.步骤5.4.所述同步控制器从该资源中获取从集群名,根据从集群名向主集群查询从集群的连接信息,与从集群的kube

apiserver通信,成功则执行步骤5.5,否则执行步骤5.6;
58.步骤5.5.所述同步控制器根据获取的资源的数据,在从集群上创建或修改对应的资源信息,执行步骤5.6;
59.步骤5.6.如果所述同步控制器已遍历所有资源,则执行步骤5.7;否则执行步骤5.3;
60.步骤5.7.如果所述同步控制器获取当前时间t7,t8=t7

t6,如果t8>设定时间,则执行步骤5.2;否则等待设定时间

t8后执行步骤5.2。
61.为了实现上述目的二,本发明提供一种kubernetes集群联邦系统,包括集群控制器、状态控制器、同步控制器、调度器、命令控制器;
62.所述集群控制器、状态控制器、同步控制器、调度器、命令控制器初始化至kubernetes系统中,并根据上述的一种kubernetes集群联邦实现方法运行。
63.有益效果
64.本发明与现有技术相比,具有的优点为:
65.本发明在kubernetes系统中运行集群控制器、状态控制器、同步控制器、调度器、命令控制器,利用kubernetes内置的crd资源和admission webhook准入控制,达到完整的集群联邦功能,实现单一集群统一管理多个kubernetes集群,可以有效解决kubernetes的跨集群资源的服务发现和编排问题。本发明实现了完整的集群联邦功能,易于维护,通过巧妙利用kubernetes crd资源,使得本发明与具体的kubernetes版本解除绑定,向后兼容更新的版本。
附图说明
66.图1为本发明的架构图。
具体实施方式
67.下面结合附图中的具体实施例对本发明做进一步的说明。
68.参阅图1,一种kubernetes集群联邦实现方法,设置集群控制器cluster controller、状态控制器status controller、同步控制器sync controller、调度器scheduler、命令控制器command controller;
69.初始化集群控制器cluster controller、状态控制器status controller、同步控制器sync controller、调度器scheduler、命令控制器command controller至kubernetes系统中,使该kubernetes成为联邦集群的主集群,集群控制器cluster controller、状态控制器status controller、同步控制器sync controller、调度器scheduler、命令控制器command controller可以运行至少1个副本;
70.通过命令控制器command controller配置联邦集群、与管理员进行交互操作,包括初始化联邦集群、添加从集群、查看联邦集群的信息;
71.通过集群控制器cluster controller管理联邦集群的生命周期,以及检查主集群、从集群的健康;
72.通过状态控制器status controller感知和缓存从集群中联邦化资源的运行状态;
73.通过调度器scheduler将工作负载实例分散到联邦集群不同的集群中;
74.通过同步控制器sync controller监控从集群的联邦化资源的期望值、当前运行状态,当期望值与运行状态出现不一致时,同步控制器sync controller负责操作从集群的联邦化资源,使该资源的运行状态与期望值保持一致。
75.命令控制器command controller运行如下:
76.步骤1.1.命令控制器command controller初始化运行到主集群,与主集群的kube

apiserver通信,获取联邦集群的配置信息caihfederalconfig;如果获取成功,则执行步骤1.3;否则执行步骤1.2;
77.步骤1.2.命令控制器command controller初始化联邦集群的配置信息;如果初始化成功,则命令控制器command controller启动成功,执行步骤1.3;否则重新执行步骤1.1;初始化的配置信息如下:
78.‑
role,普通角色信息;
79.‑
serviceaccount,服务账户信息;
80.‑
clusterrolebinding,集群角色与账户绑定信息;
81.‑
rolebinding,普通角色与账户绑定信息;
82.‑
caihfederalcluster,kubernetes的crd资源,用于保存从集群的连接信息,初始化只声明此资源,不包含内容;
83.‑
caihfederalconfig,kubernetes的crd资源,用于描述联邦集群配置信息,包括如下内容:
84.‑
健康检查延迟时间;
85.‑
失败重试时间;
86.‑
是否启用域名服务;
87.‑
是否启用调度器scheduler;
88.‑
是否启用跨集群服务发现;
89.‑
validatingwebhookconfiguration和mutatingwebhookconfiguration,用于集群联邦生成资源时统一格式和关联调用;
90.‑
caihfederalcrds,联邦化kubernetes资源,初始化时开启namespace、deployment、service、configmap、secret、ingress、job、replicaset、clusterrole、role、serviceaccount、clusterrolebinding、rolebinding资源的联邦化,其它资源也可以使用命令行联邦化其它资源;
91.步骤1.3.命令控制器command controller等待用户输入命令;
92.步骤1.4.当命令控制器command controller接收到添加从集群命令时,执行添加从集群步骤;
93.步骤1.5.当命令控制器command controller接收到删除从集群命令时,执行删除从集群步骤;
94.步骤1.6.当命令控制器command controller接收到显示从集群列表的请求时,查找从集群的资源并显示;即查找caihfederalcluster资源中的从集群的资源并显示;
95.步骤1.7.执行步骤1.3。
96.执行添加从集群步骤包括:
97.步骤1.4.1.命令控制器command controller接收到添加从集群的yaml配置文件
信息;yaml配置文件信息如下:
98.‑
联邦集群的专属namespace:caih

federal
99.‑
clusterrole,集群角色信息
100.‑
从集群的集群url、ca认证信息和集群名
101.‑
从集群的用户配置信息,包括用户名、认证信息cert、认证key
102.‑
用户名和集群的关联配置
103.文件格式参考如下:
104.105.步骤1.4.2.命令控制器command controller根据从集群的yaml配置文件信息生成kubernetes的crd资源,即生成一个caihfederalcluster的crd资源;
106.步骤1.4.3.命令控制器command controller根据crd资源的连接信息(即根据caihfederalcluster的连接信息)连接从集群的kube

apiserver;
107.步骤1.4.4.命令控制器command controller在从集群上创建角色资源,如果创建成功,则返回成功信息;否则返回失败信息;
108.角色资源如下:
109.‑
创建联邦集群所在的namespace:caih

federal;
110.‑
serviceaccount,服务账户信息;
111.‑
clusterrole,集群角色信息;
112.‑
clusterrolebinding,集群角色与账户绑定信息;
113.‑
secret,账户密钥;
114.‑
caihfederalcrds,联邦化kubernetes资源,与步骤1.2中主集群初始化的caihfederalcrds相同。
115.执行删除从集群步骤包括:
116.步骤1.5.1.命令控制器command controller接收到删除指定从集群的请求,查找该从集群中资源中crd资源的连接信息,即查找caihfederalcluster资源中的从集群的连接信息;
117.步骤1.5.2.命令控制器command controller根据步骤1.5.1中的连接信息连接指定从集群kube

apiserver,并删除指定从集群上的相关信息;
118.步骤1.5.3.命令控制器command controller删除指定从集群的中crd资源,即删除caihfederalcluster资源,如果删除成功,则返回成功信息;否则返回失败信息。
119.集群控制器cluster controller运行如下:
120.步骤2.1.集群控制器cluster controller初始化运行到主集群,与主集群的kube

apiserver通信,获取联邦集群的配置信息caihfederalconfig、从集群列表caihfederalcluster;如果获取成功,则执行步骤2.2;否则继续执行本步骤;
121.步骤2.2.集群控制器cluster controller记录当前时间t1,遍历从集群列表caihfederalcluster获得从集群访问信息,然后访问从集群的kube

apiserver;当能正确返回请求且返回值为设定值时,在本实施例中设定值为200,则表示从集群处于健康状态,否则表示从集群处于不健康状态;
122.如果健康状态有变化,将新的健康信息写入从集群列表caihfederalcluster中,遍历完成后记录当前时间t2;
123.步骤2.3.集群控制器cluster controller根据联邦集群的配置信息caihfederalconfig获取健康检查延迟时间t,如果t<t2

t1,则执行步骤2.2,否则重复运行本步骤。
124.状态控制器status controller运行如下:
125.步骤3.1.状态控制器status controller初始化运行到主集群,与主集群的kube

apiserver通信,获取联邦集群的配置信息caihfederalconfig、集群列表caihfederalcluster;如果获取成功,则执行步骤3.2;否则继续执行本步骤;
126.步骤3.2.状态控制器status controller遍历获取所有正在运行的联邦化资源;
127.步骤3.3.状态控制器status controller获取当前单个联邦化资源,使用kubernetes informer模式订阅当前资源的变更,并缓存到主集群,循环本步骤直至监听到所有正在运行的联邦化资源。
128.步骤3.4.状态控制器status controller持续监听所有正在运行的联邦化资源的变化,当出现联邦化资源变化时,将变化的信息缓存到主集群。
129.调度器scheduler运行如下:
130.步骤4.1.调度器scheduler初始化运行到主集群,与主集群的kube

apiserver通信,如果成功则执行步骤4.2;否则继续执行本步骤;
131.步骤4.2.调度器scheduler记录当前时间t3,获取正在运行的deployment联邦化资源、replicaset联邦化资源、statefulset联邦化资源、daemonset联邦化资源;
132.步骤4.3.调度器scheduler获取步骤4.2中提到的当前单个联邦化资源,对比当前联邦化资源的调度状态,将新创建的kubernetes pod、未被调度的kubernetes pod和调度失败的kubernetes pod提取出来;
133.步骤4.4.调度器scheduler调用设定调度算法将当前获取的资源调度到合适的集群上去,将调度结果写入该资源中,由同步控制器sync controller执行资源同步;
134.步骤4.5.如果调度器scheduler已遍历所有步骤4.2中提到的资源,则执行步骤4.6;否则调度器scheduler获取下一个资源,执行步骤4.3;
135.步骤4.6.调度器scheduler获取当前时间t4,t5=t4

t3,如果t5>设定时间,则执行步骤4.2;否则等待设定时间

t5后执行步骤4.2。
136.设定调度算法包括:
137.步骤4.4.1.获取当前资源类型、kubernetes nodes、集群信息、资源的使用情况;比如集群上有多少调度的pod、已经申请的资源、还可以分配的资源;获取kubernetes nodes即获取当前资源所在的从集群信息和从集群所有的nodes信息,用于确认deployment、replicaset、statefulset、daemonset相关的pod应当调度到哪个node上去;
138.步骤4.4.2.基于总副本数和集群的定义策略来将kubernetes的资源进行编排得到psp(podschedulingpreference)文件;
139.步骤4.4.3.根据psp文件执行优先级排序操作,对适合资源运行的节点进行优先级排序;
140.步骤4.4.4.从最终优先级最高的集群中选择出来一个作为资源调度的结果。
141.同步控制器sync controller运行如下:
142.步骤5.1.同步控制器sync controller初始化运行到主集群,与主集群的kube

apiserver通信,如果成功,则执行步骤5.2;否则继续执行本步骤;
143.步骤5.2.同步控制器sync controller记录当前时间t6,遍历需要同步的资源列表;
144.步骤5.3.同步控制器sync controller获取单个资源、该资源的最新状态,如果该资源的期望状态与最新状态不一致,则执行步骤5.4;否则执行步骤5.6;
145.步骤5.4.同步控制器sync controller从该资源中获取从集群名,根据从集群名向主集群查询从集群的连接信息,与从集群的kube

apiserver通信,成功则执行步骤5.5,
否则执行步骤5.6;
146.步骤5.5.同步控制器sync controller根据获取的资源的数据,在从集群上创建或修改对应的资源信息,执行步骤5.6;
147.步骤5.6.如果同步控制器sync controller已遍历所有资源,则执行步骤5.7;否则执行步骤5.3;
148.步骤5.7.如果同步控制器sync controller获取当前时间t7,t8=t7

t6,如果t8>设定时间,则执行步骤5.2;否则等待设定时间

t8后执行步骤5.2。
149.一种kubernetes集群联邦系统,包括集群控制器cluster controller、状态控制器status controller、同步控制器sync controller、调度器scheduler、命令控制器command controller;
150.集群控制器cluster controller、状态控制器status controller、同步控制器sync controller、调度器scheduler、命令控制器command controller初始化至kubernetes系统中,并根据上述的一种kubernetes集群联邦实现方法运行。
151.以上仅是本发明的优选实施方式,应当指出对于本领域的技术人员来说,在不脱离本发明结构的前提下,还可以作出若干变形和改进,这些都不会影响本发明实施的效果和专利的实用性。
再多了解一些

本文用于企业家、创业者技术爱好者查询,结果仅供参考。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

相关文献