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

持续获取K8s集群状况的方法及系统与流程

2023-01-15 08:58:11 来源:中国专利 TAG:

持续获取k8s集群状况的方法及系统
技术领域
1.本发明属于通信技术领域,尤其涉及一种持续获取k8s集群状况的方法及系统。


背景技术:

2.k8s作为一款容器编排管理工具,目前已被广为使用于管理调控各自的容器集群。而k8s也有属于自身的k8s api。可以通过k8s api的接口获取到k8s集群信息,例如节点信息、容器信息、网络信息等。
3.由于k8s的广泛应用,各个公司也许会建有多个k8s集群。若要管理好多个k8s集群,除了分别到各个集群查看管理集群外,还有一种是基于k8s api,建立一个管控平台。通过分别请求各个集群的api,获取集群内部信息,达到统一管理。管控平台基本都是通过持续http轮询请求k8s api,已达到实时获取k8s集群信息,如图1所示。
4.在web需要展示某个k8s集群信息时,也会持续轮询请求管控平台以获取最新的该k8s集群信息,而管控平台在接收到请求后,也会请求到对应的k8s集群的k8s api以获取信息。因此,web持续请求管控平台相当于持续请求k8s api。一来一回,也是会有网络延迟。


技术实现要素:

5.本发明实施例的目的是提供一种持续获取k8s集群状况的方法及系统,解决了现有的持续获取k8s集群信息对k8s集群下行带宽带来传输压力的技术问题。
6.为了实现上述目的,本发明实施例提供了一种持续获取k8s集群状况的方法,该方法包括:master程序接收客户端发送的获取k8s集群信息的请求,在缓存处查找k8s集群信息,在未查找到对应的k8s集群信息时,则根据集群名和/或集群ip地址找到该k8s集群信息所对应的agent程序地址;agent程序接收master程序发送的连接请求,与master程序建立连接;agent程序接收master程序发送的上报指令后,建立新线程和计时周期并开始计时,线程每隔一个请求周期会自动请求对应的agent程序发送k8s集群信息,并由agent程序上报给master程序,直到计时周期结束;请求周期的时长小于计时周期的时长;master程序将由agent程序上报的k8s集群信息进行缓存并设置k8s集群信息的数据时效的时长,使其大于请求周期的时长;计时周期结束后,agent程序关闭线程和连接。
7.另一方面,本发明还提供了一种持续获取k8s集群状况的系统,包括:客户端,具有web功能,用于发送获取k8s集群信息的请求;master程序,具有缓存功能,用于接收客户端发送的获取k8s集群信息的请求,在缓存处查找k8s集群信息,在未查找到对应的k8s集群信息时,则根据集群名和/或集群ip地址找到该集群所对应的agent程序地址;至少一个k8s集群,每个k8s集群植入一个agent程序,用于接收master程序发送的
连接请求,并与master程序建立连接;agent程序还用于接收master程序发送的上报指令后,建立新线程和计时周期并开始计时,线程每隔一个请求周期会自动请求agent程序重新发送k8s集群信息,并由agent程序上报给master程序,直到计时周期结束;请求周期的时长小于计时周期的时长;master程序还用于将由agent程序上报的k8s集群信息进行缓存并设置k8s集群信息的数据时效的时长,使其大于请求周期的时长;agent程序还用于在计时周期结束后,关闭线程和连接。
8.本发明具有以下的有益效果:通过websocket实现在保证实时获取各个k8s集群信息的情况下,减少对k8s集群的请求,进而减少k8s集群的下行带宽,由于系统有缓存数据机制,在客户端请求系统获取信息时,只需要到缓存处拿到最新缓存数据,能让系统本身对k8s集群信息获取的响应更加的迅速。
附图说明
9.图1表示现有的k8s集群信息获取系统的结构框架图;图2表示本发明实施例提供的持续获取k8s集群状况的方法的步骤流程图一;图3表示本发明实施例提供的持续获取k8s集群状况的方法的步骤流程图二;图4表示本发明实施例提供的持续获取k8s集群状况的系统的结构框图。
具体实施方式
10.为使本发明的目的、技术方案和优点更加清楚明白,下面结合具体实施方式并参照附图,对本发明实施例进一步详细说明。应该理解,这些描述只是示例性的,而并非要限制本发明的范围。此外,在以下说明中,省略了对公知结构和技术的描述,以避混淆本发明的概念。
11.websocket是一种在单个tcp连接上进行全双工通信的协议。能在两端之间建立持久性连接,并进行双向数据传输。
12.k8s集群,全称kubernetes,是一款强大的容器编排器,用于管理多个服务器内容器的编排与生命周期管理。容器相当于一个拥有系统的虚拟机,可以在容器内运行相应的程序。
13.redis是一个高性能的key-value数据库,由于redis的高性能以及丰富的数据类型受到广大开发者的青睐,多用于缓存数据。
14.本发明实施例分为master程序以及agent程序两部分,master程序主要功能是收集各个k8s集群信息以及与客户端进行数据交互,展示数据。agent程序是植入到各个k8s集群中运行,负责与master程序建立websocket连接后通过请求k8s api收集k8s集群信息,持续将收集到的k8s集群信息发往master程序。master程序会将接收到的k8s集群信息缓存到redis,缓存数据只会保存10秒钟。agent程序持续发送,master程序会不断刷新redis内对应的数据,保证数据的新鲜度。
15.数据库中会提前存入各个k8s集群对应的ip地址和/或集群名,在缓存处未查找到k8s集群信息时,就会去数据库中根据集群名和/或集群ip地址寻找该k8s集群信息对应的agent程序地址。
16.本发明实施例中的k8s集群信息包括:节点信息、容器信息和/或网络信息。
17.具体地,节点信息是指:该k8s集群包含的各个节点服务器的状态、cpu大小、内存大小、以及占用cpu、内存多少等;容器信息是指:该k8s集群编排出的容器的状态、分布在哪个节点、分配的cpu内存大小以及存储大小等;网络信息是指:占用了节点服务器的哪些端口以及这些端口分别映射到容器内的哪个端口。
18.实施例一图2-3表示本发明实施例提供的持续获取k8s集群状况的方法的步骤流程图,参照图2、3,本发明实施例提供一种持续获取k8s集群状况的方法,该方法包括:步骤s110,master程序接收客户端发送的获取k8s集群信息的请求,在缓存处查找该k8s集群信息,在未查找到该k8s集群信息时,则在数据库中根据集群名和/或集群ip地址找到该k8s集群信息所对应的agent程序地址;具体地,客户端首先发送获取某个k8s集群信息的请求,master程序接收到客户端的获取请求后,master程序先在缓存处redis查找对应的k8s集群信息,如果在缓存处查找到k8s集群信息时,就会将查找结果返回给客户端。如果master程序在缓存处没查找到该k8s集群信息,就会在数据库中根据集群名和/或集群ip地址找到该k8s集群信息所对应的agent程序地址。
19.步骤s120,agent程序接收master程序发送的连接请求,并与master程序建立连接;master程序会在数据库中根据集群名和/或集群ip地址找到对应k8s集群信息的agent程序地址,当查找到agent程序地址时,master程序会发送请求建立websockt连接,agent程序接收master程序发送的连接请求,并与master程序建立websocket连接。
20.步骤s130,agent程序接收master程序发送的上报指令后,建立新线程和计时周期并开始计时,线程每隔一个请求周期会自动请求agent程序重新发送k8s集群信息,并由agent程序上报给master程序,直到计时周期结束;其中,该请求周期的时长小于该计时周期的时长;一个请求周期是指线程两次向agent程序发送获取k8s集群信息请求时间的间隔。
21.具体地,websocket连接成功后,master程序会发送上报指令给agent程序,agent程序在接收到上报指令后,会新建一个线程,并生成一个计时器,计时器会在一个计时周期(例如,30分钟)内倒数。为了保证数据新鲜度,在30分钟内,该线程会每隔一个请求周期(例如,5秒钟)请求自属k8s集群的api以重新获取k8s集群信息,并将获取到的k8s集群信息通过websocket连接发送到master程序。
22.步骤s140,master程序将由agent程序上报的k8s集群信息进行缓存并设置该k8s集群信息的数据时效的时长,使其大于该请求周期的时长。
23.为了保证数据能够在线程请求前保持有效,本发明设置数据时效的时长要大于请求周期的时长。如果数据时效的时长小于请求周期的时长,那么在线程还没请求k8s集群信息前该k8s集群信息就失效了。数据时效从k8s集群信息存入缓存的存储时间起算。
24.具体地,master程序将由agent程序上报的k8s集群信息缓存到redis并设置数据
时效(例如,10秒钟)。agent程序持续上报,master程序会持续刷新数据以及数据时效。
25.步骤s150,计时周期结束后,agent程序关闭线程和连接,回到等待master程序连接的状态。
26.为了释放资源达到master程序需要时才持续上报数据的效果,30分钟计时周期结束后,agent程序会关闭websocket连接并关闭线程。然后再次等待master程序的请求,因为agent程序在30分钟内持续发送k8s集群信息到master程序,master程序能持续更新redis中对应的数据,在客户端请求master程序以获取k8s集群信息,master程序只需要到redis里拿最新的k8s集群信息即可,不需要再到各个k8s集群拿数据,节省网络数据交互带来的延迟。
27.待agent程序不再上报k8s集群信息后,redis也会由于不再刷新数据时效,在缓存处的缓存数据会在10秒后自动删除。若客户端再次请求,master程序从redis中获取不到想要的信息,就会再次与agent程序建立websocket连接要求再次上报k8s集群信息。
28.本发明的持续获取k8s集群状况的方法,通过websocket实现在保证实时获取各个k8s集群信息的情况下,减少对k8s集群的请求,进而减少k8s集群的下行带宽的传输压力,由于系统有缓存数据机制,在客户端请求系统获取信息时,只需要到redis拿到最新缓存数据,能让系统本身对k8s集群信息获取的响应更加的迅速,提高了客户端与服务端之间的通讯效率。
29.本发明的持续获取k8s集群状况的系统分为master程序以及agent程序两部分,master程序主要功能是收集各个k8s集群信息以及与客户端进行数据交互,展示数据。agent程序是植入到各个k8s集群中运行,负责与master程序建立websocket连接后通过请求k8s集群的 api收集k8s集群信息,持续将收集到的k8s集群信息发往master程序。master程序会将接收到的信息缓存到redis,但是缓存数据只会保存10秒钟。但agent程序持续发送,master程序会不断刷新redis内对应的数据,保证数据的新鲜度。
30.实施例二图4表示本发明实施例提供的一种持续获取k8s集群状况的系统的结构框图,参照图4,本发明实施例提供一种持续获取k8s集群状况的系统,该持续获取k8s集群状况的系统可用于实现上述的持续获取k8s集群状况的方法,该系统包括:客户端,具有web功能,用于发送获取k8s集群信息的请求;master程序具有缓存功能,用于接收客户端发送的获取k8s集群信息的请求,在缓存处查找该k8s集群信息,如果在缓存处查找到k8s集群信息时,就会将查找结果返回给客户端。如果master程序在缓存处没查找到该k8s集群信息,就会在数据库中根据集群名和/或集群ip地址找到该集群所对应的agent程序地址;至少一个k8s集群,每个k8s集群植入一个agent程序,具有api端口,用于接收master程序发送的连接请求,并与master程序建立连接;agent程序还用于接收master程序发送的上报指令后,建立新线程和计时周期并开始计时,线程每隔一个请求周期会自动请求agent程序重新发送k8s集群信息,并由agent程序上报给master程序,直到计时周期结束;该请求周期的时长小于该计时周期的时长;master程序还用于将agent程序上报的k8s集群信息进行缓存并设置该k8s集群信息的数据时效的时长,使其大于该请求周期的时长;
agent程序还用于在计时周期结束后,关闭线程和连接。
31.具体地,如图4所示,本发明实施例提供的一种持续获取k8s集群状况的系统包括k8s集群1、k8s集群2及k8s集群3,在三个集群中植入agent程序。
32.客户端首先发送获取k8s集群信息的请求,master程序接收到客户端请求获取某个k8s集群信息,master程序先在缓存处redis查找对应的k8s集群信息,如果在缓存处查找到k8s集群信息时,就会将查找结果返回给客户端。如果master程序在缓存处没查找到该k8s集群信息,就会在数据库中根据集群名和/或集群ip地址找到该k8s集群信息所对应的agent程序地址。
33.master程序会在数据库中根据集群名和/或集群ip地址找到对应k8s集群信息的agent程序地址,当查找到agent程序地址时,master程序会发送请求建立websockt连接,agent程序接收master程序发送的连接请求,并与master程序建立websocket连接。
34.websocket连接成功后,master程序会发送上报指令给agent程序,agent程序在接收到上报指令后,会新建一个线程,并生成一个计时器,计时器会在一个计时周期(例如,30分钟)内倒数。为了保证数据新鲜度,在30分钟内,该线程会每隔一个请求周期(例如,5秒钟)请求自属k8s集群的api以重新获取k8s集群信息,并将获取到的k8s集群信息通过websocket连接发送到master程序。
35.master程序接收到由agent程序上报的k8s集群信息会缓存到redis并设置数据时效的时长(例如,10秒钟),agent程序持续上报,master程序会持续刷新数据以及数据时效。
36.为了释放资源达到master程序需要时才持续上报数据的效果,30分钟计时周期结束后,agent程序会关闭websocket连接并关闭线程。然后再次等待master程序的请求,因为agent程序在30分钟内持续发送k8s集群信息到master程序,master程序能持续更新redis中对应的数据,在客户端请求master程序以获取k8s集群信息,master程序只需要到redis里拿最新的k8s集群信息即可,不需要再到各个k8s集群拿数据,节省网络数据交互带来的延迟。
37.待agent程序不再上报k8s集群信息后,在缓存处的缓存数据会在10秒(数据时效的时长为10秒)后自动删除。若客户端再次请求,master程序从redis中获取不到想要的信息,就会再次与agent程序建立websocket连接要求上报。
38.本发明的持续获取k8s集群状况的系统分为master程序以及agent程序两部分,master程序主要功能是收集各个k8s集群信息以及与客户端进行数据交互,展示数据。agent程序是植入到各个k8s集群中运行,负责与master程序建立websocket连接后通过请求k8s api收集k8s集群信息,持续将收集到的k8s集群信息发往master程序。master程序会将接收到的k8s集群信息缓存到redis,设置缓存数据的数据时效的时长(例如,10秒钟)。agent程序持续发送,master程序会不断刷新redis内对应的数据,保证数据的新鲜度。
39.应当理解的是,本发明的上述具体实施方式仅仅用于示例性说明或解释本发明的原理,而不构成对本发明的限制。因此,在不偏离本发明的精神和范围的情况下所做的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。此外,本发明所附权利要求旨在涵盖落入所附权利要求范围和边界、或者这种范围和边界的等同形式内的全部变化和修改例。
再多了解一些

本文用于创业者技术爱好者查询,仅供学习研究,如用于商业用途,请联系技术所有人。

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

相关文献