一、前言

本文主要以两种方式介绍安装RabbitMQ集群:

  • StatefulSet安装RabbitMQ集群
  • 编写Chart一键安装RabbitMQ集群

二、StatefulSet安装RabbitMQ集群

说明:下面安装未涉及持久性,但是生产环境必须要持久化

1.下载基本文件

[root@k8s-master01 ~]# git clone https://gitee.com/jeckjohn/stateful-set-rabbit-mq.git

2.检查之前是否安装过rabbitmq,若没有,可直接略过

[root@k8s-master01 ~]#  kubectl get po -n public-service
No resources found in public-service namespace.
[root@k8s-master01 ~]#  kubectl get svc,deployment -n public-service 
No resources found in public-service namespace.

如果存在,进行删除

[root@k8s-master01 ~]#  kubectl delete svc rabbitmq -n public-service
[root@k8s-master01 ~]#  kubectl delete deploy rabbitmq -n public-service

3.一键部署RabbitMQ集群

[root@k8s-master01 ~]# kubectl create ns public-service
[root@k8s-master01 ~]# cd stateful-set-rabbit-mq
[root@k8s-master01 stateful-set-rabbit-mq]#  kubectl apply -f . -n public-service

4.查看Pod及service建立情况

[root@k8s-master01 ~]# kubectl get po -n public-service
NAME            READY   STATUS    RESTARTS   AGE
rmq-cluster-0   1/1     Running   0          25m
rmq-cluster-1   1/1     Running   0          24m
rmq-cluster-2   1/1     Running   0          22m

[root@k8s-master01 stateful-set-rabbit-mq]# kubectl get svc -n public-service
NAME                   TYPE        CLUSTER-IP   EXTERNAL-IP   PORT(S)                          AGE
rmq-cluster            ClusterIP   None         <none>        5672/TCP                         29m
rmq-cluster-balancer   NodePort    10.0.3.116   <none>        15672:31372/TCP,5672:32359/TCP   29m

5.打开浏览器输入节点IP:32359页面测试访问,其中用户名是RABBITMQ_USER,用户密码是RABBITMQ_PASS

StatefulSet安装RabbitMQ集群-1

6.卸载安装的集群

[root@k8s-master01 ~]# cd stateful-set-rabbit-mq
[root@k8s-master01 stateful-set-rabbit-mq]#  kubectl delete -f . -n public-service

三、编写Chart一键安装RabbitMQ集群

1.下载文件

[root@k8s-master01 ~]# git clone https://gitee.com/jeckjohn/chart-rabbitmq.git
[root@k8s-master01 ~]# cd chart-rabbitmq/
[root@k8s-master01 chart-rabbitmq]# ls
Chart.yaml  templates  values.yaml

上面文件说明:

Chart.yaml 文件包含了该chart的描述。你可以从模板中访问它

  • apiVersion:Chart的apiVersion,目前默认都是v2
  • name:Chart的名称
  • description:Chart描述信息
  • type:图表的类型
  • version:Chart自己的版本号
  • appVersion:Chart内应用的版本号

templates/ 目录:包括了模板文件。当Helm评估chart时,会通过模板渲染引擎将所有文件发送到templates/目录中。 然后收集模板的结果并发送给Kubernetes

values.yaml 文件也导入到了模板。这个文件包含了chart的默认值。这些值会在用户执行helm installhelm upgrade时被覆盖,一般配置全局变量或者一些参数,其中优先级为values.yaml最低,--set参数最高

2.开始安装

[root@k8s-master01 ~]# cd chart-rabbitmq/
[root@k8s-master01 rabbitmq-cluster]# helm install rabbitmq . -n public-service

3.查看pod及svc

[root@k8s-master01 ~]# kubectl get po -n public-service
NAME         READY   STATUS    RESTARTS   AGE
rabbitmq-0   1/1     Running   0          4m8s
rabbitmq-1   1/1     Running   0          2m46s
rabbitmq-2   1/1     Running   0          85s

[root@k8s-master01 ~]# kubectl get svc  -n public-service
NAME                       TYPE        CLUSTER-IP     EXTERNAL-IP   PORT(S)                          AGE
rmq-cluster-headless       ClusterIP   None           <none>        5672/TCP                         4m10s
rmq-cluster-loadbalancer   NodePort    10.0.213.185   <none>        15672:32470/TCP,5672:31664/TCP   4m10s

4.打开浏览器输入节点IP:32470页面测试访问,其中用户名是user,用户密码是pass

编写Chart一键安装RabbitMQ集群-1

5.卸载安装的集群

[root@k8s-master01 ~]# cd chart-rabbitmq/
[root@k8s-master01 rabbitmq-cluster]# helm uninstall rabbitmq  -n public-service