问题标签 [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.
azure - 您正在创建太多 HashedWheelTimer 实例
我正在使用 java sdk:
在天蓝色的功能。不知道上面的错误是从哪里来的:
您正在创建太多 HashedWheelTimer 实例。HashedWheelTimer 是一个共享资源,必须在 JVM 中重复使用,因此只创建了几个实例。
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型:可用
kubernetes - 用于自定义标签的 Kubernetes Pod Affinity Topology Key
我们正在尝试将一些Keda Scaled Jobs部署到我们的 Kubernetes 集群。我们总是希望每个作业有一个节点。我正在尝试配置 podAntiAffinity 规则,以强制不将作业部署到正在运行具有给定标签的另一个作业(pod)的节点。根据文档和示例,您需要一个topologyKey,即
系统用来表示这种拓扑域的节点标签的键;
在我们的例子中,我们希望使用我们指定的实际标签,而不是主机名。在这种情况下,我们将如何配置我们的规则?
linux - 用于完成的 Kubernetes 作业或 Pod 具有自动缩放功能的作业
我有 CPU 密集型作业/任务,
需要在kubernetes中运行,下面是job/task的流程
- 我们以队列或 API 调用的形式获取请求
- 应该创建 POd 并处理任务(几个作业可能在几分钟内运行,几个小时内运行)
- 任务完成后删除 pod
这应该在规模上发生,如果队列中有更多作业,则创建更多作业(Max 10, 20, 30 2e 应该定义它)
我使用 KEDA,将创建 POD,并且在作业完成后它会崩溃循环,这是 POD 生命周期中的默认行为,因为它尝试重新创建 pod,因为重启策略设置为 Always。我们还有其他选项,例如 OnFailure、Never,但我读过 Kubernetes Jobs 更合适
对于上述任务,Kubernetes Pods 或 Jobs 哪个是更好的选择,我们应该考虑扩展 POds,并且还需要根据使用情况和队列中的任务数量来扩展 kubernetes 节点(云供应商支持它)。
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
部分进行了配置。
如果您需要额外的信息以任何方式提供帮助,也请告诉我!先感谢您。
docker - KEDA 不缩放超过 1 个吊舱
我有一个 Kubernetes 部署,它部署了一个 Pod,该 Pod 将从 RabbitMQ 队列中拉下一条消息。我还使用 KEDA 根据当前队列中的 RabbitMQ 消息来扩展部署。它正确地缩放到 0,然后在有消息时缩放到 1,但部署永远不会扩展到 1 以上。我当前的部署 YAML 文件:
我的 KEDA YAML 文件:
KEDA 操作员日志文件:
就 RabbitMQ 连接正常工作而言,我知道一切,并且 KEDA 知道要查看什么部署以及什么队列。所有这一切都通过 Pod 扩展到 0 和 1 的事实得到证明。但由于某种原因,即使队列中有 50 条消息,它也永远不会超过 1。
到目前为止,我已经尝试过使用pollingInterval
andcooldownPeriod
标签,但似乎都没有效果。有任何想法吗?
编辑:
我replicas
按照下面的建议从部署 YAML 文件中删除了该值。并且还查看了 HPA 日志。
生成的 HPA 日志:
这是在将 5 条消息发送到队列之后。出于某种原因,即使我value
在 KEDA YAML 文件中设置为 1,它也只认为需要 1 个 pod。
google-kubernetes-engine - 当部署在 GCP 中使用工作负载身份时,如何使用 GCP PubSub 设置 Keda 身份验证?
我无法使用 Google PubSub Scaler 在我的私有 GKE 集群中设置Keda 。
我有一个部署,我想根据订阅中的消息数量进行扩展。我的部署正在通过Workload Identity访问 Google 资源(轮询订阅)
我目前的设置是这样的。
我的部署:(只是添加了相关部分):
服务帐户 yaml 如下所示:
此服务帐户具有角色roles/pubsub.publisher
:roles/pubsub.subscriber
和roles/monitoring.viewer
。
现在是 keda 部分。
我想我应该使用 TriggerAuthenticator 并将 podIdentity 设置为gcp
,这是我的设置:
还有我的 ScaledObject yaml:
应用这些设置后,我的部署缩小到零,但是在订阅中有很多消息,检查日志keda-operator
我发现了这样的错误:
和
Pod 按预期工作,可以从订阅中提取。
所以这里有两件事,
- 我有一个身份验证问题,我很好奇工作设置是什么样的?
- 为什么在身份验证失败的情况下将部署缩减为零?
谢谢
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
我究竟做错了什么?
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。
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 建立连接