Kubernetes metrics-server 部署与全场景使用指南

一、metrics-server 核心定位

metrics-server 是 Kubernetes 集群实现资源监控(如 kubectl top 命令、HPA 自动扩缩容)的核心组件,主要为集群提供标准化的 CPU/内存资源指标,并通过 Kubernetes API 暴露,是集群资源可视化、自动化调度的基础依赖。

二、部署 metrics-server

(一)前置条件

  1. Kubernetes 集群版本 ≥ 1.19(低版本需适配对应 metrics-server 版本);

  2. 集群节点能访问容器镜像仓库(或提前拉取镜像);

  3. 集群 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 中增加:

    yaml 复制代码
    spec:
      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 核心用途

(一)基础功能:集群资源可视化

替代手动登录节点查资源的低效方式,实现资源可视化:

  1. 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 内存泄漏等。

  2. 补充 Kubernetes Dashboard 监控数据

    为 Dashboard 提供实时的 Pod/节点资源图表,无需额外配置即可查看基础监控。

(二)核心场景:支撑集群动态调度与自动化

是集群「自运维」的核心基础,为自动化能力提供数据支撑:

  1. 水平 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 状态,无法触发扩缩容。

  2. 垂直 Pod 自动扩缩容(VPA)数据来源

    为 VPA 自动调整 Pod CPU/内存请求和限制提供指标支撑。

  3. 集群调度优化

    为资源亲和性/反亲和性等高级调度策略提供节点资源指标,优化调度效果。

(三)扩展价值:支撑监控与运维体系

作为基础数据源,支撑监控、告警、成本分析等运维场景:

  1. 为 Prometheus 补充基础指标

    提供符合 metrics.k8s.io API 的标准化指标,可作为 Prometheus 监控的补充。

  2. 运维告警的基础依据

    基于指标配置告警规则,如节点 CPU 使用率超 80%、Pod 内存使用率超 90% 告警。

  3. 资源计费与成本分析

    统计不同命名空间/应用的资源消耗,支撑企业内部资源计费、闲置资源清理等成本优化场景。

(四)关键注意事项

metrics-server 仅提供核心资源(CPU/内存)的短期、轻量级指标,不具备以下能力:

  • 不存储历史指标(重启后丢失);
  • 不支持磁盘、网络等非核心资源指标;
  • 不提供告警、可视化大盘等功能。

生产环境需搭配 Prometheus + Grafana 实现全量监控,metrics-server 专注于支撑 Kubernetes 原生自动化能力和基础资源查看。

四、总结

用途分类 具体能力 核心价值
基础可视化 kubectl top、Dashboard 监控 快速排查资源瓶颈
核心自动化 HPA/VPA 自动扩缩容 集群弹性伸缩,减少人工运维
扩展运维 监控数据源、资源计费、告警依据 支撑监控体系和成本优化
相关推荐
阿里云云原生3 小时前
祝贺东航首飞全球最长单程航线!通义千问和 AI 网关助力推出首个行程规划 Agent
云原生
腾讯云中间件4 小时前
Kafka 集群上云新突破:腾讯云 CKafka 联邦迁移方案
云原生·kafka·消息队列
..Move...6 小时前
基于Containerd搭建 K8s
运维·nginx·云原生
Brandon汐6 小时前
k8s-Pod详解-1
云原生·容器·kubernetes
阿里云云原生6 小时前
打通可观测性的“任督二脉”:实体与关系的终极融合
云原生
基哥的奋斗历程7 小时前
部署指南-1B-单体Docker-自建方案
运维·docker·容器
❥ღ Komo·8 小时前
K8s持久化存储:数据永不丢失的秘密
云原生·容器·kubernetes
java程序员一位8 小时前
nifi dockercompose安装报错
云原生·eureka
潘晓可8 小时前
Portainer - 加载环境失败
docker·容器