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

  1. 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 
  1. 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
  1. 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
...
  1. Aplica la configuración actualizada de datadog-agent.yaml:
kubectl apply -n $DD_NAMESPACE -f datadog-agent.yaml
  1. 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
  1. 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
...
  1. Update your Helm version:
helm repo update
  1. 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