VISTA PREVIA PÚBLICA
Esta característica aún se encuentra en versión preliminar pública, ¡pero te animamos a que la pruebes!
Puede usar métrica desde su cuenta New Relic para escalar automáticamente aplicaciones y servicios en su clúster de Kubernetes implementando el Adaptador métrico New Relic . Este adaptador obtiene los valores métricos de New Relic y los pone a disposición de los Autoscalers pod horizontal.
El newrelic-k8s-metrics-adapter implementa la API external.metrics.k8s.io
para admitir el uso de resultados de consulta New Relic NRQL basados en métricas externas. Una vez implementado, el valor de cada métrica configurada se obtiene utilizando la API NerdGraph según la consulta NRQL configurada.
El adaptador métrico expone la métrica sobre un extremo asegurado con TLS.
New Relic métrica en clúster.
Requisitos
- Un clúster de Kubernetes que ejecuta una versión compatible.* La integración de New Relic Kubernetes.
- La integración de New Relic Kubernetes.
- New Relic Clave de usuario API de.
- No hay ningún otro Adaptador métrico externo instalado en el clúster.
Instalacion
Para instalar el adaptador métrico New Relic , proporcionamos el newrelic-k8s-metrics-adapter
gráfico de Helm, que también se incluye en el gráfico nri-bundle
utilizado para desplegar todos los componentes New Relic Kubernetes .
Si aún no está instalado, instale nuestra integración de Kubernetes.
Actualice la instalación para incluir el Adaptador métrico New Relic con el siguiente comando:
helm upgrade --install newrelic newrelic/nri-bundle \--namespace newrelic --create-namespace --reuse-values \--set metrics-adapter.enabled=true \--set newrelic-k8s-metrics-adapter.personalAPIKey=YOUR_NEW_RELIC_PERSONAL_API_KEY \--set newrelic-k8s-metrics-adapter.config.accountID=YOUR_NEW_RELIC_ACCOUNT_ID \--set newrelic-k8s-metrics-adapter.config.externalMetrics.external_metric_name.query=NRQL query
Tenga en cuenta y ajuste las siguientes banderas:
metrics-adapter.enabled
: Debe configurarse entrue
para que se instale la tabla de adaptadores métricos.newrelic-k8s-metrics-adapter.personalAPIKey
: Debe New Relic configurarse en una clave de API personal de válida.newrelic-k8s-metrics-adapter.config.accountID
: Debe configurarse en una cuenta New Relic válida de donde se obtendrán las métricas.newrelic-k8s-metrics-adapter.config.externalMetrics.external_metric_name.query
: Agrega una nueva métrica externa donde:external_metric_name
: el nombre de la métrica.query
: la consulta NRQL base que se utiliza para obtener el valor de la métrica.
Sugerencia
Alternativamente, puede usar un archivo values.yaml
que se puede pasar al comando helm con el indicador --values
. Los archivos de valores pueden contener todos los parámetros necesarios para configurar la métrica explicada en la sección de configuración .
Configuración
Puedes configurar múltiples métricas en el adaptador de métricas y cambiar algún parámetro para modificar el comportamiento del caché y filtrado de métricas. Para ver la lista completa y las descripciones de todos los parámetros que se pueden modificar, consulte el gráfico de los archivos README.md y value.yaml .
Cómo funciona
El siguiente ejemplo es un archivo de valores Helm que habilita el adaptador métrico en la instalación del gráfico nri-bundle
y configura la métrica nginx_average_requests
:
metrics-adapter: enabled: truenewrelic-k8s-metrics-adapter: personalAPIKey: <Personal API Key> config: accountID: <Account ID> externalMetrics: nginx_average_requests: query: "FROM Metric SELECT average(nginx.server.net.requestsPerSecond) SINCE 2 MINUTES AGO"
Advertencia
El lapso de tiempo predeterminado para métrica es 1h. Por lo tanto, debes definir consulta con la cláusula SINCE
para ajustar el lapso de tiempo según tu entorno y necesidades.
Hay un HPA que consume la métrica externa de la siguiente manera:
kind: HorizontalPodAutoscalerapiVersion: autoscaling/v2beta2metadata: name: nginx-scalerspec: scaleTargetRef: apiVersion: apps/v1 kind: Deployment name: nginx minReplicas: 1 maxReplicas: 10 metrics: - type: External external: metric: name: nginx_average_requests selector: matchLabels: k8s.namespaceName: nginx target: type: Value value: 10000
Según la definición de HPA, el administrador del controlador obtiene la métrica de la API métrica externa que es atendida por el adaptador métrico New Relic .
El adaptador métrico New Relic recibe la consulta incluyendo el nombre métrico nginx_average_requests
y todos los selectores, y busca un nombre métrico coincidente en la memoria interna en función de la métrica configurada. Luego, agrega los selectores a la consulta para formar una consulta final que se ejecuta usando NerdGraph para obtener el valor de New Relic. El ejemplo anterior generará una consulta como la siguiente:
FROM Metric SELECT average(nginx.server.net.requestsPerSecond) WHERE clusterName=<clusterName> AND `k8s.namespaceName`='nginx' SINCE 2 MINUTES AGO
Observe que se ha agregado automáticamente un filtro clusterName
a la consulta para excluir métrica de otros clústeres en la misma cuenta. Puede eliminarlo utilizando el parámetro de configuración removeClusterFilter
. Además, el valor se almacena en caché durante un período de tiempo definido por el parámetro de configuración cacheTTLSeconds
, cuyo valor predeterminado es 30 segundos.