Metrics Server es una fuente escalable y eficiente de métricas de recursos de contenedores para las canalizaciones de escalado automático integradas de Kubernetes.
Metrics Server recopila métricas de recursos de Kubelets y las expone en el apiserver de Kubernetes a través de Metrics API para que las utilicen Horizontal Pod Autoscaler y Vertical Pod Autoscaler. kubectl top
también puede acceder a la API de métricas, lo que facilita la depuración de canalizaciones de escalado automático.
Precaución
Metrics Server está diseñado únicamente para fines de escalado automático. Por ejemplo, no lo utilice para reenviar métricas a soluciones de monitoreo ni como fuente de métricas de soluciones de monitoreo. En tales casos, recopile métricas directamente desde el punto final de Kubelet /metrics/resource
.
El servidor de métricas ofrece:
Puede utilizar Metrics Server para:
No utilice Metrics Server cuando necesite:
Para casos de uso no compatibles, consulte soluciones de monitoreo completas como Prometheus.
Metrics Server tiene requisitos específicos para la configuración de red y clúster. Estos requisitos no son los predeterminados para todas las distribuciones de clústeres. Asegúrese de que la distribución de su clúster admita estos requisitos antes de utilizar Metrics Server:
--kubelet-insecure-tls
al servidor de métricas).hostNetwork
está habilitado). Lea más sobre la comunicación entre el plano de control y el nodo..status.addresses
y puerto en el campo .status.daemonEndpoints.kubeletEndpoint.port
(predeterminado 10250). Metrics Server elegirá la dirección del primer nodo según la lista proporcionada por el indicador de línea de comando kubelet-preferred-address-types
( InternalIP,ExternalIP,Hostname
predeterminados en los manifiestos). Metrics Server se puede instalar directamente desde el manifiesto YAML o mediante el gráfico oficial de Helm. Para instalar la última versión de Metrics Server desde el manifiesto de componentes.yaml , ejecute el siguiente comando.
kubectl apply -f https://github.com/kubernetes-sigs/metrics-server/releases/latest/download/components.yaml
Las instrucciones de instalación para versiones anteriores se pueden encontrar en las versiones de Metrics Server.
Servidor de métricas | Grupo/versión de API de métricas | Versión de Kubernetes compatible |
---|---|---|
0.7.x | metrics.k8s.io/v1beta1 | 1.19+ |
0.6.x | metrics.k8s.io/v1beta1 | 1.19+ |
0.5.x | metrics.k8s.io/v1beta1 | *1.8+ |
0.4.x | metrics.k8s.io/v1beta1 | *1.8+ |
0.3.x | metrics.k8s.io/v1beta1 | 1.8-1.21 |
*Las versiones de Kubernetes inferiores a la v1.16 requieren pasar el indicador de línea de comando --authorization-always-allow-paths=/livez,/readyz
Metrics Server se puede instalar en modo de alta disponibilidad directamente desde un manifiesto YAML o mediante el gráfico oficial de Helm estableciendo el valor de replicas
en más de 1
. Para instalar la última versión de Metrics Server en modo de alta disponibilidad desde el manifiesto high-availability.yaml , ejecute el siguiente comando.
En Kubernetes v1.21+:
kubectl apply -f https://github.com/kubernetes-sigs/metrics-server/releases/latest/download/high-availability-1.21+.yaml
En Kubernetes v1.19-1.21:
kubectl apply -f https://github.com/kubernetes-sigs/metrics-server/releases/latest/download/high-availability.yaml
Nota
Esta configuración requiere tener un clúster con al menos 2 nodos en los que se pueda programar Metrics Server.
Además, para maximizar la eficiencia de esta configuración de alta disponibilidad, se recomienda agregar el indicador CLI --enable-aggregator-routing=true
al kube-apiserver para que las solicitudes enviadas a Metrics Server tengan un equilibrio de carga entre las 2 instancias.
El gráfico Helm se mantiene como un componente adicional dentro de este repositorio y se publica en un repositorio de gráficos respaldado en la rama gh-pages
. Se publicará una nueva versión del gráfico para cada versión de Metrics Server y también se puede publicar de forma independiente si es necesario. No se debe hacer referencia directa al gráfico en la rama master
, ya que puede contener modificaciones desde su última publicación. Para ver el código del gráfico, utilice la etiqueta de publicación del gráfico.
Metrics Server requiere la capacidad CAP_NET_BIND_SERVICE
para vincularse a puertos privilegiados como no raíz. Si está ejecutando Metrics Server en un entorno que utiliza PSS u otros mecanismos para restringir las capacidades del pod, asegúrese de que Metrics Server tenga permiso para usar esta capacidad. Esto se aplica incluso si utiliza el indicador --secure-port
para cambiar el puerto que Metrics Server vincula a un puerto sin privilegios.
A partir de la versión 0.5.0, Metrics Server viene con solicitudes de recursos predeterminadas que deberían garantizar un buen rendimiento para la mayoría de las configuraciones de clústeres de hasta 100 nodos:
El uso de recursos de Metrics Server depende de múltiples dimensiones independientes, lo que crea un envolvente de escalabilidad. La configuración predeterminada de Metrics Server debería funcionar en clústeres que no superen ninguno de los umbrales que se enumeran a continuación:
Cantidad | Umbral de espacio de nombres | Umbral de clúster |
---|---|---|
#Nodos | n / A | 100 |
#Pods por nodo | 70 | 70 |
#Implementaciones con HPA | 100 | 100 |
Los recursos se pueden ajustar proporcionalmente según la cantidad de nodos en el clúster. Para clústeres de más de 100 nodos, asigne adicionalmente:
Puede utilizar el mismo enfoque para reducir las solicitudes de recursos, pero existe un límite en el que esto puede afectar otras dimensiones de escalabilidad, como la cantidad máxima de pods por nodo.
Dependiendo de la configuración de su clúster, es posible que también necesite cambiar los indicadores pasados al contenedor de Metrics Server. Banderas más útiles:
--kubelet-preferred-address-types
: la prioridad de los tipos de direcciones de nodo utilizados al determinar una dirección para conectarse a un nodo en particular (predeterminado [nombre de host, DNS interno, IP interna, DNS externo, IP externa])--kubelet-insecure-tls
: no verifica la CA de los certificados de entrega presentados por Kubelets. Sólo con fines de prueba.--requestheader-client-ca-file
: especifique un paquete de certificados raíz para verificar los certificados del cliente en las solicitudes entrantes.--node-selector
-Se puede completar para extraer las métricas de los nodos especificados en función de las etiquetasPuede obtener una lista completa de indicadores de configuración de Metrics Server ejecutando:
docker run --rm registry.k8s.io/metrics-server/metrics-server:v0.7.0 --help
Metrics Server es un componente del canal de métricas principales descrito en la arquitectura de monitoreo de Kubernetes.
Para obtener más información, consulte:
Antes de publicar un problema, primero consulte las Preguntas frecuentes y los Problemas conocidos.
Aprenda cómo interactuar con la comunidad de Kubernetes en la página de la comunidad.
Puede comunicarse con los mantenedores de este proyecto en:
Este proyecto es mantenido por SIG Instrumentation.
La participación en la comunidad de Kubernetes se rige por el Código de conducta de Kubernetes.