我们如何在 Prometheus 指标中包含 K8s 对象的自定义标签/注释?

Iva*_*cki 2 kubernetes prometheus kube-state-metrics

例如,我有 StatefulSet,其上应用了自定义标签/注释。

每个人都提到应该使用这两个指标,因为kube-state-metrics也应该生成标签/注释。

kube_statefulset_annotations
kube_statefulset_labels
Run Code Online (Sandbox Code Playgroud)

问题是,我只能看到默认的(jobinstancenamespace、...),但看不到额外添加的标签/注释。

我正在测试的清单示例:

apiVersion: apps/v1
kind: StatefulSet
metadata:
  annotations:
    label_network: "111"
  labels:
    app: testing-labels
    label_STATEFULSET_LABEL: "111"
    label_network: "111"
  name: testing-labels
  namespace: sre-test
spec:
  selector:
    matchLabels:
      app: testing-labels
  serviceName: testing-labels-headless
  template:
    metadata:
      labels:
        app: testing-labels
        label_network: "111"
Run Code Online (Sandbox Code Playgroud)

我添加了很多不同的标签/注释,但kube_statefulset_labels{statefulset='testing-labels'}返回:

kube_statefulset_labels{container="kube-rbac-proxy-main",instance="10.2.23.229:8443",job="kube-state-metrics",namespace="sre-test",prometheus="aws-monitoring/k8s “,prometheus_replica =“prometheus-k8s-1”,statefulset =“测试标签”}

...当然不包含任何额外的标签。有什么想法会有帮助吗?

版本:

  • kube-状态-指标:v2.5.0
  • kube-rbac-代理:v0.12.0

Iva*_*cki 5

为了获得自定义指标,kube_statefulset_labels我们需要添加

--metric-labels-allowlist作为 kube-state-metrics 中的标志。(文档

在这个特定的例子中,它将是:

--metric-labels-allowlist=statefulsets=[label_network]
Run Code Online (Sandbox Code Playgroud)