kube-state-metrics-无法列出* v1.Pod:text / html的序列化程序; charset = utf-8不存在

时间:2018-09-25 06:55:39

标签: kubernetes prometheus

我正在尝试设置对我们的Kubernetes集群的监视,但这并不容易。我第一次尝试在专用VM上按照可以在Internet和prometheus.io上找到的配置来抓取所有指标,但是我读了好几次,这并不是最好的方法。我发现使用kube-state-metrics的建议已完成,吊舱正在运行,并且可以从外部访问指标(Azure下文)。因此http://xxx.xxx.xxx.xxx:8080/metrics向我显示了正确的结果。

当我将其添加到配置中时:

- job_name: 'Kubernetes-Nodes'
  scheme: http
  #tls_config:
    #insecure_skip_verify: true
  kubernetes_sd_configs:
  - api_server: 'http://xxx.xxx.xxx.xxx:8080'
    role: endpoints
    namespaces:
      names: [default]
    #tls_config:
      #insecure_skip_verify: true
    bearer_token: %VERYLONGLINE%
  relabel_configs:
  - action: labelmap
    regex: __meta_kubernetes_service_label_(.+)
  - source_labels: [__meta_kubernetes_namespace]
    action: replace
    target_label: kubernetes_namespace
  - source_labels: [__meta_kubernetes_service_name]
    action: replace
    target_label: kubernetes_name

我可以找到的日志是:

Sep 25 06:53:59 monitoring001 prometheus[59005]: level=error ts=2018-09-25T06:53:59.636669498Z caller=main.go:234 component=k8s_client_runtime err="github.com/prometheus/prometheus/discovery/kubernetes/kubernetes.go:288: Failed to list *v1.Pod: serializer for text/html; charset=utf-8 doesn't exist"

有人有想法吗?

谢谢

1 个答案:

答案 0 :(得分:1)

终于找到了问题!我的Prometheus位于Kubernetes集群外部的专用VM上。

Kube-state-metrics正在从群集外部的IP公开指标,因此,不必像kubernetes对象那样废弃指标,而只需要像一个简单目标一样废弃指标