公开/公告号CN112363809A
专利类型发明专利
公开/公告日2021-02-12
原文格式PDF
申请/专利权人 成都精灵云科技有限公司;
申请/专利号CN202011367529.9
申请日2020-11-27
分类号G06F9/455(20060101);H04L12/26(20060101);
代理机构51230 成都弘毅天承知识产权代理有限公司;
代理人孟仕杰
地址 610041 四川省成都市中国(四川)自由贸易试验区成都高新区天府五街200号4号楼B区8层804、805室
入库时间 2023-06-19 09:54:18
技术领域
本发明涉及服务器领域,具体是指一种基于kubernetes实现微服务链路收集的系统及其方法。
背景技术
随着微服务体系的飞速发展,一个项目中的微服务数量变得越来越多,当接口出现问题时,很难从错综复杂的服务调用网络中找到问题根源,此时,微服务链路收集显得至关重要,在云原生架构主导市场的今天,美国谷歌公司的Kubernetes集群作为主流云原生的容器调度引擎,成为了互联网企业的首选技术。
Kubernetes集群虽然拥有诸多优点,但是却没有提供原生的微服务链路收集功能,一旦集群内的应用发生故障,只能通过排查应用日志来发现问题,导致解决问题效率低下。
发明内容
基于以上问题,本发明提供了一种基于kubernetes实现微服务链路收集的系统及其方法,弥补了Kubernetes集群在微服务链路信息收集上的功能缺失。
为解决以上技术问题,本发明采用的技术方案如下:
一种基于kubernetes实现微服务链路收集的系统,该系统应用于微服务容器中,包括Kubernetes集群,网络跟踪模块和分布式追踪模块,其中,
网络跟踪模块采用Istio,以Sidecar形式注入到Kubernetes集群的目标微服务;
分布式追踪模块采用Jaeger,包括接收模块,用于接收目标微服务的链路信息,查询模块,用于从后台数据库读取数据并展示。
进一步,所述接收模块采用jaeger-collector,所述查询模块采用jaeger-query。
进一步,所述分布式追踪模块还包括显示模块采用Jaeger-ui。
一种基于kubernetes实现微服务链路收集的方法,采用一种基于kubernetes实现微服务链路收集的系统,包括如下步骤:
S1、用户选择需要收集链路信息的目标微服务,发起注入网络跟踪模块请求;
S2、微服务器中服务端收到用户请求后,在Kubernetes集群中为目标微服务自动创建和启动一个网络跟踪模块的容器,网络跟踪模块的容器开始对目标微服务进行网络追踪;
S3、网络跟踪模块处理传入和传出的网络流量,记录从发起注入网络跟踪模块请求到响应的全部信息;
S4、网络跟踪模块将记录的全部信息上报给接收模块,接收模块将链路信息存入到数据库;
S5、用户通过查询模块对数据库中链路信息进行查询。
进一步,所述步骤S5中,用户通过显示模块发起链路信息查询指令,显示模块通过查询模块对数据库中链路信息进行查询并展示。
与现有技术相比,本发明的有益效果是:将网络跟踪模块和分布式追踪模块集成到Kubernetes集群中,把链路信息收集操作提升到用户级别,由用户在界面上自主选择需要进行目标微服务的链路信息进行收集,而不是直接对集群所有的微服务实现链路信息收集导致资源浪费。
附图说明
图1为本发明的结构示意图。
具体实施方式
下面结合附图对本发明作进一步的说明。本发明的实施方式包括但不限于下列实施例。
如图1所示,一种基于kubernetes实现微服务链路收集的系统,该系统应用于微服务容器中,包括Kubernetes集群,网络跟踪模块和分布式追踪模块,其中,
网络跟踪模块采用Istio,以Sidecar形式注入到Kubernetes集群的目标微服务,对目标微服务的网络通信进行拦截,管理流量入口和出口,跟踪目标微服务的链路信息,并上报给分布式追踪模块;
分布式追踪模块采用Jaeger,包括:
接收模块,即jaeger-collector,用于接收网络跟踪模块上报的目标微服务的链路信息,进行信息校验,索引和储存到后台的数据库;
查询模块,即jaeger-query,提供链路信息的查询能力,从后台数据库读取相关数据;
显示模块,即Jaeger-ui,提供操作界面与显示界面。
一种基于kubernetes实现微服务链路收集的方法,包括如下步骤:
S1、用户选择需要收集链路信息的目标微服务,发起注入Istio Sidecar请求;
S2、微服务器中服务端收到用户请求后,在Kubernetes集群中为目标微服务自动创建和启动一个Istio的容器,Istio的容器开始对目标微服务进行网络追踪;
S3、Istio处理传入和传出的网络流量,记录从发起注入网络跟踪模块请求到响应的全部信息;
S4、Istio将记录的全部信息上报给jaeger-collector,jaeger-collector将链路信息存入到数据库;
S5、用户通过Jaeger-ui发起链路信息查询指令,jaeger-query对数据库中链路信息进行查询。
在实际使用时,例如Kubernetes集群内存在两个需要查询链路信息的目标微服务,即应用管理微服务A和工作空间微服务B,当用户请求应用管理查询两个目标微服务时,应用管理微服务A会调用工作空间微服务B获取当前用户可见的工作空间进行应用列表的筛选,此时,我们要对用户-应用管理微服务A-工作空间微服务B这样一个链路信息进行收集,具体如下:
步骤一、在Kubernetes集群中安装Istio,安装命令如下:
Curl-Lhttps://raw.githubusercontent.com/istio/istio/release-1.5/release/downloadIstioCandida te.sh|sh-export PATH=$PATH:$(pwd)/istio-1.5.1/binistioctl manifest apply--set profile=demo;
步骤二、在Kubernetes集群中部署Jaeger,配置环境变量jaeger-collector收集器http端口为9411,等待数据,安装指令如下:
https://raw.githubusercontent.com/jaegertracing/jaeger-kubernetes/master/all-in-one/jaeger-all-in-one-template.yml;
步骤三、用户分别选择应用管理微服务A和工作空间微服务B,发起注入IstioSidecar请求;
步骤四、服务端收到用户请求后,分别获取应用管理微服务A和工作空间微服务B对应的Deployment资源部署yaml文件;
步骤五、服务端在Kubernetes集群中获取istio的容器中工作空间下名称为istio和istio-sidecar-injector的两个ConfigMap信息,根据配置信息依次完成应用管理微服务A和工作空间微服务B的Istio Sidecar注入,并将Istio Sidecar的链路信息上报地址对接到Jaeger-collector的9411端口;
步骤六、此时应用管理微服务A和工作空间微服务B的链路信息收集功能已搭建完成,用户通过Jaeger-ui对应用管理微服务A发起应用查询调用,Istio Sidecar会追踪调用信息,生成用户-应用管理微服务A-工作空间微服务B这样一个链路信息并上报给jaeger;
步骤七、用户打开Jaeger-ui界面(部署地址/jaeger),选择应用管理微服务A进行链路信息查询,能够看到刚刚生成的应用管理微服务A相关的调用链路信息,同时可以查看链路信息拓扑图。
如上即为本发明的实施例。上述实施例以及实施例中的具体参数仅是为了清楚表述发明人的发明验证过程,并非用以限制本发明的专利保护范围,本发明的专利保护范围仍然以其权利要求书为准,凡是运用本发明的说明书及附图内容所作的等同结构变化,同理均应包含在本发明的保护范围内。
机译: 基于能量的系统,实现一种基于连续力场相互作用的新型接触电-电磁能量收集方法
机译: 基于能量的系统,实现一种基于连续力场相互作用的新型接触电-电磁能量收集方法
机译: 一种在采用高级IP的网络中处理边缘路由器的流量的方法,尤其是在实现基于使用费的计费会计系统的同时,根据会计信息收集来减少负载的方法