提问者:小点点

普罗米修斯自动发现K8s


有人能指导K8s的自动发现配置吗?普罗米修斯服务器在集群之外。我尝试了库伯内特斯的服务发现和本讨论中提到的人

我还不是一个足以解释这里所有细节的K8s专家,但从根本上说,在集群之外运行Prometheus是完全可能的(并且对于冗余的跨集群元监控之类的事情是必需的)。参见http://prometheus.io/docs/operating/configuration/#kubernetes-sd-configurations-kubernetes_sd_config中的in_cluster配置选项。如果你在外面运行它,你需要跳过证书环。

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

  - 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

获取kubernetes_sd_config中的未知字段:api_servers、in_cluster、retry_interval或其他缩进错误

在示例配置中,他们提到了ca_file:。如何从K8s获取证书文件,或者有什么方法可以指定K8sconfig文件(~/.库贝/config)


共3个答案

匿名用户

通过挖掘我发现的源代码,普罗米修斯总是使用集群内配置,如果配置中没有提供api_server发现/kubernetes/kubernetes. go#L90-L96)。

不知何故,文档没有提到库伯内特斯配置参数,但源代码有(config/config. go#L1026-L1037)。因此,没有名为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这不是库伯内特斯配置参数,也不是普罗米修斯配置的一部分。

匿名用户

在@svenwltr答案的帮助下,我创建了可以在K8s集群中启动的docker映像。检查我的回购

匿名用户

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

如何从K8s获取该证书文件

默认情况下,kubernetes将客户端CA证书文件存储在/etc/kubernetes/pki/ca. crt中,也存储在kubeconfig使用的ConfigMap中的/var/run/kubernetes.io/serviceaccount/ca.crt中。