k8s 部署rabbitmq 3.13.0高可用集群
部署cluster-operator
下载地址
部署rabbitmq
1、为节点打上标签
kubectl label node n01 app.kubernetes.io/name=rabbitmq
kubectl label node n02 app.kubernetes.io/name=rabbitmq
kubectl label node n03 app.kubernetes.io/name=rabbitmq2、部署rabbitmq-deploy.yaml
kind: RabbitmqCluster
metadata:
name: rabbitmq
spec:
image: har.wildwintop.com:8443/base/rabbitmq-delayed:3.13.0
replicas: 3
resources:
requests:
cpu: 500m
memory: 1Gi
limits:
cpu: 2000m
memory: 4Gi
# 持久化存储配置
persistence:
storageClassName: "local-path"
storage: 100Gi
# RabbitMQ 配置
rabbitmq:
additionalConfig: |
vm_memory_high_watermark.relative = 0.7
disk_free_limit.absolute = 2GB
cluster_formation.peer_discovery_backend = rabbit_peer_discovery_k8s
cluster_formation.k8s.host = kubernetes.default.svc.cluster.local
queue_leader_locator = balanced
cluster_partition_handling = pause_minority
additionalPlugins:
- rabbitmq_management
- rabbitmq_delayed_message_exchange
# 亲和性配置:确保 Pod 分散在不同节点上,提高可用性
affinity:
podAntiAffinity:
requiredDuringSchedulingIgnoredDuringExecution:
- labelSelector:
matchLabels:
app.kubernetes.io/name: rabbitmq
topologyKey: kubernetes.io/hostname
override:
statefulSet:
spec:
template:
spec:
containers:
- name: rabbitmq
startupProbe:
exec:
command:
- rabbitmq-diagnostics
- ping
initialDelaySeconds: 30
timeoutSeconds: 10
periodSeconds: 10
failureThreshold: 30
livenessProbe:
exec:
command:
- rabbitmq-diagnostics
- ping
initialDelaySeconds: 60
periodSeconds: 30
timeoutSeconds: 10
readinessProbe:
exec:
command:
- rabbitmq-diagnostics
- ping
initialDelaySeconds: 20
periodSeconds: 10
timeoutSeconds: 5kubectl create -f rabbitmq-deploy.yaml