k8s使用keda监听mq进行弹性伸缩容器

背景

RabbitMQ队列

RabbitMQ是一种称为消息代理或队列管理器的消息队列软件.

简单地说: 这是一个可以定义队列的软件,

应用程序可以连接到队列并将消息传输到该队列上。

RabbitMQ使用者被部署为接受RabbitMQ服务器生成的队列并模拟执行的部署。

原理

使用触发器创建ScaledObject,监听mq队列消息

1,创建ScaledObject后,KEDA控制器将自动同步配置并开始监视上面创建的Rabbitmq-consumer,而其会监听对应的mq队列消息数

2,而ScaledObject和HPA(水平Pod自动缩放器)配置会绑定你对应的pod (Deployment)项目,KEDA将驱动容器根据从事件源接收的信息进行横向扩展

3,扩容原理:并根据通过ScaledObject提供的触发规则(在此示例中,如果rabbitmq队列消息积压数量为5的时候就会扩容1个pod数量,如果队列消息积压数为10则扩容2个pod,如果队列消息积压数为15则扩容3个pod

4,缩容原理:若rabbitmq队列积压数减少的时候,keda的触发器会联动HPA对绑定的pod (Deployment)项目进行缩容,如果队列消息积压数为10则缩容为2个pod,如果为5则缩容为1个pod

实施

1,在k8s集群上执行apply 下面的yaml文件,新建了ScaledObject 就可以了

1,监控MQ的队例长度与扩容数量的yaml文件内容

apiVersion: keda.sh/v1alpha1
kind: ScaledObject
metadata:
  name: rabbitmq-xxx-xxx-consumer
  namespace: xxxx-test
spec:
  scaleTargetRef:  # scale 的目标引用
    name: xxx-xx
  pollingInterval: 30 # 多长时间监听一次队列可选. 默认: 30 seconds
  cooldownPeriod: 3600 # pod生存的时间可选. 默认: 300 seconds
  maxReplicaCount: 5 # 最大容器数量可选. 默认: 100
  triggers:
  - type: rabbitmq  # 基于 rabbitmq 进行伸缩
    metadata:
      queueName: xxxxx  # 监听的队列名
      queueLength: "5"  #每达到5个堆积任务数量进行扩容
    authenticationRef:
      name: rabbitmq-xxx-xxx-consumer-trigger   #调用下面的TriggerAuthentication
---
#TriggerAuthentication配置
apiVersion: keda.sh/v1alpha1
kind: TriggerAuthentication
metadata:
  name: rabbitmq-xxx-xxx-consumer-trigger
  namespace: xxxxt-test
spec:
  secretTargetRef:
    - parameter: host
      name: rabbitmq-xxxx-edit    #调用Secret (K8S集群中配置的MQ账号密码 )
      key: RabbitMqHost

Secret配置

上面yaml 中的mq队列配置  rabbitmq-xxxx-edit 这个需要在同命名空间的secret配置

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值