如何解决如何根据AWS SQS队列大小扩展GKE部署
可能是一个奇怪的人,但发现自己:
- 一个AWS简单队列,其中包含要处理的消息。
- 在Google Cloud(GKE)的Kubernetes集群中的一个部署,用于处理此队列。
我想根据队列大小扩展部署。例如,一个简单的逻辑:
- 队列大小= 0 =>部署3个吊舱
- 队列大小0> 10> 1000 =>部署20个容器
- 队列大小部署100个Pod
事实证明,这并不是一个简单的任务,我正在寻找想法。
我试图通过Horizontal Pod自动缩放器实现这一目标,但这似乎是不可能完成的任务。
我最好的主意是一个AWS Lambda,它可以监视队列(通过消息或cron计划),并通过API更新Kubernetes部署。 容易的部分是监视队列大小并获得所需的部署规模,但我没有设法通过AWS Lambda物理地控制部署规模。
TL:DR,我想实现kubectl功能(大规模部署),但是要通过运行node.js代码的外部lambda进行身份验证,同时还要对我的Google云平台进行身份验证,这似乎也很棘手。 client libraries很少,但是没有一个真正记录如何认证和连接到我的集群。 我什至考虑过从部署系统运行bash脚本-但是使用node.js'exec'通过lambda函数运行该脚本似乎非常错误。
我想念一种更简单的方法吗?
解决方法
有一个名为Keda的项目:https://keda.sh/docs/2.0/scalers/aws-sqs/。它支持基于一系列队列类型的水平扩展。支持SQS。
要从GKE安全访问SQS / CloudWatch,可以使用https://github.com/doitintl/gtoken,它使您可以从GKE担任AWS角色。或者以一种更简单,不太安全的方式-专用的AWS用户使用定期的密钥轮换。还要看看https://cloud.google.com/pubsub/docs/overview,也许您可以替换SQS以留在一个堆栈中。
,您可以使用WPA:https://github.com/practo/k8s-worker-pod-autoscaler来基于SQS队列扩展GKE部署。该项目根据SQS指标的组合进行扩展。 https://medium.com/practo-engineering/launching-worker-pod-autoscaler-3f6079728e8b
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。