Kubernetes/삽질

[k8s] metrics-server 설치 후 Metrics API not available 에러 발생 시

비번변경 2024. 3. 29. 02:51

현상

Kubernetes 클러스터에서 top 명령어를 사용할 수 있도록 아래의 명령어로 metrics-server를 설치하였다.

kubectl apply -f https://github.com/kubernetes-sigs/metrics-server/releases/latest/download/components.yaml

리소스 배포는 정상적으로 완료했으나 여전히 top 명령어를 사용할 수 없는 상태다. 

원인 파악하고 문제를 해결해보자.

 

 

원인 파악

확인해 보니 metrics-server pod가 정상적인 Running 상태로 전환되지 않고 있었다.

kubectl get pods -n kube-system metrics-server

 

metrics-server pod의 이벤트를 확인해보니 readinessProbe를 만족하지 못하고 있는 상태인 것으로 보인다.

kubectl get events -n kube-system | grep metrics-server

 

kubectl logs 명령어로 pod의 상세 로그를 확인해 보면 TLS 관련 문제인 것으로 보인다.

kubectl logs -n kube-system metrics-server

 

즉, metrics-server는 기본적으로 https를 이용해 kubernetes api server와 통신하는데, 현재 사용 중인 kubernetes에서는 https 통신을 지원하고 있지 않아 발생하는 문제로 추정된다.

 

 

해결

metrics-server가 https를 사용하지 않도록 구성한다. metrics-server의 옵션에 아래 두 개 옵션을 추가한다.

  • --kubelet-insecure-tls
  • --kubelet-preferred-address-types=InternalIP

리소스 정의 파일을 이용하여 설치했으므로 리소스 정의 파일을 다운로드 및 수정하여 재배포하거나 deployment를 edit 하면 된다.

kubectl edit deployments.apps -n kube-system metrics-server

변경한 설정을 저장하고 잠시 기다리면 metrics-server pod가 정상적으로 동작하는 모습을 확인할 수 있다.

 

 

동작 확인

kubectl top 명령어가 정상적으로 동작하는지 확인한다.

kubectl top nodes

 

 

참고 문서

https://gurumee92.tistory.com/323