Rancher Monitoring Node Exporter with Kube RBAC Proxy

通过 Rancher Monitoring 部署的 Node Exporter,默认会监听节点的 9796 端口。

通常情况下,任何能够访问节点 9796 端口的客户端,都可能读取 Node Exporter 暴露的指标数据,这在很多环境中不符合安全要求。

可以通过启用 Kube RBAC Proxy,将 Node Exporter 收口到 127.0.0.1:8100,对外的 9796 端口使用 HTTPS,并通过 Kubernetes TokenReviewSubjectAccessReview 进行身份验证与 RBAC 授权。


Kube RBAC Proxy

Kube RBAC Proxy 是一个面向单一上游服务的小型 HTTP 代理,可以通过 Kubernetes API 的 SubjectAccessReview 机制执行 RBAC 授权。

在未配置 NetworkPolicy 的 Kubernetes 集群中,任何 Pod 都可以向集群中的其他 Pod 发起请求。Kube RBAC Proxy 的作用是限制此类访问,仅允许提供有效且经过 RBAC 授权的 Token 或客户端 TLS 证书的 Pod 访问目标服务。

开启 Kube RBAC Proxy 前:

1
2
3
4
5
Prometheus
|
| HTTP 请求 /metrics
v
Node Exporter:9796

开启 Kube RBAC Proxy 后:

1
2
3
4
5
6
7
8
9
10
11
12
Prometheus
|
| HTTPS 请求 + ServiceAccount Token
v
Kube RBAC Proxy
|
| 1. 校验 TLS
| 2. 校验 Token
| 3. 调用 Kubernetes API 执行 SubjectAccessReview
| 4. RBAC 授权通过
v
Node Exporter:127.0.0.1:8100

Rancher Monitoring 开启 Kube RBAC Proxy

在 Rancher Monitoring Helm Chart Values 中添加以下配置即可:

1
2
3
4
5
6
7
8
9
10
11
12
13
global:
# 按需调整该配置。默认情况下,kube-rbac-proxy 会从 docker.io 获取镜像
imageRegistry: harbor.warnerchen.com

prometheus-node-exporter:
kubeRBACProxy:
enabled: true
prometheus:
monitor:
bearerTokenFile: /var/run/secrets/kubernetes.io/serviceaccount/token
scheme: https
tlsConfig:
insecureSkipVerify: true
Author

Warner Chen

Posted on

2026-07-30

Updated on

2026-07-30

Licensed under