Escalar y autoescalar servicios de tiempo de ejecución

Puedes escalar la mayoría de los servicios que se ejecutan en Kubernetes desde la línea de comandos o en una anulación de configuración. Puedes definir parámetros de escalado para los servicios de tiempo de ejecución de Apigee hybrid en el archivo overrides.yaml.

Servicio Implementado como Escalado
Cassandra ApigeeDatastore (CRD) Consulta Escalar Cassandra.
Ingress/LoadBalancer Implementación Anthos Service Mesh usa escalado automático horizontal de pods (HPAs).
Logger DaemonSet Los DaemonSets gestionan las réplicas de un pod en todos los nodos, por lo que se escalan cuando se escalan los propios pods.
MART
Apigee Connect
Watcher
ApigeeOrganization (CRD)

Para escalar mediante la configuración, aumenta el valor de la propiedad de configuración replicaCountMin de Deployment en las estrofas mart, watcher o connectAgent. Por ejemplo:

mart:
 replicaCountMax: 2
 replicaCountMin: 1

watcher:
 replicaCountMax: 2
 replicaCountMin: 1

connectAgent:
 replicaCountMax: 2
 replicaCountMin: 1

Estos despliegues usan un autoescalador horizontal de pods para el autoescalado. Asigna a la propiedad targetCPUUtilizationPercentage del objeto Deployment el umbral de escalado vertical. Cuando se supera este valor, Kubernetes añade pods hasta alcanzar el valor de replicaCountMax.

Para obtener más información sobre cómo definir las propiedades de configuración, consulta Gestionar componentes del plano de tiempo de ejecución.

Tiempo de ejecución
Sincronizador
UDCA
ApigeeEnvironment (CRD) Para escalar mediante la configuración, aumenta el valor de la propiedad replicaCountMin de las estrofas udca, synchronizer o runtime en el archivo de anulaciones. Por ejemplo:
synchronizer:
 replicaCountMax: 10
 replicaCountMin: 1

runtime:
 replicaCountMax: 10
 replicaCountMin: 1

udca:
 replicaCountMax: 10
 replicaCountMin: 1

Nota: Estos cambios se aplican a TODOS los entornos del archivo de anulaciones. Si quieres personalizar el escalado de cada entorno, consulta la sección Configuraciones avanzadas que aparece más abajo.

Estos despliegues usan un autoescalador horizontal de pods para el autoescalado. Asigna a la propiedad targetCPUUtilizationPercentage del objeto Deployment el umbral de escalado vertical. Cuando se supera este valor, Kubernetes añade pods hasta alcanzar el valor de replicaCountMax.

Para obtener más información sobre cómo definir las propiedades de configuración, consulta Gestionar componentes del plano de tiempo de ejecución.

Configuración avanzada

En algunos casos, es posible que tengas que usar opciones de escalado avanzadas. Estos son algunos ejemplos:

  • Definir diferentes opciones de escalado para cada entorno. Por ejemplo, si env1 tiene un minReplica de 5 y env2 tiene un minReplica de 2.
  • Definir diferentes opciones de escalado para cada componente de un entorno. Por ejemplo, donde el componente udca tiene un maxReplica de 5 y el componente synchronizer tiene un maxReplica de 2.

En el siguiente ejemplo se muestra cómo usar el comando kubernetes patch para cambiar la propiedad maxReplicas del componente runtime:

  1. Crea variables de entorno para usarlas con el comando:
    export ENV=my-environment-name
    export NAMESPACE=apigee  #the namespace where apigee is deployed
    export COMPONENT=runtime #can be udca or synchronizer
    export MAX_REPLICAS=2
    export MIN_REPLICAS=1
  2. Aplica el parche. Ten en cuenta que en este ejemplo se presupone que kubectl está en tu PATH:
    kubectl patch apigeeenvironment -n $NAMESPACE \
      $(kubectl get apigeeenvironments -n $NAMESPACE -o jsonpath='{.items[?(@.spec.name == "'$ENV'" )]..metadata.name}') \
      --patch "$(echo -e "spec:\n  components:\n    $COMPONENT:\n      autoScaler:\n        maxReplicas: $MAX_REPLICAS\n        minReplicas: $MIN_REPLICAS")" \
      --type merge
    
  3. Verifica el cambio:
    kubectl get hpa -n $NAMESPACE