Skip to main content

CentOS Stream 10: Deploy Metrics Server

Install and configure Metrics Server to collect resource metrics in a Kubernetes cluster on CentOS Stream 10.

May 24, 2026 8 min read
centoscentos-stream-10kubernetesk8scluster

Deploy Metrics Server to monitor CPU and Memory resources in Kubernetes Cluster.

This example is based on the environment like follows.

+----------------------+   +----------------------+

|  [ ctrl.srv.world ]  |   |   [ dlp.srv.world ]  |

|     Manager Node     |   |     Control Plane    |

+-----------+----------+   +-----------+----------+

        eth0|10.0.0.25             eth0|10.0.0.30

            |                          |

------------+--------------------------+-----------

            |                          |

        eth0|10.0.0.51             eth0|10.0.0.52

+-----------+----------+   +-----------+----------+

| [ node01.srv.world ] |   | [ node02.srv.world ] |

|     Worker Node#1    |   |     Worker Node#2    |

+----------------------+   +----------------------+

Step 1

Deploy Metrics Server.

[cent@ctrl ~]$ git clone https://github.com/kubernetes-sigs/metrics-server

[cent@ctrl ~]$ vi ./metrics-server/manifests/base/deployment.yaml

.....

.....

      containers:

      - name: metrics-server

        image: gcr.io/k8s-staging-metrics-server/metrics-server:master

        imagePullPolicy: IfNotPresent

        args:

          - --cert-dir=/tmp

          - --secure-port=10250

          - --kubelet-preferred-address-types=InternalIP,ExternalIP,Hostname

          - --kubelet-use-node-status-port

          - --metric-resolution=15s

          <span class="color2"># line 29 : add</span>

          <span class="color1">- --kubelet-insecure-tls</span>

[cent@ctrl ~]$ kubectl apply -k ./metrics-server/manifests/base/

# Warning: 'commonLabels' is deprecated. Please use 'labels' instead. Run 'kustomize edit fix' to update your Kustomization automatically.

serviceaccount/metrics-server created

clusterrole.rbac.authorization.k8s.io/system:aggregated-metrics-reader created

clusterrole.rbac.authorization.k8s.io/system:metrics-server created

rolebinding.rbac.authorization.k8s.io/metrics-server-auth-reader created

clusterrolebinding.rbac.authorization.k8s.io/metrics-server:system:auth-delegator created

clusterrolebinding.rbac.authorization.k8s.io/system:metrics-server created

service/metrics-server created

deployment.apps/metrics-server created

apiservice.apiregistration.k8s.io/v1beta1.metrics.k8s.io created

[cent@ctrl ~]$ kubectl get pods -n kube-system

NAME                                       READY   STATUS    RESTARTS   AGE

calico-kube-controllers-64c678449f-bts57   1/1     Running   2          3h40m

calico-node-9pl4d                          1/1     Running   3          3h35m

calico-node-dc9mt                          1/1     Running   2          3h36m

calico-node-n8szh                          1/1     Running   2          3h40m

coredns-7c65d6cfc9-j7jb5                   1/1     Running   2          3h41m

coredns-7c65d6cfc9-jxvwr                   1/1     Running   2          3h41m

etcd-dlp.srv.world                         1/1     Running   2          3h41m

kube-apiserver-dlp.srv.world               1/1     Running   2          3h41m

kube-controller-manager-dlp.srv.world      1/1     Running   2          3h41m

kube-proxy-lk27c                           1/1     Running   2          3h35m

kube-proxy-wx6nm                           1/1     Running   2          3h41m

kube-proxy-xfjd8                           1/1     Running   2          3h36m

kube-scheduler-dlp.srv.world               1/1     Running   2          3h41m

metrics-server-75c666cb86-tlkhw            1/1     Running   0          31s

<span class="color2"># [metrics-server] pod has been deployed</span>

Step 2

To display CPU and Memory resources, run like follows.

[cent@ctrl ~]$ kubectl top node

NAME               CPU(cores)   CPU%   MEMORY(bytes)   MEMORY%

dlp.srv.world      67m          0%     1831Mi          11%

node01.srv.world   32m          0%     1088Mi          6%

node02.srv.world   30m          0%     1155Mi          7%

[cent@ctrl ~]$ kubectl top pod -n kube-system

NAME                                       CPU(cores)   MEMORY(bytes)

calico-kube-controllers-64c678449f-bts57   2m           102Mi

calico-node-9pl4d                          17m          199Mi

calico-node-dc9mt                          17m          199Mi

calico-node-n8szh                          15m          196Mi

coredns-7c65d6cfc9-j7jb5                   1m           17Mi

coredns-7c65d6cfc9-jxvwr                   1m           74Mi

etcd-dlp.srv.world                         7m           108Mi

kube-apiserver-dlp.srv.world               15m          382Mi

kube-controller-manager-dlp.srv.world      5m           148Mi

kube-proxy-lk27c                           1m           88Mi

kube-proxy-wx6nm                           1m           88Mi

kube-proxy-xfjd8                           1m           88Mi

kube-scheduler-dlp.srv.world               1m           83Mi

metrics-server-75c666cb86-tlkhw            3m           22Mi