根据自定义 Cloudwatch 指标的多个条件缩放 AWS EKS 中的副本

问题描述 投票:0回答:1

我对 EKS 相当陌生。我想根据 SQS 队列中的消息数量进行自动缩放。我读过有关 kubernetes 中的 HPA (https://kubernetes.io/docs/tasks/run-application/horizontal-pod-autoscale/) 的内容,还浏览了这个 aws 博客 (https://aws.amazon. com/blogs/compute/scaling-kubernetes-deployments-with-amazon-cloudwatch-metrics/)但这对我不起作用,因为我的扩展策略如下所示:

if 0 < sqs_message_count < 15:
        set replicas: 1
if 15 <= sqs_message_count < 32:
        set replicas: 2
if 32 <= sqs_message_count < 53:
        set replicas: 4
if 53 <= sqs_message_count < 105:
        set replicas: 7
if 105 <= sqs_message_count < 178:
        set replicas: 11
if 178 <= sqs_message_count < 371:
        set replicas: 14
if sqs_message_count => 371:
        set replicas: 16

Kubernetes 本身是否有任何可用的东西,或者可能是某种应用程序来实现此目的?当我进行谷歌搜索时,我找不到任何可靠的东西。还有另一种方法可以在应用程序中创建,它可以轮询自定义 cloudwatch 指标,并通过使用 kubernetes API 相应地设置副本计数。但此方法涉及此应用程序将使用的服务帐户的大量开发和自定义 IAM 授权。我只是不想在这里重新发明轮子。知道是否有一个应用程序/工具可以实现这一目标?

amazon-web-services kubernetes amazon-sqs amazon-eks autoscaling
1个回答
0
投票

我最终创建了一个自定义应用程序,该应用程序每 60 秒轮询一次自定义 Cloudwatch 指标,比较当前副本计数,然后相应地设置副本计数。我使用 kubernetes python 客户端 (https://github.com/kubernetes-client/python/blob/master/kubernetes/README.md) 进行相同操作,并使用服务帐户对 EKS 集群进行身份验证。该应用程序作为同一 EKS 集群内的部署运行。后来我偶然发现了https://keda.sh/docs/2.13/scalers/aws-sqs/#trigger-specation,但它没有我需要的自定义选项。

© www.soinside.com 2019 - 2024. All rights reserved.