如何在 kubernetes 上设置基本的 rabbitmq
Posted
技术标签:
【中文标题】如何在 kubernetes 上设置基本的 rabbitmq【英文标题】:how to setup basic rabbitmq on kubernetes 【发布时间】:2019-10-08 21:39:28 【问题描述】:我需要在 kubernetes 集群上设置一个没有持久性或安全性要求的基本 rabbit mq 实例(无集群设置)。
我需要什么:
单个兔子 mq pod 作为有状态集运行,副本数 = 1,并且 通过特定的 url(ampp 端口和管理接口端口)从集群内部和外部访问它
我不需要的东西:
坚持 安全 集群设置到目前为止,我发现的 helm 图表都是针对具有集群、持久性等的生产设置,但我不需要这些东西,因为我只会将实例用于测试
这是我目前所拥有的:
apiVersion: v1
kind: Service
metadata:
name: rs-rmq-mgt
spec:
selector:
app: rs-rmq
ports:
- protocol: TCP
port: 1337
targetPort: 15672
type: NodePort
---
apiVersion: apps/v1
kind: StatefulSet
metadata:
name: rs-rmq
spec:
selector:
matchLabels:
app: rs-rmq
serviceName: "rs-rmq"
replicas: 1
template:
metadata:
labels:
app: rs-rmq
spec:
containers:
- name: rs-rmq
image: rabbitmq:management
ports:
- containerPort: 25672
- containerPort: 5672
- containerPort: 4369
- containerPort: 15672
【问题讨论】:
【参考方案1】:如果您只需要一个副本和持久性。您可以使用简单的 pod 部署而不是 sts。 Please refer sts doc
kubectl run rabbitmq --image=rabbitmq:management --expose --port=15672 --restart=Never
--dry-run -o yaml > rabbitmq.yml
编辑相关容器端口并创建 pod。
kubectl create -f rabbitmq.yml
将服务公开为 NodePort。
kubectl expose po rabbitmq --port 15672
现在,您可以通过外部访问它
NodesIP:NodePort
在内部使用,
[svc].[命名空间].svc
【讨论】:
【参考方案2】:正确的做法是通过专用 helm-chart (stable/rabbitmq) 和 helm (Kubernetes 包管理器) 安装 rabbitmq。主要原因:这种方式经过开源社区的彻底测试和验证。
如果你想走捷径,请参考Kubernetes官网的如下任务:Starting a message queue service(rabbitmq)。您将在那里找到所有必要清单文件的链接。
【讨论】:
【参考方案3】:将此StatefulSet
yaml 文件用于基本的rabbitmq 实例:
apiVersion: apps/v1beta1
kind: StatefulSet
metadata:
name: rabbitmq
spec:
replicas: 1
serviceName: rabbitmq
selector:
matchLabels:
app: rabbitmq
template:
metadata:
labels:
app: rabbitmq
spec:
containers:
- name: rabbitmq
image: rabbitmq:3-management
env:
- name: "RABBITMQ_ERLANG_COOKIE"
value: "1WqgH8N2v1qDBDZDbNy8Bg9IkPWLEpu79m6q+0t36lQ="
volumeMounts:
- mountPath: /var/lib/rabbitmq
name: rabbitmq-data
volumes:
- name: rabbitmq-data
hostPath:
path: /data/rabbitmq
type: DirectoryOrCreate
【讨论】:
我们不需要指定将客户端连接到 RabbitMQ 的端口吗? 能否请您说,我们如何在这里传递任何额外的配置?【参考方案4】:我认为最简单的方法是使用Helm:
helm install stable/rabbitmq
然后只需阅读图表中输出注释中的说明即可:)
【讨论】:
以上是关于如何在 kubernetes 上设置基本的 rabbitmq的主要内容,如果未能解决你的问题,请参考以下文章