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 にスケールするという事実によって証明されています。
これまでのところ、タグpollingInterval
とcooldownPeriod
タグをいじってみましたが、どちらも効果がないようです。何か案は?
編集:
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 つだけと考えられます。