首页 > 解决方案 > Prometheus kuberentes-pods Get "https://xx.xx.xx:443 /metrics": dial tcp xx.xx.xx:443: connect: connection denied

问题描述

我已经使用 [this][1] 在其中一个 kubernetes 集群节点上配置了 Prometheus。之后我添加了以下prometheus.yml文件。我可以列出节点和 apiserver,但对于 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/

标签: kubernetesprometheuskubernetes-pod

解决方案


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

请参阅使用 prometheus 从 k8s 集群外部监控 kubernetes GitHub 问题

有可以做的选项:

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

同样重要的部分是kube 状态指标也应该安装在 kubernetes 集群中。如何设置它

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


推荐阅读