Scaling et autoscaling des services d'exécution

Vous pouvez effectuer le scaling de la plupart des services exécutés dans Kubernetes à partir de la ligne de commande ou dans un remplacement de configuration. Vous pouvez définir des paramètres de scaling pour les services d'exécution Apigee hybride dans le fichier overrides.yaml.

Service Mis en œuvre en tant que Scaling
Cassandra ApigeeDatastore (CRD) Consultez la page Scaling de Cassandra.
Ingress/LoadBalancer Déploiement Anthos Service Mesh utilise l'autoscaling horizontal des pods (HPA).
Logger DaemonSet Les DaemonSets gèrent les instances dupliquées d'un pod sur tous les nœuds. Ils évoluent donc lorsque vous effectuez le scaling des pods eux-mêmes.
MART
Apigee Connect
Watcher
ApigeeOrganization (CRD)

Pour effectuer un scaling via la configuration, augmentez la valeur de la propriété de configuration replicaCountMin du déploiement pour les stanzas mart, watcher et/ou connectAgent. Exemple :

mart:
 replicaCountMax: 2
 replicaCountMin: 1

watcher:
 replicaCountMax: 2
 replicaCountMin: 1

connectAgent:
 replicaCountMax: 2
 replicaCountMin: 1

Ces déploiements utilisent un autoscaler horizontal de pods pour l'autoscaling. Définissez la propriété targetCPUUtilizationPercentage de l'objet Déploiement sur le seuil d'évolutivité. Lorsque cette valeur est dépassée, Kubernetes ajoute des pods jusqu'à la valeur de replicaCountMax.

Pour en savoir plus sur la définition des propriétés de configuration, consultez la page Gérer les composants du plan d'exécution.

Environnement d'exécution
Synchronisateur
UDCA
ApigeeEnvironment (CRD) Pour effectuer un scaling via la configuration, augmentez la valeur de la propriété replicaCountMin pour les stanzas udca, synchronizer et/ou runtime dans le fichier de remplacement. Exemple :
synchronizer:
 replicaCountMax: 10
 replicaCountMin: 1

runtime:
 replicaCountMax: 10
 replicaCountMin: 1

udca:
 replicaCountMax: 10
 replicaCountMin: 1

Remarque  : Ces modifications s'appliquent à TOUS les environnements du fichier de remplacement. Si vous souhaitez personnaliser le scaling pour chaque environnement, consultez la section Configurations avancées ci-dessous.

Les déploiements utilisent un autoscaler horizontal de pods pour l'autoscaling. Définissez la propriété targetCPUUtilizationPercentage de l'objet Déploiement sur le seuil d'évolutivité. Lorsque cette valeur est dépassée, Kubernetes ajoute des pods jusqu'à la valeur de replicaCountMax.

Pour en savoir plus sur la définition des propriétés de configuration, consultez la page Gérer les composants du plan d'exécution.

Configurations avancées

Dans certains cas, vous devrez peut-être utiliser des options de scaling avancées. Exemples de scénarios :

  • Définir différentes options de scaling pour chaque environnement. Par exemple, où "env1" a une valeur minReplica de 5 et "env2" a une valeur minReplica de 2.
  • Définir différentes options de scaling pour chaque composant d'un environnement. Par exemple, où le composant udca a une valeur maxReplica de 5 et le composant synchronizer une valeur maxReplica de 2.

L'exemple suivant montre comment utiliser la commande kubernetes patch pour modifier la propriété maxReplicas du composant runtime :

  1. Créez des variables d'environnement à utiliser avec la commande :
    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. Appliquez le correctif. Notez que cet exemple suppose que kubectl se trouve dans votre fichier 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. Vérifiez que la modification a bien eu lieu en exécutant la commande suivante :
    kubectl get hpa -n $NAMESPACE