Kubernetes 1.20.15 高可用 RabbitMQ 部署:YAML 示例及 NodePort 暴露
以下是部署高可用 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
然后重新构建您的镜像。
原文地址: https://www.cveoy.top/t/topic/na4S 著作权归作者所有。请勿转载和采集!