0

在 Prometheus-operator 中,我想将kube-state-metrics副本数增加到 2。如果我增加副本数,并且由于默认的服务发现角色是endpoints,Prometheus 将抓取每个 pod,因此我会将所有指标抓取两次,这将导致多对 -很多问题,这是一种浪费。

我遇到的问题是一个节点出现故障,kube-state-metrics其中包括其他节点。在安排新的 pod 之前,我不知道集群上发生了什么。有kube-state-metrics多余的对我来说很重要。

如何将kubernetes_sd_configs角色配置为kube-state-metricsservice以便将服务作为负载均衡器,而不是服务中的每个 pod?或者 - 我如何缩放kube-state-metricspod(不分片)?

当前配置:

- job_name: monitoring/prometheus-operator-kube-state-metrics/0
  kubernetes_sd_configs:
  - role: endpoints

我想要的是:

- job_name: monitoring/prometheus-operator-kube-state-metrics/0
  kubernetes_sd_configs:
  - role: service
4

1 回答 1

2

是的你可以。

虽然您的抓取工作endpoints是过滤包含注释的服务,但prometheus.io/scrape: "true"您可以选择使用不同的注释来抓取服务本身。

如果您有这样的工作,可以单独抓取每个端点:

- job_name: kubernetes-endpoints                                                                                  
  bearer_token_file: /var/run/secrets/kubernetes.io/serviceaccount/token
  kubernetes_sd_configs:
    - role: endpoints
  relabel_configs:
    - source_labels: [__meta_kubernetes_service_annotation_prometheus_io_scrape]
      action: keep
      regex: "true"

您可以添加另一个作业,该作业只会将服务作为端点抓取:

- job_name: kubernetes-services
  params:
    module: [http_2xx]
  kubernetes_sd_configs:
    - role: service
  relabel_configs:
    - source_labels: [__meta_kubernetes_service_annotation_prometheus_io_probe]
      action: keep
      regex: "true"

然后只需确保在服务上设置正确的注释,如下所示:

apiVersion: v1                
kind: Service                                                                                                     
metadata:                                  
  annotations:
    prometheus.io/path: /metrics
    prometheus.io/probe: "true"
于 2020-11-10T06:27:55.687 回答