首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >KEDA不能扩展到1个pod以上

KEDA不能扩展到1个pod以上
EN

Stack Overflow用户
提问于 2021-04-29 03:51:53
回答 2查看 461关注 0票数 0

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

代码语言:javascript
复制
apiVersion: apps/v1
kind: Deployment
metadata:
  name: scale
  labels:
    app: scale
spec:
  replicas: 1
  selector: 
    matchLabels:
      app: scale
  template:
    metadata:
      labels:
        app: scale
    spec:
      containers:
        - name: scale-deployment
          image: bharper7/scale:v1
          imagePullPolicy: Never

我的KEDA YAML文件:

代码语言:javascript
复制
apiVersion: keda.sh/v1alpha1
kind: ScaledObject
metadata:
  name: scale-keda-deployment
  labels:
    app: scale
    deploymentName: scale
spec:
  scaleTargetRef:
    name: scale
  pollingInterval: 5
  minReplicaCount: 0
  maxReplicaCount: 10
  cooldownPeriod: 60
  triggers:
  - type: rabbitmq
    metadata:
      host: amqp://EmZn4ScuOPLEU1CGIsFKOaQSCQdjhzca:dJhLl2aVF78Gn07g2yGoRuwjXSc6tT11@192.168.49.2:30861
      mode: QueueLength
      value: '1'
      queueName: scaleTest

KEDA操作员日志文件:

代码语言:javascript
复制
2021-04-28T19:25:39.846Z        INFO    scaleexecutor   Successfully updated ScaleTarget        {"scaledobject.Name": "scale-keda-deployment", "scaledObject.Namespace": "default", "scaleTarget.Name": "scale", "Original Replicas Count": 0, "New Replicas Count": 1}
2021-04-28T19:25:40.272Z        INFO    controllers.ScaledObject        Reconciling ScaledObject        {"ScaledObject.Namespace": "default", "ScaledObject.Name": "scale-keda-deployment"}

我知道RabbitMQ连接正在工作的一切,KEDA知道要查看什么部署,以及什么队列。所有这一切都被pod缩放到0和1的事实所证明,但是由于某种原因,即使我在队列中有50条消息,它也从来没有超过1。

到目前为止,我已经尝试过使用pollingIntervalcooldownPeriod标记,但似乎都没有效果。有什么想法吗?

编辑:

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

生成的HPA日志:

代码语言:javascript
复制
Name:                                           keda-hpa-scale-keda-deployment
Namespace:                                      default
Labels:                                         app=scale
                                                app.kubernetes.io/managed-by=keda-operator
                                                app.kubernetes.io/name=keda-hpa-scale-keda-deployment
                                                app.kubernetes.io/part-of=scale-keda-deployment
                                                app.kubernetes.io/version=2.1.0
                                                deploymentName=scale
                                                scaledObjectName=scale-keda-deployment
Annotations:                                    <none>
CreationTimestamp:                              Wed, 28 Apr 2021 11:24:15 +0100
Reference:                                      Deployment/scale
Metrics:                                        ( current / target )
  "rabbitmq-scaleTest" (target average value):  4 / 20
Min replicas:                                   1
Max replicas:                                   10
Deployment pods:                                1 current / 1 desired
Conditions:
  Type            Status  Reason              Message
  ----            ------  ------              -------
  AbleToScale     True    ReadyForNewScale    recommended size matches current size
  ScalingActive   True    ValidMetricFound    the HPA was able to successfully calculate a replica count from external metric rabbitmq-scaleTest(&LabelSelector{MatchLabels:map[string]string{scaledObjectName: scale-keda-deployment,},MatchExpressions:[]LabelSelectorRequirement{},})
  ScalingLimited  False   DesiredWithinRange  the desired count is within the acceptable range
Events:
  Type     Reason             Age                From                       Message
  ----     ------             ----               ----                       -------
  Warning  FailedGetScale     22m (x6 over 23m)  horizontal-pod-autoscaler  deployments/scale.apps "scale" not found
  Normal   SuccessfulRescale  15m                horizontal-pod-autoscaler  New size: 1; reason: All metrics below target

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

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2021-04-29 22:05:27

如果其他人遇到这个问题,我设法找到了一个变通的办法。根据docs的说法,queueLength的使用已被弃用,应该使用mode。但是换回过时的标签对我来说很有效,因为某些原因新的标签不起作用。这并不是一个真正合适的修复,但至少它让我的部署规模达到了预期。我的KEDA部署文件现在如下所示:

代码语言:javascript
复制
apiVersion: keda.sh/v1alpha1
kind: ScaledObject
metadata:
  name: keda-deployment
  labels:
    apps: ffmpeg
    deploymentName: ffmpeg
spec:
  scaleTargetRef:
    name: ffmpeg
  pollingInterval: 10
  cooldownPeriod: 1200
  maxReplicaCount: 50
  triggers:
  - type: rabbitmq
    metadata:
      host: amqp://EmZn4ScuOPLEU1CGIsFKOaQSCQdjhzca:dJhLl2aVF78Gn07g2yGoRuwjXSc6tT11@192.168.49.2:30861
      queueName: files
      queueLength: '1'
票数 0
EN

Stack Overflow用户

发布于 2021-06-14 13:10:29

请检查一下KEDA版本。如果你使用的是小于或等于2.1的版本,那么你需要添加queueLength参数。queueLength的默认值为20,即一个实例可以执行20条消息。ScaledObject在21条消息之前不会增加pod。您必须将queueLength设置为1,以便为每条消息增加1个pod计数。

文档链接:https://keda.sh/docs/2.1/scalers/rabbitmq-queue/

modevalue参数是在KEDA版本2.2中添加的。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/67307036

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档