【问题标题】:Prometheus kuberentes-pods Get "https:// xx.xx.xx:443 /metrics": dial tcp xx.xx.xx:443: connect: connection refusedPrometheus kuberentes-pods Get "https://xx.xx.xx:443 /metrics": dial tcp xx.xx.xx:443: connect: connection denied
【发布时间】:2021-09-25 14:26:04
【问题描述】:

我已经使用 [this][1] 在其中一个 Kubernetes 集群节点上配置了 Prometheus。之后我添加了以下prometheus.yml 文件。我可以列出节点和 apiservers,但对于 pod,所有的 pod 都显示出来并出现错误:

Get "https:// xx.xx.xx:443 /metrics": dial tcp xx.xx.xx:443: connect: connection refused and for some pods the status is unknown. 

谁能指出我在这里做错了什么?

Cat prometheus.yml



global:
  scrape_interval: 1m
 
scrape_configs:
  - job_name: 'prometheus'
    scrape_interval: 5s
    static_configs:
      - targets: \['localhost:9090'\]
 
# metrics for default/kubernetes api's from the kubernetes master
  - job_name: 'kubernetes-pods'
    kubernetes_sd_configs:
    - role: pod
      bearer_token_file: /dfgdjk/token
      api_server: https://masterapi.com:3343
      tls_config:
        insecure_skip_verify: true
    tls_config:
      insecure_skip_verify: true
    bearer_token_file: /dfgdjk/token
    scheme: https
    relabel_configs:
    - action: labelmap
      regex: __meta_kubernetes_pod_label_(.+)
    - source_labels: \[__meta_kubernetes_namespace\]
      action: replace
      target_label: kubernetes_namespace
    - source_labels: \[__meta_kubernetes_pod_name\]
      action: replace
      target_label: kubernetes_pod_name
 
# metrics for default/kubernetes api's from the kubernetes master
  - job_name: 'kubernetes-apiservers'
    kubernetes_sd_configs:
    - role: endpoints
      api_server: https://masterapi.com:3343
      bearer_token_file: /dfgdjk/token
      tls_config:
        insecure_skip_verify: true
    tls_config:
      insecure_skip_verify: true
    bearer_token_file: /dfgdjk/token
    scheme: https
    relabel_configs:
    - source_labels: \[__meta_kubernetes_namespace, __meta_kubernetes_service_name, __meta_kubernetes_endpoint_port_name\]
      action: keep
      regex: default;kubernetes;https][1]
 


  [1]: https://devopscube.com/install-configure-prometheus-linux/

【问题讨论】:

  • 欢迎来到社区!我可以看到您正在关注一篇关于在linux 主机上设置 prometheus 的文章,而您实际上应该专注于为 kubernetes 做这件事。例如。同一网站has dedicated article for kubernetes。如果仍然没有运气。请分享您执行的步骤以及您认为卡在哪里。
  • 我的管理层不希望 Prometheus 在 k8 中运行,因此我安装在 Linux 服务器上。我可以列出节点,但对于每个 pod 的指标,ip 的错误输出和连接被拒绝

标签: kubernetes prometheus kubernetes-pod


【解决方案1】:

如果 kubernetes 集群中没有任何 prometheus 组件,就不可能将指标获取到外部 prometheus 服务器。发生这种情况是因为集群网络与主机的网络隔离,并且无法直接从集群外部从 pod 中抓取指标。

请参考Monitoring kubernetes with prometheus from outside of k8s cluster GitHub issue

有哪些可以做的选择:

  • 使用prometheus operator或手动-example在集群内安装prometheus
  • 使用代理解决方案,例如这个来自 GitHub 上的同一线程 - k8s-prometheus-proxy
  • 在安装在集群内的 prometheus 之上,可以在federation 中拥有外部 prometheus,因此所有日志都保存在集群外部。请参考prometheus federation

同样重要的部分是kube state metrics 也应该安装在 kubernetes 集群中。 How to set it up.

编辑:您也可以参考another SO question/answer,它确认只有通过额外的步骤或 OP 才能通过另一个代理解决方案解决它。

【讨论】:

  • @moonkotte 感谢您的输入,我能够安装 kube-state-metrics 但我认为当服务发现在 Prometheus 中工作时我们不需要 kube-state-metrics。我需要找到一个 grafana 仪表板,它将使用 kube-state-metrics 并显示 pod 内存使用情况、网络。当 Prometheus 未安装在 kubernetes 集群内并带有服务发现选项时,k8s-prometheus-proxy 是否可以获取集群外的指标?
猜你喜欢
  • 2021-09-24
  • 2022-10-14
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-08-12
  • 2020-10-06
  • 1970-01-01
相关资源
最近更新 更多