Datadog Kubernetes Autoscaling monitoriza de forma continua tus recursos de Kubernetes para proporcionar recomendaciones inmediatas de escalado y escalado automático multidimensional de tus cargas de trabajo de Kubernetes. Puedes desplegar el escalado automático a través de la interfaz web de Datadog o con un recurso DatadogPodAutoscaler
personalizado.
Cómo funciona
Datadog utiliza métricas de uso en tiempo real e históricas y señales de eventos de tus Datadog Agents existentes para hacer recomendaciones. De esta forma, puedes examinar estas recomendaciones y optar por desplegarlas.
Por defecto, Datadog Kubernetes Autoscaling utiliza valores estimados de coste de CPU y memoria para mostrar oportunidades de ahorro y cálculos del impacto. También puedes utilizar Kubernetes Autoscaling junto con Cloud Cost Management para obtener informes basados en los costes exactos de tu tipo de instancia.
El escalado automático de cargas de trabajo se realiza mediante un recurso DatadogPodAutoscaler
personalizado que define el comportamiento del escalado a nivel de carga de trabajo individual. El Datadog Cluster Agent actúa como controlador de este recurso personalizado.
Cada clúster puede tener un máximo de 1000 cargas de trabajo optimizadas con Datadog Kubernetes Autoscaler.
Compatibilidad
- Distribuciones: Esta función es compatible con todas las distribuciones Kubernetes compatibles de Datadog.
- Escalado automático de cargas de trabajo: Esta función es una alternativa a Horizontal Pod Autoscaler (HPA) y a Vertical Pod Autoscaler (VPA). Datadog recomienda que elimines cualquier HPA o VPA de una carga de trabajo antes de utilizar Datadog Kubernetes Autoscaling para optimizarla. Estas cargas de trabajo se identifican en la aplicación en tu nombre.
Requisitos
- La configuración remota debe estar activada para tu organización. Consulta Activación de la configuración remota.
- Helm, para actualizar tu Datadog Agent.
- (Para usuarios del Datadog Operator) CLI
kubectl
, para actualizar el Datadog Agent. - Los siguientes permisos de usuario:
- Gestión de organización (necesario para la configuración remota)
- Escritura de claves de API (necesario para la configuración remota)
- Lectura del escalado de la carga de trabajo
- Escritura del escalado de la carga de trabajo
- Gestión del escalado automático
Configuración
- Asegúrate de que estás utilizando la v1.8.0 o posterior del Datadog Operator. Para actualizar tu Datadog Operator:
helm upgrade datadog-operator datadog/datadog-operator
- Añade lo siguiente a tu archivo de configuración
datadog-agent.yaml
:
spec:
features:
orchestratorExplorer:
customResources:
- datadoghq.com/v1alpha2/datadogpodautoscalers
autoscaling:
workload:
enabled: true
eventCollection:
unbundleEvents: true
override:
clusterAgent:
image:
tag: 7.66.1
env:
- name: DD_AUTOSCALING_FAILOVER_ENABLED
value: "true"
nodeAgent:
image:
tag: 7.66.1 # or 7.66.1-jmx
env:
- name: DD_AUTOSCALING_FAILOVER_ENABLED
value: "true"
- name: DD_AUTOSCALING_FAILOVER_METRICS
value: container.memory.usage container.cpu.usage
clusterChecksRunner:
image:
tag: 7.66.1 # or 7.66.1-jmx
- El controlador de admisión está activado por defecto con el Datadog Operator. Si lo desactivaste, vuelve a activarlo añadiendo las siguientes líneas resaltadas a
datadog-agent.yaml
:
...
spec:
features:
admissionController:
enabled: true
...
- Aplica la configuración actualizada de
datadog-agent.yaml
:
kubectl apply -n $DD_NAMESPACE -f datadog-agent.yaml
- Asegúrate de que estás utilizando el Agent y la v7.66.1 o posterior del Cluster Agent. Añade lo siguiente a tu archivo de configuración
datadog-values.yaml
:
datadog:
autoscaling:
workload:
enabled: true
kubernetesEvents:
unbundleEvents: true
- El controlador de admisión está activado por defecto en el Datadog Helm chart. Si lo desactivaste, vuelve a activarlo añadiendo las siguientes líneas resaltadas a
datadog-values.yaml
:
...
clusterAgent:
image:
tag: 7.66.1
admissionController:
enabled: true
...
- Update your Helm version:
- Vuelve a desplegar el Datadog Agent con tu
datadog-values.yaml
actualizado:
helm upgrade -f datadog-values.yaml <RELEASE_NAME> datadog/datadog
Estimaciones de costes y ahorros por inactividad
Si Cloud Cost Management está habilitado dentro de una organización, Datadog Kubernetes Autoscaling muestra estimaciones de costes y ahorros por inactividad, basadas en el coste exacto de tu facturación de las instancias subyacentes monitorizadas.
Consulta las instrucciones de configuración de Cloud Cost para AWS, Azure o Google Cloud.
Los datos de Cloud Cost Management mejoran Kubernetes Autoscaling, pero no son necesarios. Todas las recomendaciones de cargas de trabajo y decisiones de escalado automático de Datadog son válidas y funcionales sin Cloud Cost Management.
Si Cloud Cost Management no está activado, Datadog Kubernetes Autoscaling muestra estimaciones de costes y ahorros por inactividad utilizando las siguientes fórmulas y valores fijos:
Clúster inactivo: (max(cpu_usage, cpu_requests, cpu_capacity) - max(cpu_usage, cpu_requests)) *0.0295 + (max(memory_usage, memory_requests, memory_capacity) - max(memory_usage, memory_requests)) * 0.0053
Carga de trabajo inactiva: (max(cpu_usage, cpu_requests) - cpu_usage) *0.0295 + (max(memory_usage, memory_requests) - memory_usage) * 0.0053
Valores fijos:
- 0,0295 $ por hora de núcleo de CPU
- 0,0053 $ por hora de GB de memoria
Los valores de los costes fijos están sujetos a ajustes a lo largo del tiempo.
Utilización
Identificar recursos para redimensionar
La página de Resumen de Autoscaling proporciona un punto de partida para que los equipos de plataforma comprendan todas las oportunidades de ahorro de recursos Kubernetes en toda una organización y filtren por clústeres y espacios de nombres clave. La vista de Escalado de clústeres proporciona información de cada clúster sobre la totalidad de CPU inactiva, el total de memoria inactiva y los costes. Haz clic en un clúster para obtener información detallada y una tabla de las cargas de trabajo del clúster. Si eres propietario de una aplicación o servicio individual, también puedes filtrar por el nombre de tu equipo o servicio directamente desde la vista de la lista de Escalado de cargas de trabajo.
Haz clic en Optimize (Optimizar) en cualquier carga de trabajo para ver su recomendación de escalado.
Activar Autoscaling para una carga de trabajo
Después de identificar una carga de trabajo para optimizar, Datadog recomienda inspeccionar su recomendación de escalado. También puedes hacer clic en Configure Recommendation (Configurar recomendación) para añadir restricciones o ajustar los niveles de uso objetivo.
Cuando estés listo para activar Autoscaling para una carga de trabajo, tienes dos opciones de despliegue:
Haz clic en Enable Autoscaling (Activar Autoscaling). (Requiere permiso de escritura del escalado de cargas de trabajo).
Datadog instala y configura automáticamente el escalado automático de esta carga de trabajo.
Despliega un recurso personalizado DatadogPodAutoscaler
.
Utiliza tu proceso de despliegue existente para orientar y configurar Autoscaling para tu carga de trabajo.
apiVersion: datadoghq.com/v1alpha2
kind: DatadogPodAutoscaler
metadata:
name: <name, usually same as Deployment object name>
spec:
targetRef:
apiVersion: apps/v1
kind: Deployment
name: <your Deployment name>
constraints:
# Adjust constraints as safeguards
maxReplicas: 50
minReplicas: 1
owner: Local
applyPolicy:
mode: Apply
objectives:
- type: PodResource
podResource:
name: cpu
value:
type: Utilization
utilization: 75
Desplegar recomendaciones manualmente
Como alternativa al Autoscaling, también puedes desplegar manualmente las recomendaciones de escalado de Datadog. Cuando configures recursos para tus despliegues de Kubernetes, utiliza los valores sugeridos en las recomendaciones de escalado. También puedes hacer clic en Export Recommendation (Exportar recomendación) para ver un comando kubectl patch
generado.
Referencias adicionales
Más enlaces, artículos y documentación útiles: