【发布时间】:2021-06-16 10:25:20
【问题描述】:
当我的 pod 尝试查询任何 kubelet 端点(任何端口)时,它们会立即获得 connection refused。
我的目标是让 prometheus 从 cadvisor 获取这些指标,我正在尝试创建一个 ServiceMonitor 来抓取 cadvisor 指标(有关 pod 级别资源使用情况的信息)。
从集群上的任何 pod 尝试 wget 会导致以下结果:
$ wget 10.116.0.10:4194
Connecting to 10.116.0.10:4194 (10.116.0.10:4194)
wget: can't connect to remote host (10.116.0.10): Connection refused
我在 DigitalOcean 托管的 Kubernetes 上运行
编辑:上述情况发生在任何端口,而不仅仅是 4194
服务监控:
apiVersion: monitoring.coreos.com/v1
kind: ServiceMonitor
metadata:
name: kubelet
labels:
app: prometheus
spec:
jobLabel: k8s-app
endpoints:
- port: cadvisor
interval: 15s
honorLabels: true
tlsConfig:
insecureSkipVerify: true
selector:
matchLabels:
k8s-app: kubelet
app.kubernetes.io/managed-by: prometheus-operator
app.kubernetes.io/name: kubelet
namespaceSelector:
matchNames:
- kube-system
【问题讨论】:
-
在 Kubernetes 上,cAdvisor 位于 kubelet 二进制文件中,您应该知道。因此,您可以安装
metrics-server并直接从 kubernetes API 中删除数据,就像 Prometheus 打算做的那样。 -
@HectorVido 我很想抓取
metrics-server,但它不是 Prometheus 格式,也没有列出单个端点上的所有指标。 -
使用kube-prometheus-stack时,抓取kubelet cadvisor指标应为enabled by default。如果您没有使用 promethus 堆栈,您仍然可以使用 kubelet/servicemonitor.yaml 并查看它是如何完成的。有什么有用的信息吗?
-
@Matt 我一直在尝试破译 helm 文件。我没有在安装中使用 helm,所以我需要将其转换为普通的 ServiceMonitor,但我会尝试!
-
@Matt 我在之后所做的事情一定是它,可能是不同的端口或使用正确的 TLS 配置或两者兼而有之,但它现在可以工作了!
标签: kubernetes prometheus cadvisor