metrics-server
디버깅
가상 프라이빗 클라우드 클래식 인프라
다음 증상은 metrics-server
리소스를 조정할 필요가 있음을 나타낼 수 있습니다.
-
metrics-server
이(가) 자주 다시 시작됩니다. -
네임스페이스를 삭제하면 네임스페이스가
Terminating
상태로 고착되고kubectl describe namespace
에는 메트릭 API 발견 오류를 보고하는 조건이 포함됩니다. -
kubectl top pods
,kubectl top nodes
, 기타kubectl
명령 또는 Kubernetes API를 사용하는 애플리케이션은 다음과 같이 Kubernetes 오류를 로깅합니다.The server is currently unable to handle the request (get pods.metrics.k8s.io)
Discovery failed for some groups, 1 failing: unable to retrieve the complete list of server APIs: metrics.k8s.io/v1beta1: the server is currently unable to handle the request
-
HorizontalPodAutoscalers(HPA)는 배치를 스케일링하지 않습니다.
-
kubectl get apiservices v1beta1.metrics.k8s.io
을(를) 실행하면 다음과 같은 상태가 됩니다.NAME SERVICE AVAILABLE AGE v1beta1.metrics.k8s.io kube-system/metrics-server False (FailedDiscoveryCheck) 139d
클러스터에는 kube-system
네임스페이스의 metrics-server
배치에서 제공하는 메트릭 서비스가 있습니다. metrics-server
리소스 요청 및 한계는 클러스터의 노드 수를 기반으로 하며 작업자 노드당 30개 이하의 팟이 있는 클러스터에 맞게 최적화됩니다. 메모리 요청이 너무 적으면 메모리 부족 오류로 실패할 수 있으며 매우 느리게 응답할 수 있습니다.
CPU 요청이 너무 적으면 CPU 조절로 인해 활동 및 준비 프로브가 실패할 수 있습니다.
metrics-server
문제점은 다른 구역에서도 발생할 수 있습니다. 제어 플레인이 Konnectivity를 사용하여 메트릭 서버와 통신할 수 없는 경우 메트릭 API를 사용할 수 없습니다. 승인 제어 웹훅을 사용하면 제어 플레인에서 metrics-server
팟을 포함하는 팟을 작성할 수 없습니다.
문제점을 해결하려면 다음 단계를 수행하십시오.
-
메트릭-서버 팟이 있는지 확인하십시오.
kubectl get pod -n kube-system -l k8s-app=metrics-server
팟이 나열되지 않으면
admission-control
웹훅에 문제가 있을 수 있습니다. 중단된 웹훅으로 인해 클러스터 조작이 실패하는 이유는 무엇입니까?를 참조하십시오. -
apiserver가
metrics-server
에 연결할 수 있는지 확인하십시오.kubectl logs POD -n kube-system -c metrics-server --tail 5
POD
을(를) 이전에 표시된 팟 이름으로 바꾸십시오. 리턴된 로그의 컨텐츠는 중요하지 않습니다.<workerIP>:10250: getsockopt: connection timed out
과(와) 같은 텍스트가 포함된 오류 메시지가 표시되면kubectl
명령 제한시간 종료를 참조하십시오. -
이전 단계에서 문제점이 표시되지 않으면
metrics-server
.에 대한 리소스를 조정하십시오. 클러스터 메트릭 제공자 리소스 조정을 참조하십시오.