在 prometheus-operator 中扩展 kube-state-metrics
Scaling kube-state-metrics in prometheus-operator
在 Prometheus-operator 中,我想将 kube-state-metrics
个副本增加到 2 个。如果我增加副本,并且由于默认服务发现角色是 endpoints
,Prometheus 将抓取每个 pod,因此我会把所有指标都抓取两次,这会导致多对多问题,这是一种浪费。
我遇到的问题是一个节点出现故障,上面有 kube-state-metrics
等。在安排新的 pod 之前,我不知道集群上发生了什么。 kube-state-metrics
冗余对我来说很重要。
如何将 kube-state-metrics
的 kubernetes_sd_configs
角色配置为 service
,以便将服务作为负载均衡器而不是服务中的每个 pod?或者 - 如何缩放 kube-state-metrics
pods(不分片)?
当前配置:
- 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
是的,你可以。
虽然您的抓取工作 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"
在 Prometheus-operator 中,我想将 kube-state-metrics
个副本增加到 2 个。如果我增加副本,并且由于默认服务发现角色是 endpoints
,Prometheus 将抓取每个 pod,因此我会把所有指标都抓取两次,这会导致多对多问题,这是一种浪费。
我遇到的问题是一个节点出现故障,上面有 kube-state-metrics
等。在安排新的 pod 之前,我不知道集群上发生了什么。 kube-state-metrics
冗余对我来说很重要。
如何将 kube-state-metrics
的 kubernetes_sd_configs
角色配置为 service
,以便将服务作为负载均衡器而不是服务中的每个 pod?或者 - 如何缩放 kube-state-metrics
pods(不分片)?
当前配置:
- 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
是的,你可以。
虽然您的抓取工作 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"