
easzlab/metrics-servermetrics-server 是 Kubernetes 集群的核心监控组件,用于从 Kubelet 收集资源指标(如 CPU、内存使用情况),并通过 Metrics API 在 Kubernetes API 服务器中公开这些指标。该镜像提供了 metrics-server 的容器化部署方案,方便在 Kubernetes 集群中快速部署和使用 metrics-server。
/apis/metrics.k8s.io/v1beta1 端点kubectl top 命令)bashdocker run -d \ --name metrics-server \ --restart always \ -p 443:443 \ -v /var/run/kubernetes:/var/run/kubernetes \ -v /etc/kubernetes/pki:/etc/kubernetes/pki \ kubeasz/metrics-server:latest \ --kubelet-insecure-tls \ --kubelet-preferred-address-types=InternalIP,Hostname,InternalDNS,ExternalDNS,ExternalIP
推荐使用 Kubernetes 原生方式部署:
yamlapiVersion: v1 kind: ServiceAccount metadata: name: metrics-server namespace: kube-system --- apiVersion: rbac.authorization.k8s.io/v1 kind: ClusterRole metadata: name: system:metrics-server rules: - apiGroups: - "" resources: - pods - nodes - nodes/stats - namespaces verbs: - get - list - watch --- apiVersion: rbac.authorization.k8s.io/v1 kind: ClusterRoleBinding metadata: name: system:metrics-server roleRef: apiGroup: rbac.authorization.k8s.io kind: ClusterRole name: system:metrics-server subjects: - kind: ServiceAccount name: metrics-server namespace: kube-system --- apiVersion: v1 kind: ConfigMap metadata: name: metrics-server-config namespace: kube-system labels: kubernetes.io/cluster-service: "true" addonmanager.kubernetes.io/mode: EnsureExists data: NannyConfiguration: |- apiVersion: nannyconfig/v1alpha1 kind: NannyConfiguration --- apiVersion: apps/v1 kind: Deployment metadata: name: metrics-server namespace: kube-system labels: k8s-app: metrics-server kubernetes.io/cluster-service: "true" addonmanager.kubernetes.io/mode: Reconcile spec: selector: matchLabels: k8s-app: metrics-server template: metadata: labels: k8s-app: metrics-server annotations: scheduler.alpha.kubernetes.io/critical-pod: '' spec: priorityClassName: system-cluster-critical serviceAccountName: metrics-server containers: - name: metrics-server image: kubeasz/metrics-server:latest command: - /metrics-server - --kubelet-insecure-tls - --kubelet-preferred-address-types=InternalIP,Hostname,InternalDNS,ExternalDNS,ExternalIP ports: - containerPort: 443 name: https protocol: TCP resources: limits: cpu: 200m memory: 200Mi requests: cpu: 200m memory: 200Mi tolerations: - key: "CriticalAddonsOnly" operator: "Exists" --- apiVersion: v1 kind: Service metadata: name: metrics-server namespace: kube-system labels: kubernetes.io/name: "Metrics-server" kubernetes.io/cluster-service: "true" spec: selector: k8s-app: metrics-server ports: - port: 443 protocol: TCP targetPort: https --- apiVersion: apiregistration.k8s.io/v1 kind: APIService metadata: name: v1beta1.metrics.k8s.io spec: service: name: metrics-server namespace: kube-system group: metrics.k8s.io version: v1beta1 insecureSkipTLSVerify: true groupPriorityMinimum: 100 versionPriority: 100
metrics-server 支持以下主要命令行参数:
| 参数 | 描述 | 默认值 |
|---|---|---|
--kubelet-insecure-tls | 允许与 Kubelet 进行不安全的 TLS 连接(不验证证书) | false |
--kubelet-preferred-address-types | 与 Kubelet 通信时首选的节点地址类型顺序 | Hostname,InternalDNS,InternalIP,ExternalDNS,ExternalIP |
--kubelet-port | Kubelet 端口号 | *** |
--metric-resolution | 指标收集的分辨率(采样间隔) | 60s |
--horizontal-pod-autoscaler-sync-period | HPA 同步周期 | 30s |
--requestheader-client-ca-file | 用于验证请求头中客户端证书的 CA 文件路径 | 未设置 |
--tls-cert-file | TLS 证书文件路径 | 未设置 |
--tls-private-key-file | TLS 私钥文件路径 | 未设置 |
--v | 日志详细程度级别 | 0 |
该镜像不依赖环境变量进行配置,所有配置均通过命令行参数实现。
部署完成后,可以通过以下方式验证 metrics-server 是否正常工作:
bashkubectl get pods -n kube-system | grep metrics-server
bashkubectl get --raw "/apis/metrics.k8s.io/v1beta1/nodes"
kubectl top 命令查看节点和 Pod 资源使用情况:bashkubectl top nodes kubectl top pods
问题:kubectl top 命令返回 "Error from server (ServiceUnavailable): the server is currently unable to handle the request"
解决:检查 metrics-server Pod 是否正常运行,查看 Pod 日志获取详细错误信息
问题:metrics-server 日志中出现证书验证错误
解决:可以临时使用 --kubelet-insecure-tls 参数禁用证书验证,或正确配置 TLS 证书
问题:metrics-server 无法连接到节点
解决:检查 --kubelet-preferred-address-types 参数配置,确保 metrics-server 能够使用正确的地址类型连接到 Kubelet
bashkubectl logs -n kube-system deployment/metrics-server
该镜像基于 upstream metrics-server 项目构建,具体版本信息可通过镜像标签获取。建议使用最新稳定版本以获得最佳性能和安全性。

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