kubernetes - 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/
解决方案
如果 kubernetes 集群中没有任何 prometheus 组件,就不可能将指标获取到外部 prometheus 服务器。发生这种情况是因为集群网络与主机的网络隔离,并且无法直接从集群外部从 pod 中抓取指标。
请参阅使用 prometheus 从 k8s 集群外部监控 kubernetes GitHub 问题
有可以做的选项:
prometheus operator
使用或手动在集群内安装 prometheus -示例- 使用代理解决方案,例如这个来自 GitHub 上的同一线程 - k8s-prometheus-proxy
- 在集群中安装的 prometheus 之上,可以有外部 prometheus,
federation
因此所有日志都保存在集群之外。请参考普罗米修斯联盟。
同样重要的部分是kube 状态指标也应该安装在 kubernetes 集群中。如何设置它。
编辑:您也可以参考另一个 SO 问题/答案,它确认只有通过额外的步骤或 OP 才能通过另一个代理解决方案解决它。
推荐阅读
- html - 在自定义下拉菜单中隐藏额外的文本
- java - 无法使用 apache poi java 在 excel 中评估嵌套公式
- mysql-python - MYSQL 连接没有选择新提交的数据
- jquery - 使用 jQuery 过滤 json 数组
- node.js - NodeJS 和无服务器框架在调用 lambda 函数时找不到模块“chrome-aws-lambda”
- javascript - 如何通过我的自定义构造函数在 Node JS 中扩展一个类?
- c# - 如何在排除某些区域的同时进行触摸检测?
- php - 通过数据透视表将多张照片上传到数据库的问题
- swift - 如何创建可重用的 UIAlert ActionSheet 作为 UIViewController 扩展?
- python - 获取二维numpy数组中大于阈值的元素的列数