관리 메뉴

피터의 개발이야기

[kubernetes] Metrics Server 설치, Metrics API not available 에러 해결 본문

Kubernetes/트러블슈팅&장애대응

[kubernetes] Metrics Server 설치, Metrics API not available 에러 해결

기록하는 백앤드개발자 2022. 8. 19. 03:02
반응형

 

ㅁ 개요

  kubernetes 환경에서 노드와 자원의 상태를 확인하기 위해 kubectl top 명령어를 자주 사용한다. 신규 EKS를 설치하고 TOP 명령어가 작동하지 않아 그 원인을 찾고 해결하는 과정을 정리하였다.

 

ㅁ Metrics Server 란?

Metrics Server는 클래스터 전체의 리소스 사용 데이터를 어그리게이션합니다. 각 노드에 설치된 kublet을 통해서 노드나 컨테인너의 CPU나 메모리 사용량 같은 메트릭을 수집한다. HPA(horizontal pod autoscaler)나 kubectl top 명령어를 사용하려면 metrics-server를 사용해야 한다.

 

 

ㅁ 에러 발생

[ec2-user@ip-172-31-43-214 ~]$ kubectl top no
error: Metrics API not available

 

 

ㅁ 원인분석

 ㅇ 운영환경에서는 리소스의 자원을 확인 할 수 있는 TOP 명령어가 잘 작동하였다.

 ㅇ metrics-server 파드가 떠 있어서 노드와 파드의 리소스 메트릭스를 수집하고 있었다.

 ㅇ 신규EKS에는 metrics-server가 가동하고 있지 않아서 발생한 문제였다.

 ㅇ Amazon EKS에서는 Metrics Server가 기본적으로 설치되지 않는다.

 ㅇ 클러스터를 신규 생성했고 Metrics Server를 사용하여 컨테이너,
     포드 또는 노드에서 지표를 수집하고자 하는 경우 Metrics Server를 설치해야한다.

 

 

 

ㅁ  Kubernetes 지표 서버 설치

$ kubectl apply -f https://github.com/kubernetes-sigs/metrics-server/releases/latest/download/components.yaml
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

 

 

ㅁ Kubernetes 지표 서버 테스트

[ec2-user@ip-172-31-43-214 ~]$ kubectl top no
NAME                                                CPU(cores)   CPU%   MEMORY(bytes)   MEMORY%
ip-192-168-78-251.ap-northeast-2.compute.internal   58m          3%     564Mi           16%
[ec2-user@ip-172-31-43-214 ~]$ kubectl top po -n prometheus
NAME                                            CPU(cores)   MEMORY(bytes)
prometheus-kube-state-metrics-5547d95bd-vngn6   1m           9Mi
prometheus-node-exporter-xk4tr                  0m           2Mi
prometheus-pushgateway-74d44dfb7f-w4l4v         1m           6Mi

 ㅇ 노드의 CPU, 메모리 사용량을 확인할 수 있다.  

 

ㅇmetrics-server가 가동된 것을 확인할 수 있다.

 

 

 

ㅁ 트러블슈팅

 ㅇ minikube 환경에서 metrics-server 설치하는 과정에서 다음과 같은 에러가 발생하였다.

E0821 02:23:56.720430       1 scraper.go:140] "Failed to scrape node" err="Get \"https://192.168.64.2:10250/metrics/resource\": x509: cannot validate certificate for 192.168.64.2 because it doesn't contain any IP SANs" node="minikube"
I0821 02:23:57.697089       1 server.go:187] "Failed probe" probe="metric-storage-ready" err="no metrics to serve"

 ㅇ cannot validate certificate for 192.168.64.2  because it doesn't contain any IP SANs인 경우에는 서버에서 보내온 인증서의 서명을 확인하지 못하는 TLS 인증서 관련 문제이므로 kubelet-insecure-tls 파라메터를 사용하면 된다. 

 ㅇ kubectl edit deployments.apps -n kube-system metrics-server 명령어로 deployment를 수정하여 아래 파라메터를 추가하여 해결하였다.

 

 

 ㅇ 적용 후 top명령어 확인이 가능하였고 로그 상에서도 다른 에러는 발생하지 않았다.

 

 

ㅁ 함께 보면 좋은 사이트

 

Amazon EKS에서 Metrics Server로 지표 수집

참고: 명령 및 이미지 값은 Metrics Server가 배포된 방식과 이미지가 저장된 위치에 따라 다를 수 있습니다. 명령에 --secure-port 파라미터가 포함되어 있는 경우 포드에서 노출한 포트(앞의 예제에서

aws.amazon.com

 

Kubernetes 지표 서버 설치 - Amazon EKS

리소스 사용량 지표의 정확한 소스가 필요한 경우나 모니터링 솔루션으로 사용하려는 경우에는 Metrics Server를 사용하지 마십시오.

docs.aws.amazon.com

 

GitHub - kubernetes-sigs/metrics-server: Scalable and efficient source of container resource metrics for Kubernetes built-in aut

Scalable and efficient source of container resource metrics for Kubernetes built-in autoscaling pipelines. - GitHub - kubernetes-sigs/metrics-server: Scalable and efficient source of container reso...

github.com

 

metrics-server error because it doesn't contain any IP SANs · Issue #196 · kubernetes-sigs/metrics-server

when I finish deploy the metrics-server ,Go to the log and find the following error E1229 07:09:05.013998 1 summary.go:97] error while getting metrics summary from Kubelet kube-node3(172.16.52.132:...

github.com

 

반응형
Comments