普罗米修斯汽车发现K8s

时间:2017-12-06 19:36:29

标签: kubernetes prometheus

有人可以指导K8的自动发现配置。 Prometheus服务器位于群集之外。我尝试了Service Discovery With Kubernetes和此discussion

中提及的人
  

我还不是K8s专家,足以解释这里的所有细节,但是   从根本上说,完全可以在外面运行普罗米修斯   集群(以及冗余跨集群等所需的集群   元监测)。参看中的in_cluster配置选项   http://prometheus.io/docs/operating/configuration/#kubernetes-sd-configurations-kubernetes_sd_config   。如果你在外面跑,你需要跳过证书箍。

所以,我做了一个简单的配置

  - job_name: 'kubernetes'

    kubernetes_sd_configs:
      -
        # The API server addresses. In a cluster this will normally be
        # `https://kubernetes.default.svc`. Supports multiple HA API servers.
        api_servers:
          - https://xxx.xx.xx.xx

        # Run in cluster. This will use the automounted CA certificate and bearer
        # token file at /var/run/secrets/kubernetes.io/serviceaccount/ in the pod.
        in_cluster: false

        # Optional HTTP basic authentication information.
        basic_auth:
        username: prometheus
        password: secret

        # Retry interval between watches if they disconnect.
        retry_interval: 5s

获取unknown fields in kubernetes_sd_config: api_servers, in_cluster, retry_interval"或其他一些缩进错误

sample configuration中,他们提到ca_file:。如何从K8s获取该证书文件,或者有没有办法指定K8s config文件(〜/ .kube / config)

3 个答案:

答案 0 :(得分:4)

通过挖掘我发现的源代码,如果配置中没有提供api_server,那么普罗米修斯总是使用群集配置。{/ p>

discovery/kubernetes/kubernetes.go#L90-L96不知道Kubernetes配置参数是什么,但源代码确实如此(docs)。因此,没有名为api_servers的列表,而是名为api_server的单个参数。

所以你的配置看起来应该是这样的(未经测试):

  - job_name: 'kubernetes'

    kubernetes_sd_configs:
      -
        # The API server addresses. In a cluster this will normally be
        # `https://kubernetes.default.svc`. Supports multiple HA API servers.
        api_server: https://xxx.xx.xx.xx

        # Optional HTTP basic authentication information.
        basic_auth:
          username: prometheus
          password: secret

        # specify the CA
        tls_config:
          ca_file: /path/to/ca.crt
          ## If the actual CA file isn't available you need to disable verification:
          # insecure_skip_verify: true

我不知道retry_interval参数的来源,但AFAIK这不是Kubernetes配置参数,它也不是Prometheus配置的一部分。

答案 1 :(得分:1)

在@svenwltr回答的帮助下,我创建了可以在K8s集群中启动的docker image。查看我的repo

答案 2 :(得分:0)

  

如何检索该文件取决于您的群集设置

     

如何从K8s

获取该证书文件

默认情况下,kubernetes将客户端CA证书文件存储在/etc/kubernetes/pki/ca.crt以及/var/run/secrets/kubernetes.io/serviceaccount/ca.crt的{​​{1}}使用的ConfigMap中。