tencent cloud

文档反馈

多级服务同步水平伸缩(Workload 触发器)

最后更新时间:2024-12-24 15:55:40

    Workload 触发器

    KEDA 支持 Kubernetes Workload 触发器,可以根据一个或多个工作负载的 Pod 数量来进行扩缩容,在多级服务调用的场景下非常有用。具体用法请参见 KEDA Scalers: Kubernetes Workload

    使用示例

    多级服务同时扩容

    图片示例为多级微服务调用:
    
    
    
    A、B、C 这组服务通常具有固定的数量比例。
    A 的压力突增,迫使扩容,B 和 C 也可以用 KEDA 的 Kubernetes Workload 触发器实现与 A 几乎同时扩容,而无需等待压力逐级传导才缓慢迫使扩容。
    首先配置 A 的扩容,可以根据 CPU 和内存压力扩容。例如:
    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"
    然后配置 B 和 C 的扩容,假设固定比例 A:B:C = 3:3:2。例如:
    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' # 选中 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' # 选中 A 服务
    value: '3' # A/C=3/2=1.5
    通过以上配置,当 A 的压力增加时,A、B 和 C 将几乎同时进行扩容,而无需等待压力逐级传导。这样可以更快地适应压力变化,提高系统的弹性和性能。
    联系我们

    联系我们,为您的业务提供专属服务。

    技术支持

    如果你想寻求进一步的帮助,通过工单与我们进行联络。我们提供7x24的工单服务。

    7x24 电话支持