tencent cloud

Feedback

Multi-Level Service Synchronized Horizontal Scaling (Workload Triggers)

Last updated: 2024-12-24 15:55:32

    Workload Triggers

    Kubernetes-based Event-Driven Autoscaler (KEDA) supports Kubernetes Workload triggers, enabling scaling based on the number of Pods in one or more workloads. This is very useful in multi-level service call scenarios. For details, please refer to KEDA Scalers: Kubernetes Workload.

    Use Cases

    Multi-level Service Simultaneous Scaling

    The picture shows multi-level microservice call:
    
    The services A, B, and C usually have a fixed proportional quantity.
    If the pressure on A suddenly increases, forcing a scale-out, B and C can also scale out almost simultaneously with A by using KEDA's Kubernetes Workload triggers, without waiting for pressure to propagate slowly.
    First, configure the scale-out for A, which can be based on CPU and memory pressure. For example:
    apiVersion: keda.sh/v1alpha1
    kind: ScaledObject
    metadata:
    name: a
    spec:
    scaleTargetRef:
    apiVersion: apps/v1
    kind: Deployment
    name: a
    pollingInterval: 15
    minReplicaCount: 10
    maxReplicaCount: 1000
    triggers:
    - type: memory
    metricType: Utilization
    metadata:
    value: "60"
    - type: cpu
    metricType: Utilization
    metadata:
    value: "60"
    Then, configure the scale-out for B and C, assuming a fixed ratio of A:B:C = 3:3:2. For example:
    apiVersion: keda.sh/v1alpha1
    kind: ScaledObject
    metadata:
    name: b
    spec:
    scaleTargetRef:
    apiVersion: apps/v1
    kind: Deployment
    name: b
    pollingInterval: 15
    minReplicaCount: 10
    maxReplicaCount: 1000
    triggers:
    - type: kubernetes-workload
    metadata:
    podSelector: 'app=a' # Select service A
    value: '1' # A/B=3/3=1
    apiVersion: keda.sh/v1alpha1
    kind: ScaledObject
    metadata:
    name: c
    spec:
    scaleTargetRef:
    apiVersion: apps/v1
    kind: Deployment
    name: c
    pollingInterval: 15
    minReplicaCount: 3
    maxReplicaCount: 340
    triggers:
    - type: kubernetes-workload
    metadata:
    podSelector: 'app=a' # Select service A
    value: '3' # A/C=3/2=1.5
    With the above configuration, when the pressure on A increases, A, B, and C will scale out almost simultaneously without waiting for the pressure to propagate step by step. This allows for faster adaptation to pressure changes, improving system elasticity and performance.
    
    Contact Us

    Contact our sales team or business advisors to help your business.

    Technical Support

    Open a ticket if you're looking for further assistance. Our Ticket is 7x24 avaliable.

    7x24 Phone Support