[k8s] 매트릭 서버를 통한 리소스 확인

Posted by Albert 103Day 4Hour 51Min 48Sec ago [2025-04-25]

1. 매트릭 서버 repo 추가 및 다운로드

albert@k8s-master:~/work/app/metric-server$ helm repo add metrics-server https://kubernetes-sigs.github.io/metrics-server/
"metrics-server" has been added to your repositories

albert@k8s-master:~/work/app/metric-server$ helm repo update
Hang tight while we grab the latest from your chart repositories...
...Successfully got an update from the "metrics-server" chart repository
...Successfully got an update from the "metalib" chart repository
...Successfully got an update from the "argo" chart repository
...Successfully got an update from the "bitnami" chart repository
Update Complete. Happy Helming!

albert@k8s-master:~/work/app/metric-server$ helm search repo metric
NAME CHART VERSION APP VERSION DESCRIPTION
bitnami/kube-state-metrics 5.0.5 2.15.0 kube-state-metrics is a simple service that lis...
bitnami/metrics-server 7.4.2 0.7.2 Metrics Server aggregates resource usage data, ...
bitnami/victoriametrics 0.1.6 1.115.0 VictoriaMetrics is a fast, cost-effective, and ...
metrics-server/metrics-server 3.12.2 0.7.2 Metrics Server is a scalable, efficient source ...

albert@k8s-master:~/work/app/metric-server$ helm pull metrics-server/metrics-server

albert@k8s-master:~/work/app/metric-server$ ls
metrics-server-3.12.2.tgz

albert@k8s-master:~/work/app/metric-server$ tar xvfz metrics-server-3.12.2.tgz
metrics-server/Chart.yaml
metrics-server/values.yaml
...

albert@k8s-master:~/work/app/metric-server$ cd metrics-server/

albert@k8s-master:~/work/app/metric-server/metrics-server$ cp values.yaml my-values.yaml
albert@k8s-master:~/work/app/metric-server/metrics-server$ ls
CHANGELOG.md Chart.yaml ci my-values.yaml README.md RELEASE.md templates values.yam


복사한 my-values.yml파일하단에 defaultArgs항목에 2개 옵션 추가한다.

albert@k8s-master:~/work/app/metric-server/metrics-server$ vi my-values.yaml 
defaultArgs:
- --cert-dir=/tmp
- --kubelet-preferred-address-types=InternalIP,ExternalIP,Hostname
- --kubelet-use-node-status-port
- --metric-resolution=15s
- --kubelet-insecure-tls
- --kubelet-preferred-address-types=InternalIP


기존 kube-system 네임스페이스 오브젝트 확인시 metric-server 관련 항목 있는지 확인

(최초에는 metric-server설치하지않은사항으로 관련 항목 없음)

albert@k8s-master:~/work/app/metric-server/metrics-server$ kubectl get all --namespace kube-system
NAME READY STATUS RESTARTS AGE
pod/coredns-76f75df574-4rr47 1/1 Running 14 (8m11s ago) 7d20h
pod/coredns-76f75df574-hbsl2 1/1 Running 14 (8m11s ago) 7d20h
pod/etcd-k8s-master 1/1 Running 14 (8m16s ago) 7d20h
pod/kube-apiserver-k8s-master 1/1 Running 14 (6m31s ago) 7d20h
pod/kube-controller-manager-k8s-master 1/1 Running 15 (8m16s ago) 7d20h
pod/kube-proxy-22g2l 1/1 Running 10 (15m ago) 7d19h
pod/kube-proxy-c4x6d 1/1 Running 11 (15m ago) 7d19h
pod/kube-proxy-d9ndm 1/1 Running 14 (8m16s ago) 7d20h
pod/kube-scheduler-k8s-master 1/1 Running 15 (8m11s ago) 7d20h

NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
service/kube-dns ClusterIP 10.96.0.10 <none> 53/UDP,53/TCP,9153/TCP 7d20h

NAME DESIRED CURRENT READY UP-TO-DATE AVAILABLE NODE SELECTOR AGE
daemonset.apps/kube-proxy 3 3 3 3 3 kubernetes.io/os=linux 7d20h

NAME READY UP-TO-DATE AVAILABLE AGE
deployment.apps/coredns 2/2 2 2 7d20h

NAME DESIRED CURRENT READY AGE
replicaset.apps/coredns-76f75df574 2 2 2 7d20h


2. metric-server 설치

albert@k8s-master:~/work/app/metric-server/metrics-server$ helm install --namespace kube-system --generate-name metrics-server/metrics-server -f my-values.yaml
NAME: metrics-server-1745542217
LAST DEPLOYED: Fri Apr 25 00:50:18 2025
NAMESPACE: kube-system
STATUS: deployed
REVISION: 1
TEST SUITE: None
NOTES:
***********************************************************************
* Metrics Server *
***********************************************************************
Chart version: 3.12.2
App version: 0.7.2
Image tag: registry.k8s.io/metrics-server/metrics-server:v0.7.2


설치 후 kube-system 네임스페이스 항목 재조회

(metric-server 관련 항목들이 추가된 부분 확인됨)

albert@k8s-master:~/work/app/metric-server/metrics-server$ kubectl get all --namespace kube-system
NAME READY STATUS RESTARTS AGE
pod/coredns-76f75df574-4rr47 1/1 Running 14 (9m24s ago) 7d20h
pod/coredns-76f75df574-hbsl2 1/1 Running 14 (9m24s ago) 7d20h
pod/etcd-k8s-master 1/1 Running 14 (9m29s ago) 7d20h
pod/kube-apiserver-k8s-master 1/1 Running 14 (7m44s ago) 7d20h
pod/kube-controller-manager-k8s-master 1/1 Running 15 (9m29s ago) 7d20h
pod/kube-proxy-22g2l 1/1 Running 10 (16m ago) 7d19h
pod/kube-proxy-c4x6d 1/1 Running 11 (16m ago) 7d19h
pod/kube-proxy-d9ndm 1/1 Running 14 (9m29s ago) 7d20h
pod/kube-scheduler-k8s-master 1/1 Running 15 (9m24s ago) 7d20h
pod/metrics-server-1745542217-698f4f4b66-ktxmn 0/1 Running 0 27s

NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
service/kube-dns ClusterIP 10.96.0.10 <none> 53/UDP,53/TCP,9153/TCP 7d20h
service/metrics-server-1745542217 ClusterIP 10.106.209.97 <none> 443/TCP 27s

NAME DESIRED CURRENT READY UP-TO-DATE AVAILABLE NODE SELECTOR AGE
daemonset.apps/kube-proxy 3 3 3 3 3 kubernetes.io/os=linux 7d20h

NAME READY UP-TO-DATE AVAILABLE AGE
deployment.apps/coredns 2/2 2 2 7d20h
deployment.apps/metrics-server-1745542217 0/1 1 0 27s

NAME DESIRED CURRENT READY AGE
replicaset.apps/coredns-76f75df574 2 2 2 7d20h
replicaset.apps/metrics-server-1745542217-698f4f4b66 1 1 0 27s


3. 매트릭 서버를 통한 간단한 리소스 사용량 확인 테스트


각 노드의 리소스 사용량 확인

albert@k8s-master:~/work/app/metric-server/metrics-server$ kubectl top nodes
NAME CPU(cores) CPU% MEMORY(bytes) MEMORY%
k8s-master 359m 4% 2465Mi 64%
k8s-work1 408m 5% 2531Mi 66%
k8s-work2 246m 3% 2464Mi 64%

 

kube-system의 각 파드별 리소스 사용량 확인

albert@k8s-master:~/work/app/metric-server/metrics-server$ kubectl top pod --namespace kube-system
NAME CPU(cores) MEMORY(bytes)
coredns-76f75df574-4rr47 5m 28Mi
coredns-76f75df574-hbsl2 6m 27Mi
etcd-k8s-master 53m 88Mi
kube-apiserver-k8s-master 83m 415Mi
kube-controller-manager-k8s-master 34m 76Mi
kube-proxy-22g2l 1m 36Mi
kube-proxy-c4x6d 1m 38Mi
kube-proxy-d9ndm 1m 30Mi
kube-scheduler-k8s-master 7m 34Mi
metrics-server-1745542217-698f4f4b66-ktxmn 5m 19Mi






LIST

Copyright © 2014 visionboy.me All Right Reserved.