본문 바로가기
카테고리 없음

[k8s] kind metrics-server 설치

by 쿡노트 2024. 6. 20.
반응형

kind로 만든 Kubernetes 클러스터에 metrics-server 를 helm으로 설치 하는 과정을 작성 하겠습니다.

 

kind

Kubernetes 구축하기 위해, 여러 가지 도구가 있는데 (minikube, kubeadm, kubespray)
그중에 주로 로컬 개발 용도의 로컬 Kubernetes 클러스터 배포가 간단한 kind(Kubernetes IN Docker)가 있습니다.
참조 - kind 공식 문서 URL : https://kind.sigs.k8s.io/

 

metrics-server

Kubernetes 클러스터에 metrics-server를 설치하면 리소스 지표를 모니터링할 수 있습니다. (주로 kubectl top)

세부적인 모니터링은 Kubernetes에 프로메테우스와 그라파나를 설치 해서 볼 수 있습니다.

metrics-server 설치 후 리소스 모니터링 예시 (kubectl top node, kubectl top pod)

[root@k8s ~]# kubectl top node 
NAME                 CPU(cores)   CPU%   MEMORY(bytes)   MEMORY%   
kind-control-plane   352m         1%     6473Mi          3%        

[root@k8s ~]# kubectl top pod
NAME                                          CPU(cores)   MEMORY(bytes)   
metrics-server-dff86cf4f-zgncg                6m           18Mi                    
operator-manager-6bdc78f596-gs4z4             4m           35Mi

helm Chart를 이용한 metrics-server 설치

1. metrics-server helm repo 등록 & 업데이트

[root@k8s ~]# helm repo add metrics-server https://kubernetes-sigs.github.io/metrics-server/
"metrics-server" has been added to your repositories

[root@k8s ~]# helm repo update
Hang tight while we grab the latest from your chart repositories...
...Successfully got an update from the "metrics-server" chart repository
Update Complete. ⎈Happy Helming!⎈

2. metrics-server 설치

[root@k8s ~]# helm upgrade --install metrics-server metrics-server/metrics-server
Release "metrics-server" does not exist. Installing it now.
NAME: metrics-server
LAST DEPLOYED: Fri Jun 14 14:16:17 2024
NAMESPACE: voperator
STATUS: deployed
REVISION: 1
TEST SUITE: None
NOTES:
***********************************************************************
* Metrics Server                                                      *
***********************************************************************
  Chart version: 3.12.1
  App version:   0.7.1
  Image tag:     registry.k8s.io/metrics-server/metrics-server:v0.7.1
***********************************************************************

**에러처리 - tls 인증 관련 옵션 추가

설치 완료 후 top 명령어는 기본적으로 에러가 발생한다.

args '- --kubelet-insecure-tls' 옵션을 추가하면 해결됨

[root@k8s ~]# kubectl top node
Error from server (ServiceUnavailable): the server is currently unable to handle the request (get nodes.metrics.k8s.io)

#상세한 오류 확인 metrics-server pod 명 확인
[root@k8s ~]# kubectl get pod
NAME                                                     READY   STATUS    RESTARTS   AGE
metrics-server-dff86cf4f-zgncg                           1/1     Running   0          5d19h

#pod 하단의 Events 항목 확인 서버 연결 문제 500에러 확인
[root@k8s ~]# kubectl describe pod metrics-server-dff86cf4f-zgncg
  Type     Reason     Age                   From               Message
  ----     ------     ----                  ----               -------
  Warning  Unhealthy  72s (x32 over 5m52s)  kubelet            Readiness probe failed: HTTP probe failed with statuscode: 500

3. metrics-server.yaml File 생성, tls 인증 관련 옵션 추가 및 재배포

이미 배포된 metrics-server에 설정을 편집 (편집 방법은 여러개 있지만, yaml File로 저장해서 vi로 yaml 파일 편집 후 재배포)

#배포된 metrics-server의 설정을 yaml 파일로 생성
[root@k8s ~]# kubectl get deploy metrics-server -o yaml > metrics-server.yaml

#tls 인증 관련 옵션 추가
[root@k8s ~]# vi metrics-server.yaml
spec:
      containers:
      - args:
        - --secure-port=10250
        - --cert-dir=/tmp
        - --kubelet-preferred-address-types=InternalIP,ExternalIP,Hostname
        - --kubelet-use-node-status-port
        - --metric-resolution=15s
        - --kubelet-insecure-tls #옵션 추가

#metrics-server.yaml 재배포
[root@k8s ~]# kubectl apply -f metrics-server.yaml

#리소스 모니터링
[root@k8s ~]# kubectl top node
[root@k8s ~]# kubectl top pod

 

반응형