部署步骤
cluster-operator
根据需要版本,自行选择
bash
# yaml文件
wget https://github.com/rabbitmq/cluster-operator/releases/latest/download/cluster-operator.yml
# image
podman pull rabbitmqoperator/cluster-operator:2.10.0-arm64rabbitmq集群
软件包
bash
podman pull docker.io/library/rabbitmq:3.13.7-management-alpinerabbitmq-cluster.yaml
yaml
apiVersion: rabbitmq.com/v1beta1
kind: RabbitmqCluster
metadata:
namespace: middleware
name: rabbitmq-cluster
labels:
app: rabbitmq-cluster
spec:
replicas: 2
image: docker.io/library/rabbitmq:3.13.7-management-alpine
resources:
limits:
cpu: 2
memory: 4Gi
requests:
cpu: 100m
memory: 500Mi
persistence:
# storageClassName: local-path # 使用local-path-provisioner自动分配,根据实际使用的存储修改
storageClassName: manual
storage: 256Mi
rabbitmq:
additionalConfig: |
default_user=admin
default_pass=123456rabbitmq-external.yaml
yaml
apiVersion: v1
kind: Service
metadata:
name: rabbitmq-external
namespace: middleware
labels:
app: rabbitmq-external
spec:
type: NodePort
selector:
app.kubernetes.io/name: rabbitmq-cluster
ports:
- name: management
protocol: TCP
port: 15672
targetPort: 15672
nodePort: 31672
- name: amqp
protocol: TCP
port: 5672
targetPort: 5672
nodePort: 31671rabbitmq-pv.yaml
RabbitMQ cluster-operator会为每个pod创建一个pvc,例如persistence-rabbitmq-cluster-server-0,如果没有自动分配器,需要手动创建对应的pv
yaml
# pv-for-rabbitmq-server-0.yaml
apiVersion: v1
kind: PersistentVolume
metadata:
name: rabbitmq-pv-0 # 唯一的PV名称
labels:
app: rabbitmq # 可以加上标签方便管理
pv-for-rabbitmq-cluster: "true" # 自定义标签,方便识别
spec:
capacity:
storage: 256Mi # 匹配RabbitmqCluster中定义的storage大小
accessModes:
- ReadWriteOnce
persistentVolumeReclaimPolicy: Retain
storageClassName: manual
hostPath:
# 注意:这个路径应该在 Node A 上存在,且有写入权限
path: /app/data/rabbitmq-0
---
# pv-for-rabbitmq-server-1.yaml
apiVersion: v1
kind: PersistentVolume
metadata:
name: rabbitmq-pv-1 # 唯一的PV名称
labels:
app: rabbitmq
pv-for-rabbitmq-cluster: "true"
spec:
capacity:
storage: 256Mi # 匹配RabbitmqCluster中定义的storage大小
accessModes:
- ReadWriteOnce
persistentVolumeReclaimPolicy: Retain
storageClassName: manual
hostPath:
# 注意:这个路径应该在 Node B 上存在,且有写入权限
path: /app/data/rabbitmq-1