news 2026/7/5 14:36:01

k8s部署metrics-server

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
k8s部署metrics-server

k8s部署metrics-server是 Kubernetes 实现资源监控(如kubectl top、HPA 自动扩缩容)的核心组件,在部署过程中遇到过以下问题

  • 镜像拉取失败(k8s.gcr.io镜像国内无法访问);
  • 证书验证问题(需跳过 TLS 验证或配置正确证书);
  • API Server 连接问题(需指定kubelet-insecure-tls)。

部署步骤如下

1.步骤 1:下载官方部署文件(并修改)

# 下载官方 yaml(也可手动创建) wget https://github.com/kubernetes-sigs/metrics-server/releases/latest/download/components.yaml -O metrics-server.yaml

2.步骤 2:修改metrics-server.yaml关键配置

打开metrics-server.yaml,做以下 3 处核心修改:

# 原镜像(国内无法访问) # image: k8s.gcr.io/metrics-server/metrics-server:v0.7.0 # 替换为阿里云镜像(适配 v0.7.0 版本) image: registry.cn-hangzhou.aliyuncs.com/google_containers/metrics-server:v0.7.0

3. 添加启动参数(解决证书 / 连接问题)

Deploymentargs部分,新增以下参数(关键!):

spec: template: spec: containers: - name: metrics-server args: - --cert-dir=/tmp - --secure-port=4443 # 新增以下 3 个参数 - --kubelet-insecure-tls # 跳过 kubelet TLS 验证(测试环境推荐,生产建议配置证书) - --kubelet-preferred-address-types=InternalIP,ExternalIP,Hostname # 指定 kubelet 地址类型 - --metric-resolution=15s # 监控数据采集间隔

4.可选:调整资源限制(根据集群规模)

resources: requests: cpu: 100m memory: 100Mi limits: cpu: 500m memory: 512Mi

5.部署metrics-server

kubectl apply -f metrics-server.yaml

6.验证部署

kubectl get pods -n kube-system -l k8s-app=metrics-server # 正常输出(STATUS 为 Running): # NAME READY STATUS RESTARTS AGE # metrics-server-7f987d68c4-9x8zl 1/1 Running 0 5m
检查 Pod 日志(排查启动失败)
kubectl logs -n kube-system $(kubectl get pods -n kube-system -l k8s-app=metrics-server -o name) # 常见日志错误及解决: # - "x509: certificate signed by unknown authority" → 确认已加 --kubelet-insecure-tls # - "unable to reach kubelet" → 检查 --kubelet-preferred-address-types 参数 # - "image pull failed" → 确认镜像地址正确
验证 API 可用性(核心!)

metrics-server会注册metrics.k8s.ioAPI,检查是否正常:

# 查看节点资源使用 kubectl top nodes # 输出示例: # NAME CPU(cores) CPU% MEMORY(bytes) MEMORY% # k8s-master 123m 6% 1200Mi 30% # k8s-node1 89m 4% 980Mi 25% # 查看 Pod 资源使用 kubectl top pods -n kube-system # 输出包含 metrics-server 自身的资源占用

二.本次部署环境使用修改后的yaml文件如下,可直接使用

apiVersion: v1 kind: ServiceAccount metadata: labels: k8s-app: metrics-server name: metrics-server namespace: kube-system --- apiVersion: rbac.authorization.k8s.io/v1 kind: ClusterRole metadata: labels: k8s-app: metrics-server rbac.authorization.k8s.io/aggregate-to-admin: "true" rbac.authorization.k8s.io/aggregate-to-edit: "true" rbac.authorization.k8s.io/aggregate-to-view: "true" name: system:aggregated-metrics-reader rules: - apiGroups: - metrics.k8s.io resources: - pods - nodes verbs: - get - list - watch --- apiVersion: rbac.authorization.k8s.io/v1 kind: ClusterRole metadata: labels: k8s-app: metrics-server name: system:metrics-server rules: - apiGroups: - "" resources: - pods - nodes - nodes/stats - namespaces - configmaps verbs: - get - list - watch --- apiVersion: rbac.authorization.k8s.io/v1 kind: RoleBinding metadata: labels: k8s-app: metrics-server name: metrics-server-auth-reader namespace: kube-system roleRef: apiGroup: rbac.authorization.k8s.io kind: Role name: extension-apiserver-authentication-reader subjects: - kind: ServiceAccount name: metrics-server namespace: kube-system --- apiVersion: rbac.authorization.k8s.io/v1 kind: ClusterRoleBinding metadata: labels: k8s-app: metrics-server name: metrics-server:system:auth-delegator roleRef: apiGroup: rbac.authorization.k8s.io kind: ClusterRole name: system:auth-delegator subjects: - kind: ServiceAccount name: metrics-server namespace: kube-system --- apiVersion: rbac.authorization.k8s.io/v1 kind: ClusterRoleBinding metadata: labels: k8s-app: metrics-server 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: Service metadata: labels: k8s-app: metrics-server name: metrics-server namespace: kube-system spec: ports: - name: https port: 443 protocol: TCP targetPort: 8443 selector: k8s-app: metrics-server --- apiVersion: apps/v1 kind: Deployment metadata: labels: k8s-app: metrics-server name: metrics-server namespace: kube-system spec: selector: matchLabels: k8s-app: metrics-server strategy: rollingUpdate: maxUnavailable: 0 template: metadata: labels: k8s-app: metrics-server spec: containers: - args: - --cert-dir=/tmp - --secure-port=8443 - --kubelet-preferred-address-types=InternalIP,ExternalIP,Hostname - --kubelet-use-node-status-port - --metric-resolution=15s - --kubelet-insecure-tls - --authorization-always-allow-paths=/livez,/readyz image: swr.cn-east-2.myhuaweicloud.com/kuboard-dependency/metrics-server:v0.5.0 imagePullPolicy: IfNotPresent livenessProbe: failureThreshold: 3 httpGet: path: /livez port: https scheme: HTTPS periodSeconds: 10 name: metrics-server ports: - containerPort: 8443 name: https protocol: TCP readinessProbe: failureThreshold: 3 httpGet: path: /readyz port: https scheme: HTTPS initialDelaySeconds: 20 periodSeconds: 10 resources: requests: cpu: 100m memory: 200Mi securityContext: readOnlyRootFilesystem: true runAsNonRoot: true runAsUser: 1000 volumeMounts: - mountPath: /tmp name: tmp-dir nodeSelector: kubernetes.io/os: linux priorityClassName: system-cluster-critical serviceAccountName: metrics-server volumes: - emptyDir: {} name: tmp-dir --- apiVersion: apiregistration.k8s.io/v1 kind: APIService metadata: labels: k8s-app: metrics-server name: v1beta1.metrics.k8s.io spec: group: metrics.k8s.io groupPriorityMinimum: 100 insecureSkipTLSVerify: true service: name: metrics-server namespace: kube-system version: v1beta1 versionPriority: 100
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/7/5 8:06:19

Portainer实战:构建企业级CI/CD流水线的最佳实践

Portainer实战:构建企业级CI/CD流水线的最佳实践 【免费下载链接】portainer Portainer: 是一个开源的轻量级容器管理 UI,用于管理 Docker 和 Kubernetes 集群。它可以帮助用户轻松地部署、管理和监控容器,适合用于运维和开发团队。特点包括易…

作者头像 李华
网站建设 2026/7/5 10:36:37

什么是品牌型电商代运营?品牌方选择代运营的五大标准

在电商竞争步入深水区的今天,一个深刻的变化正在发生:品牌的需求,已从单纯的“线上卖货”升维为“数字化品牌建设”。传统的、以销售额为单一导向的代运营服务,因其短视的操作与品牌长期价值间的矛盾,正逐渐显露出瓶颈…

作者头像 李华
网站建设 2026/7/4 2:45:15

COLMAP三维重建中的线性代数优化:从数学原理到工程实践

COLMAP三维重建中的线性代数优化:从数学原理到工程实践 【免费下载链接】colmap COLMAP - Structure-from-Motion and Multi-View Stereo 项目地址: https://gitcode.com/GitHub_Trending/co/colmap 当我们探讨三维重建技术的性能瓶颈时,线性代数…

作者头像 李华
网站建设 2026/7/5 5:44:05

yudao-cloud移动端开发终极指南:UniApp跨平台开发快速上手

在当今多终端融合的时代,企业面临着开发成本高、技术栈复杂、维护难度大的严峻挑战。yudao-cloud项目采用UniApp作为移动端解决方案,实现了"一次编码、多端发布"的革命性开发模式。本文将从实战角度出发,为您完整解析UniApp跨平台开…

作者头像 李华
网站建设 2026/7/4 20:13:17

【量子服务连接突破】:3步搞定VSCode远程调试配置

第一章:量子服务连接突破的背景与意义随着全球信息技术进入后摩尔时代,传统计算架构在处理复杂问题时逐渐逼近物理极限。在此背景下,量子计算凭借其叠加态与纠缠态的独特能力,展现出对特定任务指数级加速的潜力。然而,…

作者头像 李华
网站建设 2026/7/5 12:40:55

基于 MATLAB 实现 近红外光谱(NIRS)血液定量分析

基于 MATLAB 实现 近红外光谱(NIRS)血液定量分析 ,结合 偏最小二乘法(PLS) 和 光谱预处理技术,涵盖数据导入、模型构建、优化与验证流程。 一、系统架构与流程 二、核心代码实现 1. 数据导入与预处理 % 读…

作者头像 李华