本申请公开了一种基于Kubernetes的资源变更历史记录方法及装置,该方法包括:基于list‑watch机制,维持建立的与Kubernetes集群中的kube‑apiserver的watch连接;通过watch连接访问kube‑apiserver,获取etcd中存入的增量数据;将所述增量数据存入本地数据库表中。本申请可以解决查询Kubernetes的资源变更历史记录的操作复杂,从而导致无法对Kubernetes集群的异常做出快速响应的问题。
Kubernetes based resource change history recording method and device
【技术实现步骤摘要】
基于Kubernetes的资源变更历史记录方法及装置
本申请涉及云计算
,尤其涉及一种基于Kubernetes的资源变更历史记录方法及装置。
技术介绍
本部分旨在为权利要求书中陈述的本专利技术实施例提供背景或上下文。此处的描述不因为包括在本部分中就承认是现有技术。Kubernetes(简称k8s)作为一个跨主机集群的开源容器调度平台,提供了以容器为中心的基础架构并已经成为了容器编排领域的事实标准。如图1所示,为Kubernetes的组件图。Kubernetes项目编排能力的核心在于其声明式应用程序接口(ApplicationProgrammingInterface,API)的设计和使用,参见图1,用户通过对REST路径下API群组进行CRUD(Create、Retrieve、Update和Delete的缩写)操作,可以获取和变更资源信息。Kubernetes中存在多种资源类型,如pods(最小的原子调度单位)、serverice(服务)、events(事件)等。通常情况下,大部分使用者只关心pod、service这种直接关乎服务运行成功与否的资源类型,而只有在集群发生异常或是服务部署发生异常,需要进行问题追踪时,才会关注集群运行信息。目前针对集群内部运行信息的记录,主要通过events进行。Events包含了kubernetes运行过程中核心组件kubelet和控制管理器(ControllerManager)产生的信息,分析events包含信息和events资源变更历史记录可以有效追踪问题,从而有的放矢的解决。业内目前查看events主要通过kubectl(二进制可执行文件,通过访问kube-apiserver产生效果)命令进行,具体命令如kubectlgetevents和kubectldescribe[resourceName]均可以获得events内容。上述获取events的方式为命令行级别操作,需要具备访问集群权限。要获取准确的events信息需要设置繁杂的参数做多条件匹配,且最终的查询结果显示不够友好。对于一些特定需求,如查询一个应用升级前后对应pod名字变化,需要多次查询人工匹配,且不容易进行操作常态化。并且,在针对复杂故障需要追踪时,单纯使用命令行进行debug操作会比较复杂,给快速响应和解决问题带来了一定挑战。
技术实现思路
本申请实施例提供一种基于Kubernetes的资源变更历史记录方法,用以解决查询Kubernetes的资源变更历史记录的操作复杂,从而导致无法对Kubernetes集群的异常做出快速响应的问题,该方法包括:基于list-watch机制,维持建立的与Kubernetes集群中的kube-apiserver的watch连接;通过watch连接访问kube-apiserver,获取etcd中存入的增量数据;将所述增量数据存入本地数据库表中。本申请实施例还提供一种基于Kubernetes的资源变更历史记录装置,用以解决查询Kubernetes的资源变更历史记录的操作复杂,从而导致无法对Kubernetes集群的异常做出快速响应的问题,该装置包括:通信模块,用于基于list-watch机制,维持建立的与Kubernetes集群中的kube-apiserver的watch连接;获取模块,用于通过watch连接访问所述通信模块连接的kube-apiserver,获取etcd中存入的增量数据;存储模块,用于将所述获取模块获取的所述增量数据存入本地数据库表中。本申请实施例中,基于list-watch机制,通过与Kubernetes集群中的kube-apiserver建立的watch连接,不断从etcd中获取events的增量数据,并将增量数据存储在本地数据库表中,由于本地数据库表中存储的增量数据中包括了与增量数据对应的资源版本号,可以快速关联和查找对应的资源;将前端结果和命令行结果关联起来。并且,本地数据库表中的数据可以长期保存,通过不同时间获取的增量数据的资源版本号也可以了解Kubernetes的资源变更情况,解决了查询Kubernetes的资源变更历史记录的操作复杂的问题,可以对Kubernetes集群的异常做出快速响应。附图说明为了更清楚地说明本申请实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。在附图中:图1为现有技术中一种Kubernetes的组件图;图2为本申请实施例中一种events结构体的示意图;图3为本申请实施例中一种基于Kubernetes的资源变更历史记录方法的流程图;图4本申请实施例中一种list-watch机制的通信原理示意图;图5为本申请实施例中一种基于Kubernetes的资源变更历史记录方法的技术架构图;图6为本申请实施例中一种基于Kubernetes的资源变更历史记录装置的结构示意图。具体实施方式为使本申请实施例的目的、技术方案和优点更加清楚明白,下面结合附图对本申请实施例做进一步详细说明。在此,本申请的示意性实施例及其说明用于解释本申请,但并不作为对本申请的限定。Kubelet启停pod以及controllermanger管理各个controller工作时会产生events。本申请专利技术人在研究中发现,存储在etcd中的events具有相同的结构,参见图2,为一个完整的event结构体的示意图,events结构体主要包含如下组分:①、kind:资源类型;②、name:资源名称;③、namespace:命名空间;④、reason:失败原因;⑤、message:事件含义;⑥、ource:事件产生地点,包括产生节点和组件;⑦、firstTimestamp:同一类型事件第一次出现时间戳;⑧、lastTimestamp:同一类型事件最后一次出现时间戳,新的相同类型事件会将其lastTimestamp更新该值;⑨、count:该类型事件出现次数。事实上events的json结构体内包含了该事件的要素:何人、何时、何地、何事、为何。通过合并相同类型的events并对不同时间产生的events进行观察,可以得出其变化过程。获取所有事件并进行归类存储,就可以清楚了解集群内部发生的事件内容。可以使用官方提供的库,如替代kubectl命令访问kube-apiserver获取events数据,可以使用官方提供的库(如https://github.com/kubernetes/client-go)直接调用kube-apiserver提供的API接口,获取完整的events的数据。Kubernetes里的API严格遵循RESTfulAPI设计,没有隐藏的内部API并在权本文档来自技高网...
【技术保护点】
1.一种基于Kubernetes的资源变更历史记录方法,其特征在于,所述方法包括:/n基于list-watch机制,维持建立的与Kubernetes集群中的kube-apiserver的watch连接;/n通过watch连接访问kube-apiserver,获取etcd中存入的增量数据;/n将所述增量数据存入本地数据库表中。/n
【技术特征摘要】
1.一种基于Kubernetes的资源变更历史记录方法,其特征在于,所述方法包括:
基于list-watch机制,维持建立的与Kubernetes集群中的kube-apiserver的watch连接;
通过watch连接访问kube-apiserver,获取etcd中存入的增量数据;
将所述增量数据存入本地数据库表中。
2.根据权利要求1所述的方法,其特征在于,在维持建立的与Kubernetes集群中的kube-apiserver的watch连接之前,所述方法还包括:
向kube-apiserver发起list操作请求,获取etcd中存储的全量数据;
将所述全量数据存入本地数据库表中;
根据所述全量数据中的最新资源版本,向kube-apiserver发起watch请求,建立与kube-apiserver的watch连接。
3.根据权利要求2所述的方法,其特征在于,如果未建立与kube-apiserver的watch连接,则所述方法还包括:
重新向kube-apiserver发起list操作请求,重新获取etcd中存储的全量数据;
根据重新获取的全量数据中的最新资源版本,重新发起watch请求。
4.根据权利要求1所述的方法,其特征在于,将所述增量数据存入本地数据库表中,包括:
按照预设解析规则解析所述增量数据,得到所述增量数据的资源类型和命名空间;
将所述增量数据存入与所述资源类型和命名空间对应的本地数据库表中,其中,相同资源类型的增量数据按照版本类型值由小到大的顺序存入对应的本地数据库表中。
5.根据权利要求1至4任一项所述的方法,其特征在于,在将所述增量数据存入本地数据库表中之后,所述方法还包括:
从本地数据库表中读取所述增量数据,并可视化展示所述增量数据。
6.一种基于Kubernetes的资源变更历史记录装置,其特征在于,所述装置包括:
通信模块,用于基于list-watch机制,维持建立的与Kubernetes...
【专利技术属性】
技术研发人员:冯逸航,
申请(专利权)人:中国建设银行股份有限公司,建信金融科技有限责任公司,
类型:发明
国别省市:北京;11
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。