kubernetes+ prometheus自动伸缩的设计与实现(二)

释放双眼,带上耳机,听听看~!

上一篇介绍了kubernetes+ prometheus中k8s的hpa的部分,但是没有介绍转化的部分,下面接着介绍
如果每次hpa调用查询metrics的指标我就去调用prometheus,但指标在prometheus里面是否存在,我们先要本地缓存一下,免给prometheus带来很大压力,所以本地缓存还有应该有的,主要缓存prometheus里面存在的指标,定义如下:

上面metrics保存prometheus的指标。当然本地缓存指标数据还有定期更新。

通过updateMetrics更新本地数据,这个方法首先是查询数据

先是通过Series获取指标序列,一个是容器的container,另一个是命名空间的namespace的。

这里通过prometheus的series接口获取指标序列,从而更新本地数据

这里,如果指标是container_开头、包含namespace指标的和其它三种情况处理,先看processContainerSeries里面

因为上面重写了String方法

所以key是pods/memory_swap(namespaced)。

如果是processNamespacedSeries或者processRootScopedSeries都是类似的,不过指标组不再是pod,譬如ingress_http_hits_total{pod=”foo”,service=”bar”,ingress=”baz”,namespace=”ns”}这样的一个指标
会返回三个GroupResources: “pods”, “services”, and “ingresses”.
这样指标就会变成services/ingress_http_hits_total。
补充一下,series 接口是prometheus查询数据序列的接口eg:

这样就能获取到指标序列了并且指标的label。这样prometheus本地指标缓存功能有了。

给TA打赏
共{{data.count}}人
人已打赏
安全运维

故障复盘的简洁框架-黄金三问

2021-9-30 19:18:23

安全运维

OpenSSH-8.7p1离线升级修复安全漏洞

2021-10-23 10:13:25

个人中心
购物车
优惠劵
今日签到
有新私信 私信列表
搜索