minikube上的RabbitMQ群集Kubernetes运算符

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

我正在尝试使用以下命令在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-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上复制此版本,请执行以下操作:

  • 安装rabbitmq操作符:
  • 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