文章目录
- 背景
- 环境
- 操作
- 方法1:kube_endpoint_address_not_ready选择大于0的
- 验证方式1
- 验证方式2
- 方法2:kube_endpoint_address_available选小于0的
- 方法3:kube_endpoint_address{ready="false"}选大于0的
- 解释
- 参考
author: ningan123
date: 2022-12-27 10:13
updated: 2022-12-27 12:12
背景
想要一个指标来告警k8s中endpoints中没有ip的项
类似于下面图中,有些ep是没有ip的,想要把这些项及时告警,及时处理查看原因
可以看到,总共有7个ep,有4个是正常的,有3个是异常的(kube-dns、kubernetes-dashboard和metrics-server)
环境
kube-state-metrics版本:v2.6.0
操作
# HELP kube_endpoint_address_available (Deprecated since v2.6.0) Number of addresses available in endpoint.
# TYPE kube_endpoint_address_available gauge
# HELP kube_endpoint_address_not_ready (Deprecated since v2.6.0) Number of addresses not ready in endpoint
# TYPE kube_endpoint_address_not_ready gauge
# HELP kube_endpoint_address Information about Endpoint available and non available addresses.
# TYPE kube_endpoint_address gauge
方法1:kube_endpoint_address_not_ready选择大于0的
总共有7条,大于0的就是异常的
进而,我们可以看到,kube-dns显示的是3,而kubernetes-dashboard和metrics-server显示的是1,这个是为什么呢?
验证方式1
通过标题背景中的图片可以看到,ep中显示的是ip:port,我们可以看下这几个ep的具体细节:
如下图,kube-dns有1个ip,3个端口;kubernetes-dashboard有1个ip,1个端口;metrics-server有1个ip,1个端口
验证方式2
我们找来另一个集群k2,部署方式和k是一样的。
查看k2的这3个ep,可以看到分别是3、1、1.
方法2:kube_endpoint_address_available选小于0的
总共有7条,小于0的就是异常的
nginx那为什么显示的是3呢?
查看该集群,可以看到nginx下面有3项
方法3:kube_endpoint_address{ready=“false”}选大于0的
因为选择的是ready=“false”,所以显示出来的就是异常的
我们再选择一下ready=“true”
可以看到有6项,这是为什么呢?
仔细一看,kube_endpoint_address指标加入了ip的label,nginx因为有3个ip,所以被拆成了3项
解释
v2.6.0加入了新的指标kube_endpoint_address
详情参考:https://github.com/kubernetes/kube-state-metrics/releases
我们跳到1761,可以看到kube_endpoint_address将替代kube_endpoint_address_available和kube_endpoint_address_not_ready,怪不得用2.6.0采集出来的指标,显示kube_endpoint_address_available和kube_endpoint_address_not_ready Deprecated since v2.6.0呢
详情见:https://github.com/kubernetes/kube-state-metrics/pull/1761
结束~
寄语:你走的每一步都算数!
参考
https://github.com/kubernetes/kube-state-metrics/releases
https://github.com/kubernetes/kube-state-metrics/pull/1761