一、metrics-server 核心定位
metrics-server 是 Kubernetes 集群实现资源监控(如 kubectl top 命令、HPA 自动扩缩容)的核心组件,主要为集群提供标准化的 CPU/内存资源指标,并通过 Kubernetes API 暴露,是集群资源可视化、自动化调度的基础依赖。
二、部署 metrics-server
(一)前置条件
-
Kubernetes 集群版本 ≥ 1.19(低版本需适配对应 metrics-server 版本);
-
集群节点能访问容器镜像仓库(或提前拉取镜像);
-
集群 API Server 开启
aggregator层(默认开启,关闭需修改启动参数):bash# 检查 API Server aggregator 配置(kubeadm 部署示例) ps -ef | grep kube-apiserver | grep -E "enable-aggregator-routing|requestheader-"需包含:
--enable-aggregator-routing=true、--requestheader-client-ca-file等参数。
(二)部署步骤
1. 下载官方部署文件
bash
# 下载 metrics-server v0.8.0 部署文件(适配高版本 K8s)
wget https://github.com/kubernetes-sigs/metrics-server/releases/download/v0.8.0/components.yaml
2. 修改配置文件(关键)
-
替换镜像 :将官方镜像替换为国内可访问的阿里云镜像:
yaml# 找到 spec.template.spec.containers.image 行,修改为: image: registry.aliyuncs.com/google_containers/metrics-server:v0.8.0 -
添加启动参数 :解决证书验证问题,在
args中增加:yamlspec: template: spec: containers: - name: metrics-server args: - --kubelet-insecure-tls # 跳过kubelet证书验证
3. 部署并验证
bash
# 部署到集群
kubectl apply -f components.yaml
# 核心验证:测试 kubectl top 命令
# 查看节点资源使用
kubectl top nodes
# 查看 kube-system 命名空间 Pod 资源使用
kubectl top pods -n kube-system

三、metrics-server 核心用途
(一)基础功能:集群资源可视化
替代手动登录节点查资源的低效方式,实现资源可视化:
-
kubectl top命令的核心依赖bash# 查看所有节点 CPU/内存使用率 kubectl top nodes # 查看指定命名空间 Pod 资源消耗 kubectl top pods -n your-namespace # 查看 Pod 容器级资源使用 kubectl top pods <pod-name> -n ns --containers场景:定位节点/Pod 资源瓶颈,如节点 CPU 使用率过高、Pod 内存泄漏等。
-
补充 Kubernetes Dashboard 监控数据
为 Dashboard 提供实时的 Pod/节点资源图表,无需额外配置即可查看基础监控。
(二)核心场景:支撑集群动态调度与自动化
是集群「自运维」的核心基础,为自动化能力提供数据支撑:
-
水平 Pod 自动扩缩容(HPA)必备依赖
HPA 依据
metrics-server提供的资源使用率自动增减 Pod 副本数,示例:bash# 创建 HPA:CPU 使用率≥50%扩容,最少2个、最多10个副本 kubectl autoscale deployment your-app --cpu-percent=50 --min=2 --max=10 # 查看 HPA 状态 kubectl get hpa your-app无
metrics-server时,HPA 会处于unknown状态,无法触发扩缩容。 -
垂直 Pod 自动扩缩容(VPA)数据来源
为 VPA 自动调整 Pod CPU/内存请求和限制提供指标支撑。
-
集群调度优化
为资源亲和性/反亲和性等高级调度策略提供节点资源指标,优化调度效果。
(三)扩展价值:支撑监控与运维体系
作为基础数据源,支撑监控、告警、成本分析等运维场景:
-
为 Prometheus 补充基础指标
提供符合
metrics.k8s.ioAPI 的标准化指标,可作为 Prometheus 监控的补充。 -
运维告警的基础依据
基于指标配置告警规则,如节点 CPU 使用率超 80%、Pod 内存使用率超 90% 告警。
-
资源计费与成本分析
统计不同命名空间/应用的资源消耗,支撑企业内部资源计费、闲置资源清理等成本优化场景。
(四)关键注意事项
metrics-server 仅提供核心资源(CPU/内存)的短期、轻量级指标,不具备以下能力:
- 不存储历史指标(重启后丢失);
- 不支持磁盘、网络等非核心资源指标;
- 不提供告警、可视化大盘等功能。
生产环境需搭配 Prometheus + Grafana 实现全量监控,metrics-server 专注于支撑 Kubernetes 原生自动化能力和基础资源查看。
四、总结
| 用途分类 | 具体能力 | 核心价值 |
|---|---|---|
| 基础可视化 | kubectl top、Dashboard 监控 | 快速排查资源瓶颈 |
| 核心自动化 | HPA/VPA 自动扩缩容 | 集群弹性伸缩,减少人工运维 |
| 扩展运维 | 监控数据源、资源计费、告警依据 | 支撑监控体系和成本优化 |