Thursday, November 27, 2025

 

Kubernetes : Deploy Metrics Server

 

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    |
+----------------------+   +----------------------+

[1]Deploy Metrics Server.
debian@ctrl:~$ 
git clone https://github.com/kubernetes-sigs/metrics-server

debian@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
          # line 29 : add
          - --kubelet-insecure-tls

debian@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

debian@ctrl:~$ 
kubectl get pods -n kube-system

NAME                                    READY   STATUS    RESTARTS      AGE
coredns-674b8bbfcf-v5696                1/1     Running   1 (21m ago)   2d14h
coredns-674b8bbfcf-xsmfg                1/1     Running   1 (21m ago)   2d14h
etcd-dlp.srv.world                      1/1     Running   1 (21m ago)   2d14h
kube-apiserver-dlp.srv.world            1/1     Running   1 (21m ago)   2d14h
kube-controller-manager-dlp.srv.world   1/1     Running   1 (21m ago)   2d14h
kube-proxy-2hgcv                        1/1     Running   1 (21m ago)   2d14h
kube-proxy-hk6pp                        1/1     Running   1 (21m ago)   2d14h
kube-proxy-xqdss                        1/1     Running   1 (21m ago)   2d14h
kube-scheduler-dlp.srv.world            1/1     Running   1 (21m ago)   2d14h
metrics-server-789dc499fd-jqn75         1/1     Running   0             41s
# [metrics-server] pod has been deployed
[2]To display CPU and Memory resources, run like follows.
debian@ctrl:~$ 
kubectl top node

NAME               CPU(cores)   CPU(%)   MEMORY(bytes)   MEMORY(%)
dlp.srv.world      55m          0%       2290Mi          14%
node01.srv.world   15m          0%       956Mi           6%
node02.srv.world   16m          0%       1055Mi          6%

debian@ctrl:~$ 
kubectl top pod -n kube-system

NAME                                    CPU(cores)   MEMORY(bytes)
coredns-674b8bbfcf-v5696                1m           70Mi
coredns-674b8bbfcf-xsmfg                1m           21Mi
etcd-dlp.srv.world                      13m          131Mi
kube-apiserver-dlp.srv.world            24m          535Mi
kube-controller-manager-dlp.srv.world   8m           150Mi
kube-proxy-2hgcv                        1m           80Mi
kube-proxy-hk6pp                        1m           81Mi
kube-proxy-xqdss                        1m           82Mi
kube-scheduler-dlp.srv.world            4m           82Mi
metrics-server-789dc499fd-jqn75         2m           19Mi

No comments:

Post a Comment