以下是部署高可用 RabbitMQ 的 YAML 文件示例:

apiVersion: v1
kind: Service
metadata:
  name: rabbitmq-ha
spec:
  type: NodePort
  selector:
    app: rabbitmq-ha
  ports:
    - name: amqp
      port: 5672
      targetPort: 5672
      nodePort: 30000
    - name: management
      port: 15672
      targetPort: 15672
      nodePort: 30001

---

apiVersion: apps/v1
kind: StatefulSet
metadata:
  name: rabbitmq-ha
spec:
  selector:
    matchLabels:
      app: rabbitmq-ha
  serviceName: rabbitmq-ha
  replicas: 3
  template:
    metadata:
      labels:
        app: rabbitmq-ha
    spec:
      containers:
        - name: rabbitmq-ha
          image: rabbitmq:3.8.22-management-alpine
          ports:
            - name: amqp
              containerPort: 5672
            - name: management
              containerPort: 15672
          env:
            - name: RABBITMQ_ERLANG_COOKIE
              value: 'secretcookie'
          volumeMounts:
            - name: rabbitmq-data
              mountPath: /var/lib/rabbitmq
        - name: rabbitmq-init
          image: busybox:1.31.1
          command:
            - sh
            - -c
            - |
              if [ ! -f /var/lib/rabbitmq/.bootstrapped ]; then
                rabbitmq-plugins enable rabbitmq_peer_discovery_k8s
                touch /var/lib/rabbitmq/.bootstrapped
              fi
          volumeMounts:
            - name: rabbitmq-data
              mountPath: /var/lib/rabbitmq
      volumes:
        - name: rabbitmq-data
          persistentVolumeClaim:
            claimName: rabbitmq-pvc
  volumeClaimTemplates:
    - metadata:
        name: rabbitmq-pvc
      spec:
        accessModes:
          - ReadWriteOnce
        resources:
          requests:
            storage: 1Gi

这个 YAML 文件将会创建一个具有 3 个副本的 RabbitMQ 高可用集群,并在每个节点上暴露 5672 和 15672 端口的 NodePort 服务。您可以根据需要修改 nodePort 值。

注意,这个 YAML 文件使用了一个名为 rabbitmq_peer_discovery_k8s 的插件来实现 Kubernetes 环境中的节点发现。在执行上述 YAML 之前,您需要将它添加到您的 RabbitMQ 镜像中。例如,您可以在 Dockerfile 中添加以下行:

RUN rabbitmq-plugins enable rabbitmq_peer_discovery_k8s

然后重新构建您的镜像。

Kubernetes 1.20.15 高可用 RabbitMQ 部署:YAML 示例及 NodePort 暴露

原文地址: https://www.cveoy.top/t/topic/na4S 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录