Desplegar la herramienta Autoscaler en GKE

El modelo de implementación de Google Kubernetes Engine (GKE) es una buena opción para los equipos independientes que quieran autogestionar la infraestructura y la configuración de sus propios escaladores automáticos en Kubernetes.

Este documento forma parte de una serie que también incluye lo siguiente:

Esta serie está dirigida a equipos de TI, operaciones y Site Reliability Engineering (SRE) que quieran reducir la sobrecarga operativa y optimizar el coste de las implementaciones de Spanner.

La implementación de GKE tiene las siguientes ventajas e inconvenientes:

Ventajas:

  • Basado en Kubernetes: para los equipos que no puedan usar servicios como las funciones de Cloud Run, el despliegue en Kubernetes permite usar el escalador automático.
  • Configuración: el control sobre los parámetros del programador pertenece al equipo propietario de la instancia de Spanner, lo que le otorga los privilegios más altos para adaptar el escalador automático a sus necesidades.

Inconvenientes:

  • Infraestructura: en comparación con el diseño de las funciones de Cloud Run, se requieren algunos servicios e infraestructuras de larga duración.
  • Mantenimiento: como cada equipo es responsable de la configuración y la infraestructura de Autoscaler, puede resultar difícil asegurarse de que todos los Autoscalers de la empresa sigan las mismas directrices de actualización.
  • Auditoría: debido al alto nivel de control de cada equipo, una auditoría centralizada puede volverse más compleja.

En esta página se presentan dos formas de desplegar el escalador automático en GKE en función de tus requisitos:

  • Una topología de implementación desacoplada. El modelo de implementación desacoplado tiene la ventaja de que puedes asignar permisos individuales a los componentes Poller y Scaler para que se ejecuten como cuentas de servicio independientes. Esto significa que tienes la flexibilidad de gestionar y escalar los dos componentes para adaptarlos a tus necesidades. Sin embargo, este modelo de implementación requiere que el componente Scaler se implemente como un servicio de larga duración, lo que consume recursos.
  • Una topología de implementación unificada. El modelo de implementación unificado tiene la ventaja de que los componentes Poller y Scaler se pueden implementar como un solo pod, que se ejecuta como un trabajo cron de Kubernetes. Cuando los dos componentes se implementan como un solo pod, no hay componentes de larga duración y solo se necesita una cuenta de servicio.

En la mayoría de los casos prácticos, recomendamos el modelo de implementación unificado.

Configuración

La herramienta Autoscaler gestiona las instancias de Spanner mediante la configuración definida en un Kubernetes ConfigMap. Si es necesario sondear varias instancias de Spanner con el mismo intervalo, le recomendamos que las configure en el mismo ConfigMap. A continuación se muestra un ejemplo de una configuración en la que se gestionan dos instancias de Spanner con una configuración:

apiVersion: v1
kind: ConfigMap
metadata:
  name: autoscaler-config
  namespace: spanner-autoscaler
data:
  autoscaler-config.yaml: |
    ---
    - projectId: spanner-autoscaler-test
      instanceId: spanner-scaling-linear
      units: NODES
      minSize: 5
      maxSize: 30
      scalingMethod: LINEAR
    - projectId: spanner-autoscaler-test
      instanceId: spanner-scaling-threshold
      units: PROCESSING_UNITS
      minSize: 100
      maxSize: 3000
      metrics:
      - name: high_priority_cpu
        regional_threshold: 40
        regional_margin: 3

Una instancia puede tener una configuración de escalador automático con el método lineal para las operaciones normales y otra configuración de escalador automático con el método directo para las cargas de trabajo por lotes planificadas. Consulta la lista completa de opciones de configuración en el archivo Poller README.

Desplegar en GKE

Para saber cómo desplegar Autoscaler en GKE con el modelo de despliegue desacoplado o unificado, consulta la guía paso a paso para el despliegue en GKE.

Siguientes pasos