问题标签 [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 投票
1 回答
386 浏览

azure - 您正在创建太多 HashedWheelTimer 实例

我正在使用 java sdk:

在天蓝色的功能。不知道上面的错误是从哪里来的:

您正在创建太多 HashedWheelTimer 实例。HashedWheelTimer 是一个共享资源,必须在 JVM 中重复使用,因此只创建了几个实例。

0 投票
1 回答
389 浏览

azure - 带有 KEDA 的 Azure 功能不横向扩展超过 1 个 pod

豆荚下降到 0,但它不会旋转超过 1 个豆荚。即使订阅中超过 5mgs 根据建议更新了代码。

添加了 TriggerAuthentication 并使用 connectionString 作为身份验证。尝试发送大约 25 条消息,但 pod 仍然没有扩大。

只有一个 pod 正在处理所有消息。我需要更新什么吗

得到错误:

运行命令后:

api版本:apiregistration.k8s.io/v1

166种:APIService

167元数据:

168 个注释:

169 kubectl.kubernetes.io/last-applied-configuration: |

170 {"apiVersion":"apiregistration.k8s.io/v1beta1","kind":"APIService","metadata":{"annotations":{},"name":"v1beta1.external.metrics.k8s.io "},"spec":{"group":"external.metrics.k8s.io","groupPriorityMinimum":100,"insecureSkipTLSVerify":true,"service":{"name":"custom-metrics-azure- apiserver","namespace":"custom-metrics"},"version":"v1beta1","versionPriority":100}}

171 创建时间戳:“2020-09-15T15:48:18Z”

172 名称:v1beta1.external.metrics.k8s.io

173 资源版本:“13008780”

174 自链接:/apis/apiregistration.k8s.io/v1/apiservices/v1beta1.external.metrics.k8s.io

175 用户识别码:a6a72678-001f-4378-ba10-cbff7d8c0ad2

176 规格:

177组:external.metrics.k8s.io

178组优先级最低:100

179 不安全的跳过TLS验证:真

180服务:

181 名称:custom-metrics-azure-apiserver

182 命名空间:自定义指标

183端口:443

184版本:v1beta1

185版本优先级:100

186状态:

187个条件:

188 - 上次转换时间:“2020-10-27T12:19:19Z”

189 消息:“custom-metrics”中的 service/custom-metrics-azure-apiserver 不存在

190 原因:ServiceNotFound

191 状态:“假”

192型:可用

0 投票
0 回答
356 浏览

kubernetes - 用于自定义标签的 Kubernetes Pod Affinity Topology Key

我们正在尝试将一些Keda Scaled Jobs部署到我们的 Kubernetes 集群。我们总是希望每个作业有一个节点。我正在尝试配置 podAntiAffinity 规则,以强制不将作业部署到正在运行具有给定标签的另一个作业(pod)的节点。根据文档和示例,您需要一个topologyKey,即

系统用来表示这种拓扑域的节点标签的键;

在我们的例子中,我们希望使用我们指定的实际标签,而不是主机名。在这种情况下,我们将如何配置我们的规则?

0 投票
1 回答
133 浏览

linux - 用于完成的 Kubernetes 作业或 Pod 具有自动缩放功能的作业

我有 CPU 密集型作业/任务,

需要在kubernetes中运行,下面是job/task的流程

  1. 我们以队列或 API 调用的形式获取请求
  2. 应该创建 POd 并处理任务(几个作业可能在几分钟内运行,几个小时内运行)
  3. 任务完成后删除 pod

这应该在规模上发生,如果队列中有更多作业,则创建更多作业(Max 10, 20, 30 2e 应该定义它)

我使用 KEDA,将创建 POD,并且在作业完成后它会崩溃循环,这是 POD 生命周期中的默认行为,因为它尝试重新创建 pod,因为重启策略设置为 Always。我们还有其他选项,例如 OnFailure、Never,但我读过 Kubernetes Jobs 更合适

对于上述任务,Kubernetes Pods 或 Jobs 哪个是更好的选择,我们应该考虑扩展 POds,并且还需要根据使用情况和队列中的任务数量来扩展 kubernetes 节点(云供应商支持它)。

0 投票
0 回答
334 浏览

tensorflow - 使用 KEDA Prometheus 指标自动缩放 AKS - HPA 无法获取指标

我们已成功为我在 Azure (AKS) 上的图像处理应用程序部署了以下设置:

  • 具有 1 个 GPU 节点的 AKS 集群(需要根据传入流量进行扩展)
  • 1 个在 GPU 节点上运行 Tensorflow 模型的 pod(由于内存限制,每个节点最多 1 个 pod)
  • Prometheus 抓取 GPU 利用率指标(NVIDIA 的 DCGM 导出器)
  • 用于水平 pod 自动缩放器 (HPA) 的 KEDA 缩放对象 - 与我们的部署在同一命名空间中
  • 询问:ceil(avg_over_time(DCGM_FI_DEV_GPU_UTIL{namespace="myproject"}[2m])

部署基于:

https://github.com/prometheus-community/helm-charts/tree/main/charts/kube-prometheus-stack https://keda.sh/docs/1.4/scalers/prometheus/

通过此设置,它可以根据 DCGM GPU 利用率指标自动缩放 pod(水平),从 1 个 pod 扩展到 2 个 pod。因此,cluster-autoscaler 跟踪并将集群中的 GPU 节点数量从 1 扩展到 2。新的所需 pod 成功分配给这个新节点,平均 GPU 利用率降低。但是,在新添加的节点和第二个 pod 分配给它之后,KEDA HPA 对象无法再获取外部 GPU 指标。因此,HPA 对象不起作用并且无法缩减 pod,因此 pod(和节点)的数量保持为 2。

两个节点上的所有 pod 和服务似乎都很健康。此外,DCGM 导出器在新节点上运行,因此它应该能够从该节点抓取指标。

有没有人有这方面的经验?或者知道如何调试?在我描述 HPA 时的输出下方。

如果我们使用除 DCGM 之外的其他指标,例如http_request_total,我们能够从所有节点获取指标,因此我们预计 DCGM 部分中存在错误,这是我们需要 GPU 指标的部分。我们已经在命名空间中安装了 DCGM,dcgm-exporter并且还在 PrometheusadditionalScrapeConfig部分进行了配置。

如果您需要额外的信息以任何方式提供帮助,也请告诉我!先感谢您。

0 投票
2 回答
788 浏览

docker - KEDA 不缩放超过 1 个吊舱

我有一个 Kubernetes 部署,它部署了一个 Pod,该 Pod 将从 RabbitMQ 队列中拉下一条消息。我还使用 KEDA 根据当前队列中的 RabbitMQ 消息来扩展部署。它正确地缩放到 0,然后在有消息时缩放到 1,但部署永远不会扩展到 1 以上。我当前的部署 YAML 文件:

我的 KEDA YAML 文件:

KEDA 操作员日志文件:

就 RabbitMQ 连接正常工作而言,我知道一切,并且 KEDA 知道要查看什么部署以及什么队列。所有这一切都通过 Pod 扩展到 0 和 1 的事实得到证明。但由于某种原因,即使队列中有 50 条消息,它也永远不会超过 1。

到目前为止,我已经尝试过使用pollingIntervalandcooldownPeriod标签,但似乎都没有效果。有任何想法吗?

编辑:

replicas按照下面的建议从部署 YAML 文件中删除了该值。并且还查看了 HPA 日志。

生成的 HPA 日志:

这是在将 5 条消息发送到队列之后。出于某种原因,即使我value在 KEDA YAML 文件中设置为 1,它也只认为需要 1 个 pod。

0 投票
0 回答
275 浏览

google-kubernetes-engine - 当部署在 GCP 中使用工作负载身份时,如何使用 GCP PubSub 设置 Keda 身份验证?

我无法使用 Google PubSub Scaler 在我的私有 GKE 集群中设置Keda 。

我有一个部署,我想根据订阅中的消息数量进行扩展。我的部署正在通过Workload Identity访问 Google 资源(轮询订阅)

我目前的设置是这样的。

我的部署:(只是添加了相关部分):

服务帐户 yaml 如下所示:

此服务帐户具有角色roles/pubsub.publisherroles/pubsub.subscriberroles/monitoring.viewer

现在是 keda 部分。

我想我应该使用 TriggerAuthenticator 并将 podIdentity 设置为gcp,这是我的设置:

还有我的 ScaledObject yaml:

应用这些设置后,我的部署缩小到零,但是在订阅中有很多消息,检查日志keda-operator我发现了这样的错误:

Pod 按预期工作,可以从订阅中提取。

所以这里有两件事,

  1. 我有一个身份验证问题,我很好奇工作设置是什么样的?
  2. 为什么在身份验证失败的情况下将部署缩减为零?

谢谢

0 投票
0 回答
152 浏览

azure-storage-queues - KEDA Operator 无法解析 Azure Storage Queue 的连接字符串

我正在尝试使用 azure 存储队列设置 KEDA 以进行实验。我想将存储帐户的连接字符串用于身份验证,但 KEDA 操作员无法解析连接字符串。ScaledObject 已创建,其状态为“就绪”,但无法获取有关队列长度的信息或根本无法与队列交谈。我创建了一个不透明的秘密,并使用文档中描述的authenticationRef部分引用它。

我在日志中看到的错误是:

我仔细阅读了文档并查看了 KEDA 源代码,但我仍然感到困惑。

这是我的秘密定义:

还有我的 TriggerAuth 和 ScaledObjects:

通过 KEDA 源代码,如果连接字符串的格式不正确,则会引发此错误。但是,我验证了在集群中创建的秘密完全符合源代码的预期,即:

DefaultEndpointsProtocol=https;AccountName=THE_ACCOUNT_NAME;AccountKey=THE_ACCOUNT_KEY;EndpointSuffix=core.windows.net

我究竟做错了什么?

0 投票
0 回答
37 浏览

keda - KEDA - redis listLength 如何缩放 pod(详细)

redis 触发器中 listLength 的文档非常混乱。从阅读和实验来看,listLength 似乎是应该创建新 pod 的阈值。IE。如果 listLength 为 16,则当给定列表中有 16 个或更多项目时,将启动一个 pod。

我将如何保证将为列表中的每个项目启动一个 pod(达到 maxReplicaCount 阈值)?我遇到的问题是,一些 pod 被旋转起来(即使列表中有更多元素,它也可能低于 maxReplicaCount),随着时间的推移,pod 死亡,我最终得到了几个 pod 长时间挣扎列表,这使得它无法在生产中使用

我真正想要的是,如果我的列表长度为 20,我将旋转 20 个 pod,如果我的 maxReplicaCount 为 20,则所有其他列表元素将被现有的 pod 消耗,但存在的 20 个不会下降,直到列表长度低于一个 PER pod。

0 投票
1 回答
66 浏览

sql-server - MSSQL 连接字符串:

我正在尝试在 keda 中创建 scaledobject,并且我正在使用 MSSQL 缩放器参考官方 keda 文档。

以这种格式配置连接字符串时“Server=example.database.windows.net;Port=1433;Database=AdventureWorks;Persist Security Info=False;User ID=user1;Password=Password#1;MultipleActiveResultSets=False;Encrypt=True; TrustServerCertificate=False;连接超时=30;" , 要配置的服务器是否与主机名相同?

基本上,我们在连接参数中明确指定的主机参数是否与ADO格式的Server参数相同:?

有人可以在这里帮助我吗?使用 MSSQL 触发器在 keda 中部署我的缩放对象后(我正在考虑服务器名称与主机实例相同并配置为这样),我准备好并且活动状态为未知。在日志中我只看到它正在尝试创建一个 HPA,然后什么也没有发生。我猜操作员被困在这里了。请指导我如何继续与 MSSQL 建立连接