kubernetes 12015 在集群中部署高可用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
然后重新构建您的镜像。
原文地址: http://www.cveoy.top/t/topic/bHH4 著作权归作者所有。请勿转载和采集!