介绍
metrics-server 通过 kube-apiserver 发现所有节点,然后调用 kubelet APIs(通过 https 接口)获得各节点(Node)和 Pod 的 CPU、Memory 等资源使用情况。
从 Kubernetes 1.12 开始,kubernetes 的安装脚本移除了 Heapster,从 1.13 开始完全移除了对 Heapster 的支持,Heapster 不再被维护。
替代方案如下:
- 用于支持自动扩缩容的 CPU/memory HPA metrics:metrics-server;
- 通用的监控方案:使用第三方可以获取 Prometheus 格式监控指标的监控系统,如 Prometheus Operator;
- 事件传输:使用第三方工具来传输、归档 kubernetes events;
Kubernetes Dashboard 还不支持 metrics-server(PR:#3504),如果使用 metrics-server 替代 Heapster,将无法在 dashboard 中以图形展示 Pod 的内存和 CPU 情况,需要通过 Prometheus、Grafana 等监控方案来弥补。
部署
1 | cd /opt/k8s/work/ |
修改 metrics-server-deployment.yaml
文件,为 metrics-server 添加三个命令行参数:
1 | --- |
- –metric-resolution=30s:从 kubelet 采集数据的周期;
- –requestheader-allowed-names=aggregator:允许请求 metrics-server API 的用户名,该名称与 kube-apiserver 的
--proxy-client-cert-file
指定的证书 CN 一致; - –kubelet-preferred-address-types:优先使用 InternalIP 来访问 kubelet,这样可以避免节点名称没有 DNS 解析记录时,通过节点名称调用节点 kubelet API 失败的情况(未配置时默认的情况);
修改apiserver参数:
1 | cd /etc/systemd/system |
重启apiserver
部署 metrics-server:
1 | cd /opt/k8s/work/metrics-server/deploy/1.8+/ |
使用 kubectl top 命令查看集群节点资源使用情况
1 | [root@node1 1.8+]# kubectl top node |