使用 Metrics Server 采集边缘节点指标
本文说明在 OpenYurt 边缘集群中,如何让云端组件 metrics-server 正常拉取边缘节点(kubelet)的资源用量指标。
在默认配置下,metrics-server 会优先通过节点的 InternalIP 访问 kubelet。云、边处于不同网络域时,云端往往无法直连边缘节点的 InternalIP,因此需要借助 Raven 做跨网络域转发,并让 metrics-server 改为通过 Hostname 访问 kubelet;同时将节点主机名解析到 Raven 云上 Gateway,由 Gateway 经隧道转发到目标边缘节点。
前提条件
- 已具备可用的 OpenYurt 集群(若尚未安装,可参考 安装手册)。
- 边缘场景需已部署 Raven,并完成 Raven Proxy 专用 DNS(使节点 hostname 能解析到云上 Gateway)。若未安装 Raven,请先完成下列第 1 步。
配置步骤
1. 安装 Raven(若已安装可跳过)
边缘节点 IP 无法从云端直连时,需要 Raven 提供跨网络域通信能力。安装方式见 在 Kubernetes 上安装 中的 3.3 安装跨网络域通信组件 Raven。
2. 部署 Raven Proxy 专用 DNS
需要将节点 hostname 解析到 Raven 的云上 Gateway,以便 hostname:Port 形式的访问能经 Gateway 转发到对应边缘节点。具体步骤见 Raven 七层代理准备(raven-proxy-dns)。
3. 修改 metrics-server 运行参数
为让 metrics-server 使用节点 Hostname(而非 InternalIP)去解析并访问 kubelet,在 metrics-server 的容器启动参数中增加:
--kubelet-preferred-address-types=Hostname
常见做法是在 kube-system 命名空间下编辑 metrics-server 的 Deployment,在容器 args 中加入上述参数(或与现有 --kubelet-preferred-address-types 合并为以 Hostname 优先的列表,具体以集群当前部署方式为准)。
4. 验证
在配置生效后执行:
kubectl top pods -A
kubectl top node <边缘节点名称>
若各 Pod、边缘节点均能正常显示 CPU/内存等指标,说明配置成功。