【发布时间】:2019-10-26 09:01:40
【问题描述】:
我使用 prometheus 适配器 https://github.com/DirectXMan12/k8s-prometheus-adapter 设置了带有自定义指标的 Kubernetes Horizontal Pod Autoscaler。 Prometheus 正在监控 rabbitmq,我正在关注 rabbitmq_queue_messages 指标。队列中的消息被 Pod 拾取,然后进行一些处理,这可能会持续几个小时。
放大和缩小是根据队列中的消息数量进行的。
问题: 当 pod 完成处理并确认消息时,这将降低 num。队列中的消息,这将触发 Autoscaler 终止 pod。如果我有多个 Pod 进行处理并且其中一个完成,如果我没记错的话,Kubernetes 可以终止仍在处理自己的消息的 Pod。这是不可取的,因为 pod 正在执行的所有处理都会丢失。
有没有办法克服这个问题,或者有其他方法可以解决这个问题?
这里是 Autoscaler 配置:
kind: HorizontalPodAutoscaler
apiVersion: autoscaling/v2beta1
metadata:
name: sample-app-rabbitmq
namespace: monitoring
spec:
scaleTargetRef:
# you created above
apiVersion: apps/v1
kind: Deployment
name: sample-app
minReplicas: 1
maxReplicas: 10
metrics:
- type: Object
object:
target:
kind: Service
name: rabbitmq-cluster
metricName: rabbitmq_queue_messages_ready
targetValue: 5
【问题讨论】:
标签: kubernetes rabbitmq autoscaling