Depuración de metrics-server
Virtual Private Cloud Infraestructura clásica
Los siguientes síntomas pueden indicar la necesidad de ajustar los recursos de metrics-server
:
-
El
metrics-server
se está reiniciando con frecuencia. -
La supresión de un espacio de nombres provoca que el espacio de nombres se que atascado en un estado
Terminating
ykubectl describe namespace
incluye una condición que informa de un error de descubrimiento de API de métricas. -
kubectl top pods
,kubectl top nodes
, otros mandatos dekubectl
o 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.io
genera 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 utilizando 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-server
Si 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 5
Sustituya
POD
por 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 dekubectl
excedido. -
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.