问题标签 [keda]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
0 回答
36 浏览

rabbitmq - KEDA - RabbitMQ 自动缩放器在收到少量消息时速度变慢

我正在使用带有 RabbitMQ 的 KEDA 自动缩放器。

当我排队 200 条消息时,KEDA 正确使用了我的 50 个 GCP 节点。

当队列中的消息持续少于 30 条时,KEDA 开始缩减,它只使用 15 个节点而不是 30 个......

我的配置:

如何让 KEDA 使用所有可用的节点?

0 投票
1 回答
141 浏览

kubernetes - 带 MSSQL 触发器的 Keda ScaledObject

我在我的 k8s 集群中使用 keda 进行自动缩放。在使用 MSSQL 触发器部署我的缩放对象后,我准备好并处于未知状态。在日志中,我只看到它正在尝试创建 HPA,然后什么也没有发生。我猜 keda-operator 卡在这里,因为我没有得到任何日志更新。

缩放对象状态

我的缩放对象:

缩放对象

在查询执行时,我得到的值为 300,这足以启动缩放。

我还附上了操作员日志:2021-06-04T08:06:20.130Z INFO 控制器启动 EventSource {“reconcilerGroup”:“keda.sh”,“reconcilerKind”:“ScaledJob”,“controller”:“scaledjob”,“ source": "kind source: /, Kind="} 2021-06-04T08:06:20.130Z INFO controller Starting EventSource {"reconcilerGroup": "keda.sh", "reconcilerKind": "ScaledObject", "controller": "scaledobject", "source": "kind source: /, Kind="} 2021-06-04T08:06:20.130Z INFO controller Starting EventSource {"reconcilerGroup": "keda.sh", "reconcilerKind": "TriggerAuthentication" ,“控制器”:“触发身份验证”,“来源”:“种类来源:/,Kind="} 2021-06-04T08:06:20.230Z INFO 控制器启动控制器 {"reconcilerGroup": "keda.sh", "reconcilerKind": "ClusterTriggerAuthentication", "controller": "clustertriggerauthentication"} 2021-06-04T08 :06:20.230Z INFO 控制器启动工人{“reconcilerGroup”:“keda.sh”,“reconcilerKind”:“ClusterTriggerAuthentication”,“控制器”:“clustertriggerauthentication”,“工人计数”:1} 2021-06-04T08:06 :20.230Z INFO 控制器 启动控制器 {"reconcilerGroup": "keda.sh", "reconcilerKind": "TriggerAuthentication", "controller": "triggerauthentication"} 2021-06-04T08:06:20.230Z INFO 控制器启动工人 {"调节器组”:“keda.sh”、“reconcilerKind”:“TriggerAuthentication”、“controller”:“triggerauthentication”、“worker count”:1} 2021-06-04T08:06:20.230Z INFO 控制器启动 EventSource {“reconcilerGroup”:“keda .sh", "reconcilerKind": "ScaledObject", "controller": "scaledobject", "source": "kind source: /, Kind="} 2021-06-04T08:06:20.232Z INFO controller Starting Controller {" reconcilerGroup": "keda.sh", "reconcilerKind": "ScaledJob", "controller": "scaledjob"} 2021-06-04T08:06:20.330Z INFO 控制器启动控制器 {"reconcilerGroup": "keda.sh", “reconcilerKind”:“ScaledObject”,“控制器”:“scaledobject"} 2021-06-04T08:06:20.331Z INFO 控制器启动工人 {"reconcilerGroup": "keda.sh", "reconcilerKind": "ScaledObject", "controller": "scaledobject", "worker count": 1 } 2021-06-04T08:06:20.332Z INFO 控制器启动工人{“reconcilerGroup”:“keda.sh”,“reconcilerKind”:“ScaledJob”,“控制器”:“scaledjob”,“工人计数”:1} 2021 -06-04T08:07:19.986Z INFO controllers.ScaledObject 协调 ScaledObject {“ScaledObject.Namespace”:“xyz”,“ScaledObject.Name”:“mssql-keda-scaledobject”} 2021-06-04T08:07:19.986Z INFO controllers.ScaledObject 为 ScaledObject 添加终结器 {"ScaledObject.Namespace": "xyz", "ScaledObject.Name": "mssql-keda-scaledobject"} 2021-06-04T08:07:20.052Z INFO controllers.ScaledObject 检测到用于缩放的资源 {"ScaledObject.Namespace":"xyz", "ScaledObject.Name":" mssql-keda-scaledobject", "resource": "apps/v1.Deployment", "name": "xyzxyzxyzxyzxyzxyzxyz"} 2021-06-04T08:07:20.052Z INFO controllers.ScaledObject 创建一个新的 HPA {"ScaledObject.Namespace ": "xyz", "ScaledObject.Name": "mssql-keda-scaledobject", "HPA.Namespace": "xyz", "HPA.Name": "keda-hpa-mssql-keda-scaledobject"}ScaledObject.Namespace”:“xyz”,“ScaledObject.Name”:“mssql-keda-scaledobject”,“资源”:“apps/v1.Deployment”,“名称”:“xyzxyzxyzxyzxyzxyzxyz”} 2021-06-04T08:07 :20.052Z INFO controllers.ScaledObject 创建一个新的 HPA {"ScaledObject.Namespace": "xyz", "ScaledObject.Name": "mssql-keda-scaledobject", "HPA.Namespace": "xyz", "HPA.Name ": "keda-hpa-mssql-keda-scaledobject"}ScaledObject.Namespace”:“xyz”,“ScaledObject.Name”:“mssql-keda-scaledobject”,“资源”:“apps/v1.Deployment”,“名称”:“xyzxyzxyzxyzxyzxyzxyz”} 2021-06-04T08:07 :20.052Z INFO controllers.ScaledObject 创建一个新的 HPA {"ScaledObject.Namespace": "xyz", "ScaledObject.Name": "mssql-keda-scaledobject", "HPA.Namespace": "xyz", "HPA.Name ": "keda-hpa-mssql-keda-scaledobject"}xyz”,“ScaledObject.Name”:“mssql-keda-scaledobject”,“HPA.Namespace”:“xyz”,“HPA.Name”:“keda-hpa-mssql-keda-scaledobject”}xyz”,“ScaledObject.Name”:“mssql-keda-scaledobject”,“HPA.Namespace”:“xyz”,“HPA.Name”:“keda-hpa-mssql-keda-scaledobject”}

我正在为其他缩放对象创建 hpa。此外,如果我提供错误的 sql 连接凭据,我会收到适当的身份验证错误。所以我想这不是连接问题。

任何线索将不胜感激。提前致谢

0 投票
0 回答
34 浏览

kubernetes - Kubernetes 的自定义扩展操作

我想根据指标扩展我的部署,因此使用 KEDA,但应该以不同的方式部署。我想在每次扩大/缩小规模后重新启动我的所有部署吊舱。原因如下:

场景 我有容器运行我的应用程序的线程,充当数据库和处理记录的消费者。我需要跟踪副本并将其作为参数传递给我的 pod。Pod 目前需要 2 个参数来处理记录以避免重复。

  1. 副本号
  2. 最大副本数

因此 Pod 使用 JVM 修改技术从 DB 中获取唯一记录,这样重复记录就不会被 2 个 Pod 处理。

问题 Kubernetes HPA 允许自动缩放,但不提供任何自定义操作来执行。如果我在现有部署中自动扩展并且不更改最大副本数,则有可能 2 个 pod 将从数据库中提取并处理相同的记录。

我不确定 kubernetes 是否已经存在或可能使用这种功能,但我没有找到它,所以在这里问。有什么方法可以扩展 kubernetes HPA 功能或 KEDA 来定义自定义扩展策略?

0 投票
1 回答
312 浏览

python - 如何让 Celery worker 消耗单个任务并退出

如何使celery -A app worker命令仅使用单个任务然后退出。

我想将 celery 工作人员作为 kubernetes 作业运行,该作业在处理单个任务后完成。

我正在使用 KEDA 根据队列消息自动缩放工作人员。我想将芹菜工人作为长时间运行的任务的工作,如文档中所建议的那样: KEDA long running execution

0 投票
1 回答
51 浏览

kubernetes - 为什么运行的 pod 数量减少了,而队列中的消息数量仍然很高?

我正在运行一个启用了 KEDA 的 k8s 集群,它带有存储队列 Azure 功能,它一次执行 2000 条消息,执行时间可变(在 30 秒到 10 分钟之间)。系统在一段时间内正常工作,但是当队列中的消息数量开始减少时,pod 的数量也开始减少。

问题:为什么运行的 pod 数量减少了,而队列中的消息数量仍然很高?

示例:最大副本数为 120,队列中的消息数约为 250。那么为什么 HPA 会缩减 pod。理想情况下,它仍应使用所有 120 个 pod 来完成队列中的所有消息。

补充问题:

  1. queueLength 会影响 HPA 的行为吗?
  2. 很少有消息没有完全执行。尽管 TerminationGracePeriodSeconds 是 10 分钟,但它们似乎在执行过程中突然关闭。任何意见?

以下是 scaledobject.yaml 文件:

Deployments.yaml 文件:

0 投票
1 回答
81 浏览

kubernetes - 队列触发 Azure 函数的 KEDA HPA 指标值

我在 Kubernetes 集群中运行了一个启用了 KEDA 的队列触发 Azure 函数。当我描述 KEDA 创建的 HPA 时,我无法理解价值指标。

在下图中,“7309m”代表什么?我得出的结论是“1”是我在 ScaledObject.yaml 文件中提供的 queueLength 参数。 在此处输入图像描述

官方文档显示了一个示例,该示例基于系统使用的资源百分比,如下所示: 在此处输入图像描述

ScaledObject.yaml 文件

0 投票
2 回答
150 浏览

kubernetes - terminateGracePeriodSeconds 不适用于 KEDA 的队列触发功能

我正在运行一个启用了 KEDA 的队列触发 Azure 函数,该函数terminationGracePeriodSeconds已设置为900秒(15 分钟)。函数执行时间在 30 秒到 600 秒(10 分钟)之间变化。所以 15 分钟的宽限期似乎是合理的。

是否有可能在发出 SIGTERM 之后,如果还有一些宽限期,Pod 会在完成当前请求后接受新的请求。

我遇到过函数执行突然停止、消息未处理的情况。

以下是部署中的规范:

这种行为有什么合理的解释吗?如何解决?

编辑:容器日志显示“应用程序正在关闭......”

在此处输入图像描述

0 投票
1 回答
80 浏览

azure - Azure Function 在执行期间关闭

我在 Kubernetes 集群中运行队列触发 Azure 函数。有时,Azure Function 容器在处理消息时会停止执行。日志只是显示"Application is shutting down..."

我的目标是让当前的执行在函数关闭之前完成。有什么办法可以做到这一点?

0 投票
0 回答
122 浏览

azure - KEDA + Azure 自动缩放节点池不使用反关联

我正在将 Kubernetes 与scaledObject托管在 Azure 上的 Keda 一起使用。我基于 Azure 队列中的消息进行缩放,我需要实现以下目标:

  • 每个节点运行 1 个 pod,这非常重要,因为我们的代码经过高度优化,可以非常有效地使用所有 CPU,而且我们的每个模拟都需要大量内存。
  • 一个 pod/node 将在任何时候处理 1 个队列消息。
  • 横向扩展至自动缩放节点池上设置的最大 pod 数。

理想情况下,Kubernetes 将允许每个节点最多 1 个 pod,无论如何,为什么不支持这让我感到沮丧。

我使用 AntiAffinity 实现每个节点 1 个 pod,如下所示:

这工作正常。在 Keda 中的缩放对象上,我有以下设置

我有一个使用az aks带有以下参数的命令设置的节点池--node-count 0 --min-count 0 --max-count 10 --enable-cluster-autoscaler --max-pods 10

基本上什么都没有发生,当项目添加到队列中时不会创建新节点。如果我扩展到至少 1 个节点,那么应用程序将部署到该节点,但是队列中有大量项目,我仍然只能获得 1 个节点。

任何关于如何解决这个问题的想法都将不胜感激,还有什么我需要配置来让 Keda 知道我的自动缩放节点池吗?

提前致谢。

0 投票
0 回答
47 浏览

python - Python RabbitMQ - KEDA 保持打开连接

我正在寻找一种解决方案,它将使用 RPC 模式,其中“工作人员”将在 Kubernetes 服务器(Azure Kubernetes 服务)上的 pod 中运行。

然后,我想通过使用 KEDA 提供的自动缩放功能,让这些 Pod 根据队列长度向上/向下缩放。

我已成功运行此程序,但注意到当 pod 数量缩减(当队列中的项目数量减少时)时,我最终会获得大量正在运行的连接。当我查看这些连接的客户端时,我注意到除了我的“Pika Python 客户端库/Python 3.7.11”客户端连接(当 Pod 数量减少时,它似乎确实减少了)我还有许多连接客户端为“https://github.com/streadway/amqp”。这似乎是 RabbitMQ 的 Go 客户端库。

我的理解是 KEDA 是用 Go 编写的,但是我对这些连接的关系以及如何关闭它们以避免列表继续增长有点迷茫。

有人对我如何关闭这些连接有任何建议吗?