0

RabbitMQ キューから単一のメッセージをプルダウンするポッドを展開する Kubernetes 展開があります。また、KEDA を使用して、現在キューにある RabbitMQ メッセージに基づいてデプロイをスケーリングしています。メッセージがある場合は常に 0 に正しくスケーリングされ、その後 1 にスケーリングされますが、デプロイは 1 を超えてスケ​​ーリングされることはありません。現在のデプロイ YAML ファイル:

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 ファイル:

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 オペレータ ログ ファイル:

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 は、どのデプロイとどのキューを調べるかを知っています。これはすべて、ポッドが 0 と 1 にスケールするという事実によって証明されています。

これまでのところ、タグpollingIntervalcooldownPeriodタグをいじってみましたが、どちらも効果がないようです。何か案は?

編集:

replicas以下に示すように、展開 YAML ファイルから値を削除しました。また、HPA ログも調べました。

生成された HPA ログ:

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 つのメッセージをキューに送信した後です。value何らかの理由で、KEDA YAML ファイルで 1に設定しているにもかかわらず、必要なポッドは 1 つだけと考えられます。

4

2 に答える 2

0

他の誰かがこの問題に出くわした場合に備えて、回避策を見つけることができました. docsによると、の使用queueLengthは推奨されておらず、mode代わりに使用する必要があります。しかし、非推奨のタグに戻すと、何らかの理由で新しいタグが機能しませんでした。実際には適切な修正ではありませんが、少なくとも展開が期待どおりにスケーリングされました。私の KEDA 展開ファイルは次のようになります。

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'
于 2021-04-29T14:05:27.413 に答える