【云原生 • Prometheus】云原生kubernetes服务发现原理图解 - 综合 -

当前位置:首页  >  综合  > 正文

【云原生 • Prometheus】云原生kubernetes服务发现原理图解

【云原生 • Prometheus】云原生kubernetes服务发现原理图解
2023-03-23 22:06:30 来源:腾讯云

云原生kubernetes服务发现原理图解

概述

上节分析了Prometheus服务发现核心流程(如下图),Discoverer基于不同协议发现采集点,通过channel通知到updater协程,然后更新到discoveryManager结构体trargets字段中,最终由sender协程将discoveryManagertargets字段数据发送给scrape采集模块。


(资料图)

Discoverer定义的接口类型,不同的服务发现协议基于该接口进行实现:

type Discoverer interface { // Run hands a channel to the discovery provider (Consul, DNS, etc.) through which // it can send updated target groups. It must return when the context is canceled. // It should not close the update channel on returning. Run(ctx context.Context, up chan<- []*targetgroup.Group)}

k8s协议配置

Prometheus本身就是作为云原生监控出现的,所以对云原生服务发现支持具有天然优势。kubernetes_sd_configs服务发现协议核心原理就是利用API Server提供的Rest接口获取到云原生集群中的PODServiceNodeEndpointsEndpointsliceIngress等对象的元数据,并基于这些信息生成Prometheus采集点,并且可以随着云原生集群状态变更进行动态实时刷新。

kubernetes云原生集群的PODServiceNodeIngress等对象元数据信息都被存储到etcd数据库中,并通过API Server组件暴露的Rest接口方式提供访问或操作这些对象数据信息。 ❞

kubernetes_sd_configs配置示例:」

- job_name: kubernetes-pod    kubernetes_sd_configs:    - role: pod      namespaces:        names:        - "test01"      api_server: https://apiserver.simon:6443      bearer_token_file: /var/run/secrets/kubernetes.io/serviceaccount/token       tls_config:        ca_file: /var/run/secrets/kubernetes.io/serviceaccount/ca.crt

配置说明:

api_server指定API Server地址,出于安全考虑,这些接口是带有安全认证的,bearer_token_fileca_file则指定访问API Server使用到的认证信息;role指定基于云原生集群中哪种对象类型做服务发现,支持PODServiceNodeEndpointsEndpointsliceIngress六种类型;namespaces指定作用于哪个云原生命名空间下的对象,不配置则对所有的云原生命名空间生效;

「为什么没有配置api server信息也可以正常进行服务发现?」

很多时候我们并不需要配置api server相关信息也可以进行服务发现,如我们将上面示例简化如下写法:

- job_name: kubernetes-pod    kubernetes_sd_configs:    - role: pod      namespaces:        names:        - "test01"

一般Prometheus部署在监控云原生集群上,从 Pod使用 Kubernetes API官方客户端库(client-go)提供了更为简便的方法:rest.InClusterConfig()API Server地址是从POD的环境变量KUBERNETES_SERVICE_HOSTKUBERNETES_SERVICE_PORT构建出来, token以及 ca信息从POD固定的文件中获取,因此这种场景下kubernetes_sd_configsapi_serverca_file是不需要配置的。

client-gokubernetes官方提供的go语言的客户端库,go应用使用该库可以访问kubernetesAPI Server,这样我们就能通过编程来对kubernetes资源进行增删改查操作。 ❞

Informer机制

从之前分析的服务发现协议接口设计得知,了解k8s服务发现协议入口在discovery/kubernetes.goRun方法:

Run方法中switch罗列出不同role的处理逻辑,刚好和配置示例中role支持的六种云原生对象类型对应,只是基于不同的对象进行服务发现,基本原理都是一致的。

云原生服务发现基本原理是访问API Server获取到云原生集群资源对象,PrometheusAPI Server进行交互这里使用到的是client-go官方客户端里的Informer核心工具包。Informer底层使用ListWatch机制,在Informer首次启动时,会调用List API获取所有最新版本的资源对象,缓存在内存中,然后再通过Watch API来监听这些对象的变化,去维护这份缓存,降低API Server的负载。除了ListWatchInformer还可以注册自定义事件处理逻辑,之后如果监听到事件变化就会调用对应的用户自定义事件处理逻辑,这样就实现了用户业务逻辑扩展。

Informer机制工作流程如下图:

Informer机制本身比较复杂,这里先暂时不太具体说明,只需要理解Prometheus使用Informer机制获取和监听云原生资源对象,即上图中只有「绿色框部分是自定义业务逻辑」,其它都是client-go框架informer工具包提供的功能。

这其中的关键就是注册自定义AddFuncDeleteFuncUpdateFunc三种事件处理器,分别对应增、删、改操作,当触发对应操作后,事件处理器就会被回调感知到。比如云原生集群新增一个POD资源对象,则会触发AddFunc处理器,该处理器并不做复杂的业务处理,只是将该对象的key放入到Workqueue队列中,然后Process Item组件作为消费端,不停从Workqueue中提取数据获取到新增PODkey,然后交由Handle Object组件,该组件通过Indexer组件提供的GetByKey()查询到该新增POD的所有元数据信息,然后基于该POD元数据就可以构建采集点信息,这样就实现kubernetes服务发现。

「为什么需要Workqueue队列?」

Resource Event Handlers组件注册自定义事件处理器,获取到事件时只是把对象key放入到Workerqueue中这种简单操作,而没有直接调用Handle Object进行事件处理,这里主要是避免阻塞影响整个informer框架运行。如果Handle Object比较耗时放到Resource Event Handlers组件中直接处理,可能就会影响到④⑤功能,所以这里引入Workqueue类似于MQ功能实现解耦。

源码分析

熟悉了上面Informer机制,下面以role=POD为例结合Prometheus源码梳理下上面流程。

1、创建和API Server交互底层使用的ListWatch工具;

2、基于ListWatch创建Informer

3、注册资源事件,分别对应资源创建、资源删除和资源更新事件处理;

❝ 这里的 podAddCountpodDeleteCountpodUpdateCount分别对应下面三个指标序列,指标含义也比较明显: prometheus_sd_kubernetes_events_total(role="pod", event="add")prometheus_sd_kubernetes_events_total(role="pod", event="delete")prometheus_sd_kubernetes_events_total(role="pod", event="update")role标识资源类型,包括:"endpointslice", "endpoints", "node", "pod", "service", "ingress"五种类型; event标识事件类型,包括:"add", "delete", "update"三种类型。 ❞

4、事件处理,AddFuncDeleteFuncUpdateFunc注册的事件处理逻辑一样,处理逻辑也比较简单:就是获取资源对象key,并将其写入到Workqueue中;

❝ 对于POD资源,这里的key就是:namespace/pod_name格式,比如key=test01/nginx-deployment-5ffc5bf56c-n2pl8。 ❞

5、给Workqueue注册一个无限循环处理逻辑,就能持续从Workqueue中取出key进行处理;

❝ 针对Pod里的每个Container上的每个port,都会生成一个对应采集点target,其中__address__就是PodIP+port组合。 ❞

6、最后启动Informer,让整个流程运转起来;

标签:

(责任编辑:news01)
今日要闻!社保缴费计算公式举例(社保缴费计算公式)

今日要闻!社保缴费计算公式举例(社保缴费计算公式)

1、社保缴费比例,各地不尽相同。2、试以以下比例为例(社保缴费基数为2000元):1 养老保险:单位缴20...
03-16 20:12:21
全球实时:长安马自达CX

全球实时:长安马自达CX

汽车讯3月16日,长安马自达MAZDACX-50首台下线仪式暨小定全面开启,新车如约而至并奉上小定权益:得699元1
03-16 17:47:32
湖人玩脱,这个水鬼意想不到,紫金军团内线被爆,为自大付出代价

湖人玩脱,这个水鬼意想不到,紫金军团内线被爆,为自大付出代价

作为交易截止日前后表现提升最大的球队,如今的湖人被寄予厚望,外界普遍认为他们能够后程发力拿到一张...
03-16 15:46:15
郭淮带什么战法_郭淮 天天报道

郭淮带什么战法_郭淮 天天报道

1、郭淮送妻子出发前一定是分析了来龙去脉,利害冲突,试想朝廷派来的使者来势汹汹,态度傲慢,严令必须...
03-16 14:05:09
创造与魔法鸡在哪最多_创造与魔法鸡哪里多

创造与魔法鸡在哪最多_创造与魔法鸡哪里多

1、创造与魔法游戏中,各大陆灯塔附近均有出现鸡,不过旧白金海湾的右边比较多。2、抓住鸡后,可以产出...
03-16 11:45:37
天天快资讯丨男童早熟的10大征兆_如何判断男孩性早熟

天天快资讯丨男童早熟的10大征兆_如何判断男孩性早熟

1、从很多方面来看,男性性早熟的第一个标志就是年龄。2、一般男孩9岁就会开始青春期。3、所以,如果在9...
03-16 09:55:14
当前短讯!不患无位患所以立不患莫己知求为可知也作文_不患无位患所以立不患莫己知求为可知

当前短讯!不患无位患所以立不患莫己知求为可知也作文_不患无位患所以立不患莫己知求为可知

1、里仁篇,子曰:不患无位,患所以立;不患莫己知。2、求为可知也(孔子说:不要担心没有官位,而要担...
03-16 05:00:33
电抗器知名厂家排名_电抗器知名厂家 视讯

电抗器知名厂家排名_电抗器知名厂家 视讯

1、低压电抗器到处都有,而且很多,因为门槛比较低。2、高压电抗器标准比较高,制作工艺复杂,所以相对...
03-16 01:02:16
笔记本电脑连wifi怎么连_笔记本怎么连接wifi

笔记本电脑连wifi怎么连_笔记本怎么连接wifi

欢迎观看本篇文章,小勉来为大家解答以上问题。笔记本电脑连wifi怎么连,笔记本怎么连接wifi很多人还不...
03-15 21:09:52
使用Java实现关键词匹配

使用Java实现关键词匹配

在计算机科学领域中,关键词匹配指的是在一个文本或数据集中查找特定的单词或短语。关键词匹配可以应用...
03-15 18:01:38
世界播报:家中灌装朋友圈售卖 重庆警方打掉一“减肥药”黑作坊

世界播报:家中灌装朋友圈售卖 重庆警方打掉一“减肥药”黑作坊

家中灌装朋友圈售卖重庆警方打掉一“减肥药”黑作坊
03-15 14:10:26
数据备份与恢复实用宝典_关于数据备份与恢复实用宝典简介

数据备份与恢复实用宝典_关于数据备份与恢复实用宝典简介

1、《数据备份与恢复实用宝典》是2008年中国铁道出版社出版的图书,作者是华师傅资讯。2、该书从数据安...
03-15 11:52:55
春风吹进广州制衣村

春风吹进广州制衣村

”  “不是我养工人,是工人养我”  虽然会经历各种风浪,但黄召华、刘宇和李勇都提到,“人”是工...
03-15 09:50:05
抢来的爱 你是我的妻

抢来的爱 你是我的妻

1、《抢来的爱。2、你是我的妻》是由粉妖娆编写。3、在红袖添香网上连载的小说。本文到此分享完毕,希望...
03-15 08:05:25
每日焦点!航天电器(002025):3月14日北向资金增持4.73万股

每日焦点!航天电器(002025):3月14日北向资金增持4.73万股

3月14日北向资金增持4 73万股航天电器。近5个交易日中,获北向资金减持的有3天,累计净减持7 35万股。...
03-15 03:20:44
全球观焦点:湖南11月22日本土新增“12+122”

全球观焦点:湖南11月22日本土新增“12+122”

据湖南卫健委通报,11月22日0--24时,湖南省报告新增确诊病例13例,其中境外输入病例1例;本土病例12例(郴州市4
03-14 22:41:32
03月14日从怒江出发到昭通的防疫政策 精选

03月14日从怒江出发到昭通的防疫政策 精选

03月14日从怒江出发到昭通的防疫政策(数据来源:本地宝)1、出怒江-:正常通行2、到昭通-:1月8日起云南...
03-14 19:56:36
太原本土人才能力素质提升补助申请入口(官网) 当前信息

太原本土人才能力素质提升补助申请入口(官网) 当前信息

太原本土人才能力素质提升补助申请入口:http: rsj taiyuan gov cn index shtml提醒:目前还没...
03-14 17:04:31
全球播报:五一游出手晚了?有三亚6000元热门酒店订光,出境机票翻倍…网友直呼“离谱”

全球播报:五一游出手晚了?有三亚6000元热门酒店订光,出境机票翻倍…网友直呼“离谱”

五一游出手晚了?有三亚6000元热门酒店订光,出境机票翻倍…网友直呼“离谱”
03-14 15:11:27
长沙公租房申请通过后多久可入住?

长沙公租房申请通过后多久可入住?

长沙公租房申请通过后多久可入住?更新时间:2023年3月14日经审核,对符合条件的申请人在门户网站和申请...
03-14 13:06:13
【天天速看料】icon标志简介

【天天速看料】icon标志简介

1、icon是一种图标格式,用于系统图标、软件图标等,这种图标扩展名为* icon、* ico。2、常见的软件或wind
03-14 10:53:45
每日信息:武林外传郭芙蓉身世_武林外传郭芙蓉早死了是怎么回事简介介绍

每日信息:武林外传郭芙蓉身世_武林外传郭芙蓉早死了是怎么回事简介介绍

1、1、2、电视剧《武林外传》中郭芙蓉被大家认为早死了是因为穿衣习惯的原因,剧中郭芙蓉从第二集开始装...
03-14 08:59:20
微资讯!数学教育学报_关于数学教育学报简介

微资讯!数学教育学报_关于数学教育学报简介

《数学教育学报》创刊于1992年,双月刊,是由天津市教育委员会主管,天津师范大学、中国教育学会联合主...
03-14 04:47:35
涉嫌污染水资源,特斯拉在柏林面临刑事指控

涉嫌污染水资源,特斯拉在柏林面临刑事指控

IT之家3月13日消息,据Electrek报道,特斯拉因柏林超级工厂涉嫌水污染和环境犯罪而面临“刑事”指控,环...
03-13 23:02:44
金庸小说顺序顺口溜横批_金庸小说顺序顺口溜

金庸小说顺序顺口溜横批_金庸小说顺序顺口溜

1、金庸小说顺序顺口溜是“飞雪连天射白鹿,笑书神侠倚碧鸳”,对应的顺序如下:一、《飞狐外传》(1960...
03-13 20:00:49
蓝色光标:蓝标传媒已成为微软广告官方代理商 公司将与微软开展基于OpenAI的技术产品合作_世界热讯

蓝色光标:蓝标传媒已成为微软广告官方代理商 公司将与微软开展基于OpenAI的技术产品合作_世界热讯

3月13日电,蓝色光标今日在互动平台表示,蓝色光标旗下蓝标传媒已正式宣布与微软广告达成战略合作,并成...
03-13 17:20:55
世界信息:杨紫琼,60岁走上人生巅峰

世界信息:杨紫琼,60岁走上人生巅峰

杨紫琼,60岁走上人生巅峰,成龙,杨紫琼,好莱坞,李连杰,周润发,洪金宝,张曼玉,骑士团,战争法,香港电影金像奖
03-13 15:08:35
当前简讯:燕麦科技:公司产品主要应用于FPC测试领域,测试FPC应用领域由手机、平板电脑、可穿戴设备等消费电子领域,开始向汽车电子领域、通信领域延伸

当前简讯:燕麦科技:公司产品主要应用于FPC测试领域,测试FPC应用领域由手机、平板电脑、可穿戴设备等消费电子领域,开始向汽车电子领域、通信领域延伸

同花顺(300033)金融研究中心3月13日讯,有投资者向燕麦科技提问,请问公司产品人工智能和6g方面都有哪...
03-13 12:17:01
一夜变天:美联储出手救市 USDC危机解除

一夜变天:美联储出手救市 USDC危机解除

一夜变天:美联储出手救市USDC危机解除,储户,加息,救市,美联储,存款人,fdic
03-13 09:54:26
管窥天下丨布林肯首访中亚意欲何为

管窥天下丨布林肯首访中亚意欲何为

【管窥天下】景晓玉阅读提示布林肯不该忽略俄罗斯在中亚的特殊地位和利益,以及中亚国家强烈的独立意识...
03-13 08:05:16

为您推荐

精彩推送