Solución de problemas del servidor de métricas en clústeres de Kubernetes
Descubre cómo depurar y resolver problemas habituales relacionados con el servidor de métricas de tu clúster de Kubernetes, incluyendo síntomas, causas e instrucciones paso a paso.
Nube privada virtual Infraestructura clásica
Los siguientes síntomas pueden indicar la necesidad de ajustar los recursos de metrics-server:
-
El
metrics-serverse está reiniciando con frecuencia. -
La supresión de un espacio de nombres provoca que el espacio de nombres se que atascado en un estado
Terminatingykubectl describe namespaceincluye una condición que informa de un error de descubrimiento de API de métricas. -
kubectl top pods,kubectl top nodes, otros mandatos dekubectlo aplicaciones que utilizan la API de Kubernetes para registrar errores de Kubernetes tales como: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) no escalan los despliegues.
-
La ejecución de
kubectl get apiservices v1beta1.metrics.k8s.iogenera un estado como:NAME SERVICE AVAILABLE AGE v1beta1.metrics.k8s.io kube-system/metrics-server False (FailedDiscoveryCheck) 139d
El clúster tiene un servicio de métricas proporcionado por el despliegue de metrics-server en el espacio de nombres de kube-system. Las solicitudes y límites de recursos de metrics-server se basan en el número
de nodos del clúster y se optimizan para clústeres con 30 o menos pods por nodo de trabajador. Si las solicitudes de memoria son demasiado bajas, puede fallar con errores de falta de memoria y puede responder muy lento. Si las solicitudes de
CPU son demasiado bajas, es posible que falle la actividad y los sondeos de preparación debido a la limitación de la CPU.
Los problemas con metrics-server también pueden causar problemas en otras áreas. Las API de métricas no están disponibles si el plano de control no puede comunicarse con el servidor de métricas mediante Konnectivity. Los webhooks
de control de admisión pueden impedir que el plano de control cree pods, incluido el pod metrics-server.
Siga estos pasos para resolver el problema.
-
Verifique que existen pods de servidor de métricas.
kubectl get pod -n kube-system -l k8s-app=metrics-serverSi no se lista ningún pod, es probable que haya un problema con un webhook de
admission-control. Consulte ¿Por qué fallan las operaciones de clúster debido a un webhook roto?. -
Verifique que apiserver puede conectarse a
metrics-server.kubectl logs POD -n kube-system -c metrics-server --tail 5Sustituya
PODpor el nombre de pod mostrado anteriormente. El contenido de los registros devueltos no importa.Si recibe un mensaje de error que contenga texto como
<workerIP>:10250: getsockopt: connection timed out, consulte tiempo de espera de mandatos dekubectlexcedido. -
Si los pasos anteriores no muestran un problema, ajuste los recursos para el
metrics-server. Consulte Ajuste de los recursos del proveedor de métricas del clúster.