
dyrnq/metrics-serverk8s.gcr.io/metrics-server/metrics-server(镜像也托管于 registry.k8s.io/metrics-server/metrics-server)是 Kubernetes 官方提供的集群指标聚合组件,用于采集、聚合并暴露 Kubernetes 集群中节点(Node)和 Pod 的资源使用指标(如 CPU、内存使用率)。作为 Kubernetes Metrics API 的实现,它是 Horizontal Pod Autoscaler(HPA)、kubectl top 命令等功能的核心数据源,支持集群资源监控与自动扩缩容场景。
/apis/metrics.k8s.io/v1beta1)标准化暴露,支持 kubectl top nodes/pods 命令直接查询。kubectl top pods)。Metrics Server 通常作为 Kubernetes 集群组件部署(通过 Deployment/StatefulSet),而非独立 Docker 容器。以下为标准部署流程:
使用官方提供的 YAML 清单部署,自动适配集群环境:
bash# 部署最新稳定版(兼容 Kubernetes v1.21+) kubectl apply -f [***]
验证部署:
kubectl get pods -n kube-system | grep metrics-server
kubectl top nodes(若返回节点指标,说明部署成功)
仅用于本地开发或调试,不建议生产环境直接使用 Docker 运行:
bashdocker run -d \ --name metrics-server \ --network=host \ # 需访问宿主机 Kubelet 和 API Server k8s.gcr.io/metrics-server/metrics-server:v0.6.4 \ # 指定版本 --kubelet-insecure-tls \ # 开发环境跳过 Kubelet TLS 验证(生产禁用) --kubelet-preferred-address-types=InternalIP,Hostname,ExternalIP \ # 节点地址优先级 --metric-resolution=15s # 指标采集间隔(默认 60s)
Metrics Server 主要通过启动参数配置,以下为常用参数说明:
| 参数 | 描述 | 默认值 |
|---|---|---|
--kubelet-insecure-tls | 禁用 Kubelet TLS 证书验证(仅开发测试用,生产环境必须启用验证) | false |
--kubelet-preferred-address-types | 节点地址类型优先级(如 InternalIP,Hostname) | Hostname,InternalDNS,InternalIP,ExternalDNS,ExternalIP |
--metric-resolution | 指标采集间隔(格式:15s/1m) | 60s |
--kubelet-timeout | Kubelet API 请求超时时间 | 10s |
--horizontal-pod-autoscaler-sync-period | HPA 指标同步间隔(与 HPA 控制器配合) | 30s |
--tls-cert-file/--tls-private-key-file | TLS 证书和私钥路径(用于 Metrics Server 服务端认证) | 自动生成(通过 Kubernetes CA) |
若集群中 Kubelet 证书不可信或节点地址解析异常,可通过修改 Deployment 启动参数调整:
yaml# 编辑 metrics-server Deployment kubectl edit deployment metrics-server -n kube-system # 在 spec.template.spec.containers[0].args 中添加参数 args: - --kubelet-preferred-address-types=InternalIP # 优先使用节点内网 IP - --kubelet-certificate-authority=/var/run/secrets/kubernetes.io/serviceaccount/ca.crt # 信任集群 CA - --metric-resolution=30s # 缩短采集间隔至 30s
kubectl top 无数据kubectl exec -it <metrics-server-pod> -n kube-system -- curl <node-ip>:***/metrics/resource 验证)。--kubelet-insecure-tls 参数(生产环境需配置可信证书)。--metric-resolution 至 60s,减少 Kubelet 负载;可通过水平扩展 Metrics Server 实例(需配置 leader 选举)提升可用性。

manifest unknown 错误
TLS 证书验证失败
DNS 解析超时
410 错误:版本过低
402 错误:流量耗尽
身份认证失败错误
429 限流错误
凭证保存错误
来自真实用户的反馈,见证轩辕镜像的优质服务