首页 > 资讯 > > 正文

世界今亮点!【云原生 • Prometheus】云原生kubernetes服务发现原理图解

来源:腾讯云 2023-03-23 21:09:20

云原生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,让整个流程运转起来;

x
推荐阅读

世界今亮点!【云原生 • Prometheus】云原生kubernetes服务发现原理图解

2023-03-23 21:09:20

上海排定全年促销计划表,今年有6个主题消费季

2023-03-23 19:53:39

观焦点:逾期无力还款会产生哪些影响?提前还款需要去银行办理吗?

2023-03-23 18:21:12

中元节为什么叫鬼节 天天热推荐

2023-03-23 17:58:04

焦点快报!MFG将在2023年投资5000万英镑建设充电中心

2023-03-23 16:47:34

天天视讯!韩剧秘密(韩剧秘密剧情)

2023-03-23 16:06:29

天天即时:中路股份3月23日盘中跌停

2023-03-23 14:42:12

微动态丨生育保险没交满12个月怎么办?生育保险没有交满一年能报销吗?

2023-03-23 13:14:23

今日热讯:专家解释为何部分感染者症状超出了当初的乐观预计

2023-03-23 11:54:16

cf图标如何点亮|全球看点

2023-03-23 10:27:57
相关新闻

世界今亮点!【云原生 • Prometheus】云原生kubernetes服务发现原理图解

2023-03-23 21:09:20

上海排定全年促销计划表,今年有6个主题消费季

2023-03-23 19:53:39

观焦点:逾期无力还款会产生哪些影响?提前还款需要去银行办理吗?

2023-03-23 18:21:12

中元节为什么叫鬼节 天天热推荐

2023-03-23 17:58:04

焦点快报!MFG将在2023年投资5000万英镑建设充电中心

2023-03-23 16:47:34

天天视讯!韩剧秘密(韩剧秘密剧情)

2023-03-23 16:06:29

天天即时:中路股份3月23日盘中跌停

2023-03-23 14:42:12

微动态丨生育保险没交满12个月怎么办?生育保险没有交满一年能报销吗?

2023-03-23 13:14:23

今日热讯:专家解释为何部分感染者症状超出了当初的乐观预计

2023-03-23 11:54:16

cf图标如何点亮|全球看点

2023-03-23 10:27:57

榃阳村

2023-03-23 10:23:10

环球快讯:这个很不起眼的产品卖了10W+

2023-03-23 09:04:02

发烧顶级成品功放板-发烧功放机

2023-03-23 06:49:32

排山藏机图_环球今日讯

2023-03-23 02:07:27

中国汽车工业协会:理性对待本轮汽车促销 市场应尽快回归正常秩序|全球热闻

2023-03-22 22:40:55

2020中秋国庆法定假怎么算 国庆中秋放假安排2020法定节假日|全球讯息

2023-03-22 21:22:06

非法批准征用土地罪司法解释

2023-03-22 19:58:29

天天观点:冰轮环境:高管配偶短线交易公司股票

2023-03-22 18:15:22

三十晚上,和大年初一能洗澡洗衣服吗?有什么忌讳的?

2023-03-22 17:16:02

花生用它泡着吃,可以去除油脂降低胆固醇哦,效果不错哦

2023-03-22 16:58:19

清越科技(688496)3月22日主力资金净买入487.39万元

2023-03-22 15:37:57

环球速讯:万里扬: 公司根据储能市场发展情况和相关政策情况推动公司在浙江的储能电站建设

2023-03-22 13:55:13

天天最资讯丨谷歌Bard姗姗来迟:只懂英文不会编程 但在这方面却赢了ChatGPT?

2023-03-22 11:45:22

江西13岁女童遭陌生男子强奸致死案一审宣判-环球即时看

2023-03-22 09:55:32

当前资讯!英德红茶歌_关于英德红茶歌的简介

2023-03-22 07:51:51

电梯安装需要什么资质 天天实时

2023-03-22 03:48:07

季后赛该换赛制?专家建议打破东西部界限:最好的球队相逢总决赛|全球播资讯

2023-03-21 23:12:13

在雄安办理车驾管业务,这些事要知道 焦点短讯

2023-03-21 20:12:29

全球消息!郴州投集:5.00亿元中期票据获准注册

2023-03-21 18:03:14

世界即时看!社保中断怎么补办_社保中断

2023-03-21 15:51:55

最新投诉数据来了!交通银行平均每千万个人客户投诉量最多,位居国有大行第一

2023-03-21 14:08:45

宅男必看的十部电影大盘点_宅男必看的十大动漫|全球热文

2023-03-21 11:52:42

漫步者3月21日快速反弹

2023-03-21 10:01:02

铁矿石价格“非理性”上涨 监管层频频发声剑指价格炒作 全球观焦点

2023-03-21 07:48:53

环球要闻:苗木代培合同范本(合集13篇)

2023-03-21 03:54:15

ps盖印可见图层是什么意思(盖印可见图层是什么意思)

2023-03-20 23:02:36

全球要闻:什么是软装(什么是软装)

2023-03-20 20:21:24

早读:懂得给予,才能收获快乐!-环球观天下

2023-03-20 17:57:39

频繁申请网贷被拒哪个能下款?十大征信花负债高也能过的网贷

2023-03-20 16:13:08

焦点热讯:花旗:维持香港中华煤沽售评级 目标价升至6港元

2023-03-20 14:17:32

全球热资讯!中国电商霸榜西班牙购物App前三,阿里占了俩

2023-03-20 11:53:17

天天新动态:贵州黔西一煤矿发生煤与瓦斯突出事故 5人被困1人遇难

2023-03-20 09:48:45

巴萨本赛季至今踢了13场西甲主场比赛,11胜2平保持不败-环球热头条

2023-03-20 07:57:29

四氟垫片耐温多少度_四氟垫

2023-03-20 02:45:46

夏天到了,是时候戴潜水表浪起来了

2023-03-19 21:46:51

万径人踪灭的下一句_万径人踪灭

2023-03-19 17:55:59

浙江温州“守梅人”以花为“媒” 打造“花海经济”|全球关注

2023-03-19 15:04:48

扛起球队!琼斯20+10+10轰生涯首个三双

2023-03-19 11:17:17

全球聚焦:披瞽

2023-03-19 07:54:45

自曝欠款5700万元、门店人去楼空,连亏9年的克莉丝汀所有门店暂停运营-当前短讯

2023-03-19 02:16:24

期货法律法规视频_期货法律法规 全球报资讯

2023-03-18 21:53:10

全球观察:《回声》宋佳领衔,张嘉译做配,冯导这剧群星云集成功让观众入坑

2023-03-18 17:59:37

天天热推荐:iqoopro怎么设置压感按键

2023-03-18 14:52:11

今日热文:车市价格战愈演愈烈:降价与保价各出奇招

2023-03-18 11:18:26

全球今日讯!我是阿斗我不用人扶好看_我是阿斗我不用人扶

2023-03-18 08:04:21

截至发稿,道指成交量报6.15亿股(上一交易日为4.44亿股),纳指成交量报43.92亿股(上一交易日为46.35亿股),标普500指数成交量报32.88亿股(上一交易日为36.2亿股)

2023-03-18 04:01:10

非天夜翔全部小说名(非天夜翔作品集)_天天看点

2023-03-17 23:03:40

方大特钢:拟发行可转债募资不超过31亿元 环球最资讯

2023-03-17 20:08:14

焦点要闻:北京:2024年将全面实施音乐、舞蹈、书法等6个艺术类专业全市统一专业考试

2023-03-17 17:55:22

法兴银行:欧洲央行加息对欧元区国家息差的影响越来越小

2023-03-17 16:00:54

国标码和内码转换_国标码转换为内码

2023-03-17 13:47:54

世界百事通!黄河口信息港招聘信息

2023-03-17 11:13:06

天天速读:人民币兑美元中间价报6.9052元,上调97个基点

2023-03-17 09:19:50

当前看点!高盛:美国的银行存款开始转向货币市场基金

2023-03-17 07:12:52

焦点关注:手机迅雷下载太慢怎么解决

2023-03-17 01:58:56

世界热消息:手机丢了微信和支付宝怎么保证安全_手机丢了支付宝怎么办

2023-03-16 22:17:50

观天下!河北:促进汽车消费 提振消费信心

2023-03-16 19:14:01

写一篇周记关于中秋的日记 写一篇周记关于中秋的 环球今头条

2023-03-16 17:12:12

焦点要闻:个人思想道德风险个人自查(个人思想道德风险有哪些)

2023-03-16 15:00:35

什么是7日年化收益率_到期收益率计算公式

2023-03-16 12:57:11

环球快看点丨浓眉轮休湖人不敌火箭波特砍27分 里夫斯24+7浓眉轮休小波特27+9+6湖人不敌7人上双的火箭

2023-03-16 10:57:23

天龙集团:公司为广告主提供互联网广告相关的专业媒介运营服务,当前的主要客户均为企业客户-焦点日报

2023-03-16 09:18:55

张陆的个人资料 全球新视野

2023-03-16 08:54:45

小娃娃长牙齿的顺序_小孩长牙顺序-天天短讯

2023-03-16 04:47:58

电磁炉坏了怎么修啊_电磁炉巧修速修一点通

2023-03-16 00:02:50

梅赛德斯奔驰通过Nightfall Edition扩展了C级范围

2023-03-15 21:06:58

宠物智能硬件,难让铲屎官“解放双手”

2023-03-15 18:07:30

开不完的会员!网易云音乐车机版听歌要加钱

2023-03-15 16:00:11

西游记一到七回概括150字_西游记一到七回概括_热闻

2023-03-15 14:01:23

祸乱君心医术攻略_祸乱君心医治风寒的方子

2023-03-15 11:47:28

今日精选:全面注册制紧锣密鼓推进 网上发行启动在即

2023-03-15 09:52:31

北宋以前还没有种植棉花,冬天没有棉衣棉被,古人是如何扛过去的

2023-03-15 07:44:56

PFA:呼吁彻底重置足球赛程,否则球员将过度疲劳身体崩溃 全球新视野

2023-03-15 03:08:29

天天热门:沃森生物:公司长期聚焦创新型疫苗产品的研发、生产和销售主业

2023-03-14 22:27:41

深圳华强发布2022年度业绩,净利润9.52亿元,增长7.81%,拟10股派3元

2023-03-14 19:34:12

库里:我们想让客场的表现好转,这样就不会被问这个问题了 天天观速讯

2023-03-14 17:09:35

2场大爆冷!绿军惜败,76人坐享渔利!湖人升至第9,勇士反超快船_环球观点

2023-03-14 15:04:37

世界观察:有求必应?劳力士为提高产能 将一次性新建四个工厂

2023-03-14 13:07:26

环球头条:《蜗居》:小贝“不借六万”的秘密,暴露了男人穷酸的丑态

2023-03-14 11:02:10

全球首枚,美国再次发射失败!全球首枚3D打印火箭

2023-03-14 08:54:53

当前速讯:何意百炼钢化为绕指柔是化学变化吗_百炼钢化为绕指柔什么意思

2023-03-14 04:02:43

义乌户外用品出口订单激增详细内容|速递

2023-03-13 22:49:14

贝达药业:BPI-472372片获准在晚期实体瘤中开展临床试验

2023-03-13 19:22:34

天天视讯!厍是什么意思_厍

2023-03-13 17:00:32

全球要闻:李琳电视剧吻戏抖音_李琳电视剧

2023-03-13 15:08:12

全球热推荐:福田保障性住房轮候申请,全市域通办!

2023-03-13 12:13:57

今日看点:gdi32dll缺失修复_gdi42dll丢失怎么办教程

2023-03-13 10:07:12

全球新资讯:3-1横扫日本张本智和,新加坡大满贯2-3惜败,向鹏无缘再胜对手

2023-03-13 07:47:16

【环球时快讯】正规网贷前十名-国家承认的10家正规网贷

2023-03-13 02:09:03

多家港股企业公告在硅谷银行存款情况 有公司持有超千万美元存款_世界头条

2023-03-12 21:04:32