IBM Cloud Docs
metrics-server 디버깅

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 팟을 포함하는 팟을 작성할 수 없습니다.

문제점을 해결하려면 다음 단계를 수행하십시오.

  1. 메트릭-서버 팟이 있는지 확인하십시오.

    kubectl get pod -n kube-system -l k8s-app=metrics-server
    

    팟이 나열되지 않으면 admission-control 웹훅에 문제가 있을 수 있습니다. 중단된 웹훅으로 인해 클러스터 조작이 실패하는 이유는 무엇입니까?를 참조하십시오.

  2. apiserver가metrics-server에 연결할 수 있는지 확인하십시오.

    kubectl logs POD -n kube-system -c metrics-server --tail 5
    

    POD을(를) 이전에 표시된 팟 이름으로 바꾸십시오. 리턴된 로그의 컨텐츠는 중요하지 않습니다.

    <workerIP>:10250: getsockopt: connection timed out과(와) 같은 텍스트가 포함된 오류 메시지가 표시되면 kubectl 명령 제한시간 종료를 참조하십시오.

  3. 이전 단계에서 문제점이 표시되지 않으면 metrics-server.에 대한 리소스를 조정하십시오. 클러스터 메트릭 제공자 리소스 조정을 참조하십시오.