基于 RabbitMQ 队列大小的 GKE 自动缩放
Autoscaling in GKE based on RabbitMQ Queue Size
我对 Kubernetes 和 RabbitMQ 都很陌生,但我正在尝试根据 RabbitMQ 队列中就绪消息的数量自动缩放 pods。
我一直在关注 GCP 文档here and my prometheus rabbitmq container is based on the one found here
根据这些指南,我创建了一个部署
apiVersion: apps/v1
kind: Deployment
metadata:
labels:
run: rabbitmq-prometheus-sd
name: rabbitmq-prometheus-sd
namespace: default
spec:
replicas: 1
selector:
matchLabels:
run: rabbitmq-prometheus-sd
template:
metadata:
labels:
run: rabbitmq-prometheus-sd
spec:
containers:
# rabbitmq-exporter container
- name: prometheus
image: kbudde/rabbitmq-exporter:v0.29.0
env:
- name: RABBIT_URL
value: http://MYRABBITMQHOST.rmq.cloudamqp.com:15672
- name: RABBIT_USER
value: MYRABBITMQUSERNAME
- name: RABBIT_PASSWORD
value: MYRABBITMQPASSWORD
- name: PUBLISH_PORT
value: "9419"
# amqp 3.6.9++
- name: RABBIT_CAPABILITIES
value: "bert,no_sort"
# pre-built 'prometheus-to-sd' sidecar container to export prometheus
# metrics to Stackdriver
- name: prometheus-to-sd
image: gcr.io/google-containers/prometheus-to-sd:v0.5.0
command: ["/monitor"]
args:
- --source=:http://localhost:9419
- --stackdriver-prefix=custom.googleapis.com
- --pod-id=$(POD_ID)
- --namespace-id=$(POD_NAMESPACE)
env:
# save Kubernetes metadata as environment variables for use in metrics
- name: POD_ID
valueFrom:
fieldRef:
apiVersion: v1
fieldPath: metadata.uid
- name: POD_NAMESPACE
valueFrom:
fieldRef:
fieldPath: metadata.namespace
我可以将它部署到我在 GKE 中的集群,但是当我在指标资源管理器中检查自定义指标时,我只能找到这 3 个和 none 其他指标:
- rabbitmq_exporter_build_info
- rabbitmq_module_up
- rabbitmq_up
显然,如果没有队列指标,我无法创建 HPA 来扩展我的应用程序。任何有关为何未提供这些指标或建议的替代路线的帮助或指导将不胜感激。
问题是 rabbitmq 导出器不适用于托管在 cloudampq 上的 rabbitmq。 method 改为使用缩放
您可以使用 keda
, and specifically the RabbitMQ trigger 根据 RabbitMQ 队列的大小自动缩放 Kubernetes 部署。
我对 Kubernetes 和 RabbitMQ 都很陌生,但我正在尝试根据 RabbitMQ 队列中就绪消息的数量自动缩放 pods。
我一直在关注 GCP 文档here and my prometheus rabbitmq container is based on the one found here
根据这些指南,我创建了一个部署
apiVersion: apps/v1
kind: Deployment
metadata:
labels:
run: rabbitmq-prometheus-sd
name: rabbitmq-prometheus-sd
namespace: default
spec:
replicas: 1
selector:
matchLabels:
run: rabbitmq-prometheus-sd
template:
metadata:
labels:
run: rabbitmq-prometheus-sd
spec:
containers:
# rabbitmq-exporter container
- name: prometheus
image: kbudde/rabbitmq-exporter:v0.29.0
env:
- name: RABBIT_URL
value: http://MYRABBITMQHOST.rmq.cloudamqp.com:15672
- name: RABBIT_USER
value: MYRABBITMQUSERNAME
- name: RABBIT_PASSWORD
value: MYRABBITMQPASSWORD
- name: PUBLISH_PORT
value: "9419"
# amqp 3.6.9++
- name: RABBIT_CAPABILITIES
value: "bert,no_sort"
# pre-built 'prometheus-to-sd' sidecar container to export prometheus
# metrics to Stackdriver
- name: prometheus-to-sd
image: gcr.io/google-containers/prometheus-to-sd:v0.5.0
command: ["/monitor"]
args:
- --source=:http://localhost:9419
- --stackdriver-prefix=custom.googleapis.com
- --pod-id=$(POD_ID)
- --namespace-id=$(POD_NAMESPACE)
env:
# save Kubernetes metadata as environment variables for use in metrics
- name: POD_ID
valueFrom:
fieldRef:
apiVersion: v1
fieldPath: metadata.uid
- name: POD_NAMESPACE
valueFrom:
fieldRef:
fieldPath: metadata.namespace
我可以将它部署到我在 GKE 中的集群,但是当我在指标资源管理器中检查自定义指标时,我只能找到这 3 个和 none 其他指标:
- rabbitmq_exporter_build_info
- rabbitmq_module_up
- rabbitmq_up
显然,如果没有队列指标,我无法创建 HPA 来扩展我的应用程序。任何有关为何未提供这些指标或建议的替代路线的帮助或指导将不胜感激。
问题是 rabbitmq 导出器不适用于托管在 cloudampq 上的 rabbitmq。 method 改为使用缩放
您可以使用 keda
, and specifically the RabbitMQ trigger 根据 RabbitMQ 队列的大小自动缩放 Kubernetes 部署。