asp.net core程序在k8s中基于rabbitmq队列消息数的HPA实践!

本文介绍了如何在Kubernetes(k8s)集群中,利用rabbitmq_exporter、Prometheus和prometheus-adapter实现基于rabbitmq队列消息数的水平自动伸缩(HPA)。通过暴露rabbitmq数据指标,让Prometheus抓取并转化成k8s API能识别的指标,从而实现自动扩容和缩容。
摘要由CSDN通过智能技术生成

背景

最近一段时间,陆陆续续的把手里头项目都迁移到了k8s中,期间遇到很多的坑,并且也学到了许多k8s的知识(从0-1),大家都知道k8s中的一大特性是自动扩容,对此结合自己的业务发现很是有“用武之地”,我有个业务,是向消息队列中插入消息,然后.net core console app进行消费,但是我这个业务有个特点,要么没有消息生产,要么就是有一大批消息产生。在引用HPA之前,我不得不提前启动“合适数量”的pod(1个pod多个消费者容器)来消费消息,要不然业务方要叫了。但是作为有“洁癖”的开发者,我不想相同的容器有太多的闲置,无所事事,又占用资源。所以我们需要借助HPA来实现自动伸缩扩容,消息多的时候,自动扩容;消息少的时候,自动缩容。

前期准备:

  1. 要有一个k8s集群(我是通过kubeadm搭建的3master+N node的集群 1.18.2)

  2. 有一个rabbitmq实例3.8.x

  3. rabbitmq_exporter:一个通过转化mq:15672接口数据,以metrics接口暴露出来的exporter

  4. kube-prometheus:一个将prometheus全家桶集合安装的开源项目

大体实现方向:

将rabbitmq的数据指标,以metrics接口的形式,暴露给prometheus server;然后再promethus中通过添加record rule规则来自定义你的队列指标;然后再promethus adapter中添加一条rule来将之前的指标转化成k8s api所能识别的接口;最后在k8s中定义HPA去监测prometheus adapter service暴露的转化好的接口来动态伸缩。

第一步:暴露rabbitmq数据指标

  • rabbitmq官网中monitor一节中有提到它有一个插件是给pormetheus用的,但是我看了下用起来不方便,达不到效果,遂用下面的这个开源项目。

  • rabbitmq_exporter这个项目它sample中使用的是直接docker run去启动容器,来进行mq数据指标的暴露,但是你最好把他运行在k8s中,方便管理。

  • 准备一个yaml文件,将rabbitmq exporter运行在k8s集群中,并以service的形式,暴露给k8s中安装的prometheus server去抓取

  • rabbitmq_exporter.yaml

  • 然后在k8s master中创建这个yaml: kubectl apply –f rabbitmq_exporter.yaml

  • 看到如下内容代表部署成功了&#x

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值