minikube上的RabbitMQ群集Kubernetes运算符
我正在尝试使用以下命令在Minikube上设置RabbitMQ: 尝试连接持久卷时,出现以下错误:minikube上的RabbitMQ群集Kubernetes运算符,kubernetes,rabbitmq,Kubernetes,Rabbitmq,我正在尝试使用以下命令在Minikube上设置RabbitMQ: 尝试连接持久卷时,出现以下错误: $ kubectl logs -f rabbitmq-rabbitmq-server-0 Configuring logger redirection 20:04:40.081 [warning] Failed to write PID file "/var/lib/rabbitmq/mnesia/rabbit@rabbitmq-rabbitmq-server-0.rabbitmq-r
$ kubectl logs -f rabbitmq-rabbitmq-server-0
Configuring logger redirection
20:04:40.081 [warning] Failed to write PID file "/var/lib/rabbitmq/mnesia/rabbit@rabbitmq-rabbitmq-server-0.rabbitmq-rabbitmq-headless.default.pid": permission denied
20:04:40.264 [error] Failed to create Ra data directory at '/var/lib/rabbitmq/mnesia/rabbit@rabbitmq-rabbitmq-server-0.rabbitmq-rabbitmq-headless.default/quorum/rabbit@rabbitmq-rabbitmq-server-0.rabbitmq-rabbitmq-headless.default', file system operation error: enoent
20:04:40.265 [error] Supervisor ra_sup had child ra_system_sup started with ra_system_sup:start_link() at undefined exit with reason {error,"Ra could not create its data directory. See the log for details."} in context start_error
20:04:40.266 [error] CRASH REPORT Process <0.247.0> with 0 neighbours exited with reason: {error,"Ra could not create its data directory. See the log for details."} in ra_system_sup:init/1 line 43
20:04:40.267 [error] CRASH REPORT Process <0.241.0> with 0 neighbours exited with reason: {{shutdown,{failed_to_start_child,ra_system_sup,{error,"Ra could not create its data directory. See the log for details."}}},{ra_app,start,[normal,[]]}} in application_master:init/4 line 138
{"Kernel pid terminated",application_controller,"{application_start_failure,ra,{{shutdown,{failed_to_start_child,ra_system_sup,{error,\"Ra could not create its data directory. See the log for details.\"}}},{ra_app,start,[normal,[]]}}}"}
Kernel pid terminated (application_controller) ({application_start_failure,ra,{{shutdown,{failed_to_start_child,ra_system_sup,{error,"Ra could not create its data directory. See the log for details."}
Crash dump is being written to: erl_crash.dump...
要在minikube上复制此版本,请执行以下操作:
kubectl应用-f”https://github.com/rabbitmq/cluster-operator/releases/latest/download/cluster-operator.yml"
kubectl get po
会显示一个名为rabbitmq-rabbitmq-server-0
的pod
kubectl logs-f rabbitmq-rabbitmq-server-0查看日志会显示上述错误
正如我在评论中所建议的,您可以通过以下方式解决此问题:
minikube ssh -- sudo chmod g+w /mnt/app/rabbitmq/
回答你的问题: 有没有一种方法可以将其添加到清单文件中,而不必手动执行 您可以重写rabbitmq statefulset清单字段,将initContainer命令脚本中的最后一行从
chgrp 999/var/lib/rabbitmq/mnesia/
更改为:chown 999:999/var/lib/rabbitmq/mnesia/
完整的RabbitmqCluster yaml清单如下所示:
apiVersion: rabbitmq.com/v1beta1
kind: RabbitmqCluster
metadata:
name: rabbitmq
spec:
replicas: 1
service:
type: NodePort
persistence:
storageClassName: local-storage
storage: 20Gi
override:
statefulSet:
spec:
template:
spec:
containers: []
initContainers:
- name: setup-container
command:
- sh
- -c
- cp /tmp/rabbitmq/rabbitmq.conf /etc/rabbitmq/rabbitmq.conf && chown 999:999
/etc/rabbitmq/rabbitmq.conf && echo '' >> /etc/rabbitmq/rabbitmq.conf ; cp /tmp/rabbitmq/advanced.config
/etc/rabbitmq/advanced.config && chown 999:999 /etc/rabbitmq/advanced.config
; cp /tmp/rabbitmq/rabbitmq-env.conf /etc/rabbitmq/rabbitmq-env.conf && chown
999:999 /etc/rabbitmq/rabbitmq-env.conf ; cp /tmp/erlang-cookie-secret/.erlang.cookie
/var/lib/rabbitmq/.erlang.cookie && chown 999:999 /var/lib/rabbitmq/.erlang.cookie
&& chmod 600 /var/lib/rabbitmq/.erlang.cookie ; cp /tmp/rabbitmq-plugins/enabled_plugins
/etc/rabbitmq/enabled_plugins && chown 999:999 /etc/rabbitmq/enabled_plugins
; chown 999:999 /var/lib/rabbitmq/mnesia/ # <- CHANGED THIS LINE
apiVersion:rabbitmq.com/v1beta1
种类:RabbitmqCluster
元数据:
名称:rabbitmq
规格:
副本:1份
服务:
类型:节点端口
坚持不懈:
storageClassName:本地存储
储存量:20Gi
覆盖:
状态集:
规格:
模板:
规格:
集装箱:[]
初始化容器:
-名称:安装容器
命令:
-嘘
--c
-cp/tmp/rabbitmq/rabbitmq.conf/etc/rabbitmq/rabbitmq.conf&&chown 999:999
/etc/rabbitmq/rabbitmq.conf&&echo'>>/etc/rabbitmq/rabbitmq.conf;cp/tmp/rabbitmq/advanced.config
/etc/rabbitmq/advanced.config&&chown 999:999/etc/rabbitmq/advanced.config
; cp/tmp/rabbitmq/rabbitmq-env.conf/etc/rabbitmq/rabbitmq-env.conf&&chown
999:999/etc/rabbitmq/rabbitmq-env.conf;cp/tmp/erlang cookie secret/.erlang.cookie
/var/lib/rabbitmq/.erlang.cookie&&chown 999:999/var/lib/rabbitmq/.erlang.cookie
&&chmod 600/var/lib/rabbitmq/.erlang.cookie;cp/tmp/rabbitmq插件/启用的插件
/etc/rabbitmq/enabled_插件和&chown 999:999/etc/rabbitmq/enabled_插件
; chown 999:999/var/lib/rabbitmq/mnesia/#
当我尝试附加持久卷时
-您没有提到如何附加它。最好我需要信息如何复制您的问题。请提供一步一步的说明来复制它。嗨,马特!谢谢你的帮助。对不起,我对k8s还是新手。我假设我使用hostPath声明PersistentVolume就是如何附加它的;否则我恐怕不明白你的问题。我附上了关于如何重现该问题的步骤。如果您需要任何进一步的详细信息,请告诉我。运行minikube ssh--sudo chmod g+w/mnt/app/rabbitmq/
,并告诉我它是否解决了问题it@Matt谢谢你,这真的奏效了!有没有一种方法可以将其添加到清单文件中,而不必手动执行?非常感谢!
minikube ssh -- sudo chmod g+w /mnt/app/rabbitmq/
apiVersion: rabbitmq.com/v1beta1
kind: RabbitmqCluster
metadata:
name: rabbitmq
spec:
replicas: 1
service:
type: NodePort
persistence:
storageClassName: local-storage
storage: 20Gi
override:
statefulSet:
spec:
template:
spec:
containers: []
initContainers:
- name: setup-container
command:
- sh
- -c
- cp /tmp/rabbitmq/rabbitmq.conf /etc/rabbitmq/rabbitmq.conf && chown 999:999
/etc/rabbitmq/rabbitmq.conf && echo '' >> /etc/rabbitmq/rabbitmq.conf ; cp /tmp/rabbitmq/advanced.config
/etc/rabbitmq/advanced.config && chown 999:999 /etc/rabbitmq/advanced.config
; cp /tmp/rabbitmq/rabbitmq-env.conf /etc/rabbitmq/rabbitmq-env.conf && chown
999:999 /etc/rabbitmq/rabbitmq-env.conf ; cp /tmp/erlang-cookie-secret/.erlang.cookie
/var/lib/rabbitmq/.erlang.cookie && chown 999:999 /var/lib/rabbitmq/.erlang.cookie
&& chmod 600 /var/lib/rabbitmq/.erlang.cookie ; cp /tmp/rabbitmq-plugins/enabled_plugins
/etc/rabbitmq/enabled_plugins && chown 999:999 /etc/rabbitmq/enabled_plugins
; chown 999:999 /var/lib/rabbitmq/mnesia/ # <- CHANGED THIS LINE