如何配置容器应用作业以使用准确的KEDA

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

在确定处理给定队列长度所需的副本数量时,我们在弄清楚如何在 Azure 容器应用程序作业上配置自动缩放规则以使用“准确”计算方法与默认方法时遇到一些困难。 问题在于,我们的副本执行长时间运行的作业,并在容器旋转后立即将项目从队列中拉出。 (我们不会让队列中的项目处于锁定状态) 考虑到需要执行的任务量,每个正在运行的容器可能会运行 20 到 60 分钟。当缩放器再次评估队列长度时(例如 1 分钟内),队列可能已收到 2 个新项目,但由于已经有两个副本正在运行(处理 20 分钟前的 2 个先前项目),它实际上认为两个活动副本用于目前有 2 个项目位于队列中,但情况并非如此。 “准确”的计算方法应该是简单的 1 比 1。队列中的一项将启动 1 个副本,而无需假设正在运行的副本适用于队列中的现有项。

MS 文档

here

指出我们应该能够充分利用任何 ScaledObject 基础 KEDA 缩放器。

enter image description here

以下是我们当前的缩放规则的示例,它查看队列长度并且仅按上述方式工作。

enter image description here 可以使用一些想法将其配置为要复制的 1 对 1 队列项。

谢谢,

azure azure-container-apps keda keda-scaledjob azure-container-app-jobs
1个回答
0
投票
this

apiVersion: keda.sh/v1alpha1 kind: ScaledObject metadata: name: azure-servicebus-queue-scaler namespace: default spec: scaleTargetRef: kind: Deployment name: myapp pollingInterval: 30 cooldownPeriod: 300 minReplicaCount: 1 maxReplicaCount: 100 triggers: - type: azure-servicebus metadata: namespace: "amarServiceBusNamespace" queueName: "workflow_activity_output_queue" messageCount: "1" # Trigger scale-out when there is at least 1 message authenticationRef: name: azure-servicebus-auth # Reference to the authentication secret

只需确保 
messageCount

应设置为

1
以确保每条消息都会触发新的副本,并且您提供存储消息的
queueName
创建触发认证

apiVersion: keda.sh/v1alpha1 kind: TriggerAuthentication metadata: name: azure-servicebus-auth namespace: default spec: secretTargetRef: - parameter: connection name: servicebus-secret key: connectionString

enter image description here但在此之前你需要创建一个

az servicebus namespace create --resource-group arkorg --name amarServiceBusNamespace --location eastus --sku Standard

enter image description here还有一个队列

az servicebus queue create --resource-group arkorg --namespace-name amarServiceBusNamespace --name workflow_activity_output_queue

enter image description here并部署您的 keda

helm install keda kedacore/keda --namespace keda --create-namespace

enter image description here正如您已经在问题中分享的那样,容器应用程序扩展示例部分保持不变,即使用此

ScaledObject

进行扩展,并且连接字符串正确存储在指定的秘密中。

enter image description hereaz servicebus namespace authorization-rule keys list --resource-group arkorg --namespace-name amarServiceBusNamespace --name RootManageSharedAccessKey --query primaryConnectionString --output tsv

enter image description herekubectl create secret generic servicebus-secret --from-literal=connectionString="sb://amarservicebusnamespace.servicebus.windows.net/;SharedAccessKeyName=RootManageSharedAccessKey;SharedAccessKey=abcdefghijklmnop=" -n default

enter image description here参考资料:

    在 Azure 容器应用程序 (azure-portal) 中设置扩展规则
  • 在 Azure 容器应用程序 (azure-resource-manager) 中设置扩展规则
© www.soinside.com 2019 - 2024. All rights reserved.