Prepararse para un evento de demanda máxima requiere tiempo: debe establecer su línea de base, evaluar sus acuerdos de nivel de servicio y alinear a todos sus equipos en torno a los mismos datos. Escalar su infraestructura tiene consideraciones similares, pero también implica proyectar las necesidades del sistema frente al costo. ¿Cómo se equilibran los dos sin sacrificar el rendimiento? ¿Dónde está el umbral de lo suficientemente bueno?
Una solución es el escalado automático de pod horizontal (HPA), que se crea con nuestra integración de Kubernetes con Pixie. Una vez que haya configurado HPA, su clúster de Kubernetes asigna automáticamente más pods cuando la demanda alcanza su punto máximo y luego los desasigna cuando la demanda cae. Esto le permite evitar las preocupaciones de costos al anticipar la demanda.
El tutorial asume que estás usando clúster de Kubernetes. Para configurar HPA, necesitará:
Un clúster de Kubernetes que ejecuta una versión compatible.
Tu usuario New Relic
Ningún otro adaptador métrico externo instalado en el cluster
Objetivos
Este tutorial le guiará en la configuración de un entorno de demostración para HPA. Vas a:
- Instale la integración de New Relic Kubernetes
- Configurar un entorno de ejemplo para probar el escalado automático
Reenviar métrica a Kubernetes
Clona nuestro repositorio de laboratorio New Relic Pixie
Clona el siguiente repositorio de Github:
$git clone https://github.com/newrelic-experimental/pixie-lab-materials$cd pixie-lab-materials/main$./setup.sh
El script setup.sh
activa un nuevo clúster de minikube utilizando el controlador de hiperkit compatible con Pixie. Luego configura la memoria de su red y la CPU para un rendimiento óptimo con Pixie y crea todos los pods y servicios que componen la aplicación de demostración.
En una nueva ventana de terminal, abra un túnel minikube:
$minikube tunnel -p minikube-pixie-lab
Deberías tener dos terminales:
- Tu túnel, que permanece abierto para acceder a tu aplicación demo.
- Un lugar para ejecutar comandos para el tutorial.
Instale la integración de Kubernetes con Pixie
Siga nuestra instalación guiada para instalar la integración de New Relic Kubernetes. Esto conecta New Relic a su clúster de Kubernetes. Asegurate que:
Marque Instant service-level insights, Full-body requests y Application profiles through Pixie para habilitar Pixie.
Mantener todos los demás elementos predeterminados marcados
Una vez que haga clic en Continuar, copie y pegue ese comando en su entorno de desarrollo.
Instale el adaptador métrico New Relic
Para instalar el adaptador métrico New Relic, utilice la tabla de timón newrelic-k8s-metrics-adapter
. Si ha utilizado nri-bundle-chart
para implementar cualquier componente de New Relic Kubernetes, entonces tiene acceso a este gráfico de Helm.
$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.manipulate_average_requests.query="FROM Metric SELECT average(http.server.duration) WHERE instrumentation.provider='pixie'"
Esto es lo que hacen estas banderas:
metrics-adapter.enabled
: Se establece entrue
para instalar la tabla de adaptadores métricos.newrelic-k8s-metrics-adapter.personalAPIKey
: establece su clave de API de New Relic.newrelic-k8s-metrics-adapter.accountID
: El ID de la cuenta que reenvía métrica.newrelic-k8s-metrics-adapter.config.externalMetrics.external_metric_name.query
: Agrega una nueva métrica externa con la siguiente información:external_metric_name
: el nombre de la métrica.query
: la consulta NRQL base para la métrica.
Confirme que su consulta NRQL sea precisa
Debes probar tu consulta antes de enviar métrica al escalador automático de New Relic. Vaya a one.newrelic.com > Query your Data, luego copie y pegue la siguiente consulta NRQL:
FROM Metric SELECT average(http.server.duration) WHERE instrumentation.provider='pixie'
Configura tu escalador automático
Desde el directorio pixie-lab-materials/main/kube
, cree un nuevo archivo llamado hpa.yml
. El adaptador métrico New Relic envía datos al administrador del controlador, que está definido por la definición HPA en este archivo YAML.
kind: HorizontalPodAutoscalerapiVersion: autoscaling/v2beta2metadata: name: manipulate-scalerspec: scaleTargetRef: apiVersion: apps/v1 kind: Deployment name: manipulation-service minReplicas: 1 maxReplicas: 10 metrics: - type: External external: metric: name: manipulate_average_requests target: type: Value value: 100
Aplique el nuevo archivo YAML ejecutando:
$cd pixie-lab-materials/main/kube$kubectl apply -f hpa.yaml
Verifique su trabajo: agregue carga para activar el escalado automático
- Navegue a su sitio implementando con
kubectl get services
. - Abra el
EXTERNAL-IP
desde su servicio frontend en su browser. - Instale
hey
y Go v1.17 conbrew install hey
. - Envía solicitud GET al
EXTERNAL-IP
conhey -n 10 -c 2 -m GET http://<EXTERNAL-IP>
. - Mire sus llamadas automáticas de HPA con
watch kubnectl get hpa
.
Ha configurado HPA correctamente si el pod escala automáticamente la cantidad de réplicas a medida que aumenta el tiempo promedio de solicitud HTTP. Puede ajustar la configuración de sus propios servicios para que New Relic y HPA se escalen automáticamente según sea necesario.