k8s 部署rabbitmq 3.13.0高可用集群

运维小白 11 阅读 云原生

部署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=rabbitmq

2、部署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: 5
kubectl create -f rabbitmq-deploy.yaml