MENU

Catalog

    K8S部署Metrics-Server服务

    • September 4, 2025 • Read: 18 • 编码👨🏻‍💻

    Metrics-Server是k8s集群采集监控数据的聚合器,如采集node、pod的cpu、内存等数据,从 Kubernetes1.8 开始默认使用Metrics-Server采集数据,并通过Metrics API的形式提供查询,但是,kubeadm安装的k8s集群默认是没有安装Metrics-Server的,所以我们来安装一下Metrics-Server。

    image-20240823132722799

    ⚠️ 需要注意的是 在 Kubernetes 1.7 版本引入了聚合层,允许第三方应用程序通过将自己注册到kube-apiserver上,仍然通过 API Server 的 HTTP URL 对新的 API 进行访问和操作。为了实现这个机制,Kubernetes 在 kube-apiserver 服务中引入了一个API 聚合层(API Aggregation Layer),用于将扩展 API 的访问请求转发到用户服务的功能。如果你是kubadm 的部署方式,默认已开启Kubernetes API聚合层。

    image-20240823133922060

    1. 下载 Metrics Server 的部署文件:

      $ wget  https://github.com/kubernetes-sigs/metrics-server/releases/latest/download/components.yaml
    2. 修改components.yaml 文件:

      • 国内墙,需要替换registry.k8s.io/metrics-server/metrics-server:v0.7.1 镜像地址,k8s.srebro.site/metrics-server/metrics-server:v0.7.1
      • --kubelet-insecure-tls , 在args 里加上这个参数,不验证kubelet提供的https证书,用于跳过 TLS 证书验证
      • --kubelet-preferred-address-types=InternalIP,Hostname,InternalDNS,ExternalDNS,ExternalIP , 在args 里加上这个参数,指定 Metrics Server 在与 Kubelet 通信时的地址类型优先级。Metrics Server 会按照指定的顺序尝试使用不同的地址类型来连接 Kubelet。

        • InternalIP: Kubelet 的内部 IP 地址。
        • Hostname: Kubelet 的主机名。
        • InternalDNS: Kubelet 的内部 DNS 名称。
        • ExternalDNS: Kubelet 的外部 DNS 名称。
        • ExternalIP: Kubelet 的外部 IP 地址。
      spec:
            containers:
            - args:
              - --cert-dir=/tmp
              - --secure-port=10250
              - --kubelet-insecure-tls
              - --kubelet-preferred-address-types=InternalIP,Hostname,InternalDNS,ExternalDNS,ExternalIP
              - --kubelet-use-node-status-port
              - --metric-resolution=15s
              image: k8s.srebro.site/metrics-server/metrics-server:v0.7.1
              imagePullPolicy: IfNotPresent

      image-20240823134320484

    3. 部署 Metrics Server :

      $ kubectl apply -f components.yaml
    4. 验证 Metrics Server 是否成功部署:

      $ kubectl get pods -n kube-system -l k8s-app=metrics-server
      NAME                             READY   STATUS    RESTARTS   AGE
      metrics-server-74458669b-wvkkr   1/1     Running   0          130m
    5. 使用 kubectl top 命令查看 Pods 和 Nodes 的资源使用情况

      $ kubectl top pods
      NAME                            CPU(cores)   MEMORY(bytes)   
      pig-auth-58f7855c76-cft8m       3m           523Mi           
      pig-codegen-7799896dd6-mzfhx    3m           633Mi           
      pig-gateway-65854c6b5c-l7rdc    2m           425Mi           
      pig-gateway-65854c6b5c-t64c9    2m           451Mi           
      pig-monitor-5b5c68bc4f-kt5hn    11m          457Mi           
      pig-mysql-c867c676f-6zs9z       7m           439Mi           
      pig-quartz-657d5c9f77-qx6q5     19m          509Mi           
      pig-quartz-657d5c9f77-sbszt     5m           484Mi           
      pig-redis-6dbccc7854-f786j      2m           8Mi             
      pig-register-798bc58678-rqrrn   7m           647Mi           
      pig-ui-5ff9bbdd7f-ld7mb         0m           3Mi             
      pig-upms-d9dcc697f-7cdhw        17m          575Mi           
      pig-upms-d9dcc697f-klx6z        17m          492Mi  
      
      
      $ kubectl top nodes
      NAME           CPU(cores)   CPU%   MEMORY(bytes)   MEMORY%   
      k8s-master01   230m         5%     3026Mi          41%       
      k8s-master02   240m         6%     2399Mi          32%       
      k8s-master03   214m         5%     2221Mi          30%       
      k8s-node01     264m         6%     6663Mi          90%

    image-20240823134642042

    Archives Tip
    QR Code for this page
    Tipping QR Code