Linux RabbitMQ无法在Kubernetes上启动持久性存储。权限拒绝错误

Linux RabbitMQ无法在Kubernetes上启动持久性存储。权限拒绝错误,linux,docker,kubernetes,rabbitmq,persistent-storage,Linux,Docker,Kubernetes,Rabbitmq,Persistent Storage,我有一个rabbit mq pod,配置为在pod重新启动/删除时通过装入卷来使用持久性存储 我配置了所有内容,但无法通过此错误: /usr/lib/rabbitmq/bin/rabbitmq-server: 42: /usr/lib/rabbitmq/bin/rabbitmq-server: cannot create /var/lib/rabbitmq/mnesia/rabbit@reana-message-broker-5f45f797ff-cs79m.pid: Permission

我有一个rabbit mq pod,配置为在pod重新启动/删除时通过装入卷来使用持久性存储

我配置了所有内容,但无法通过此错误:

/usr/lib/rabbitmq/bin/rabbitmq-server: 42: 
/usr/lib/rabbitmq/bin/rabbitmq-server: 
cannot create /var/lib/rabbitmq/mnesia/rabbit@reana-message-broker-5f45f797ff-cs79m.pid: 
Permission denied
这是我的kubernetes配置文件和部署应用程序

  • Dockerfile
  • start.sh

  • 让我知道我可能遗漏了什么。:)

    错误显示“无法创建/var/lib/rabbitmq/mnesia”/rabbit@reana-message-broker-5f45f797ff-cs79m.pid:
    “权限被拒绝”。尝试为/var/lib/rabbitmq/mnesia/目录提供写入权限。

    您在
    /var/lib/rabbitmq/mnesia
    中装载的卷归root所有

    rabbitmq进程正在以
    rabbitmq
    用户身份运行,并且没有对此目录的写访问权限

    start.sh中添加:

    chown rabbitmq:rabbitmq /var/lib/rabbitmq/mnesia
    
    在启动rabbitmq服务器进程之前

    #!/bin/sh
    cat > /etc/rabbitmq/rabbitmq.conf <<EOF
    listeners.tcp.default = 5672
    
    default_user = <<"$1">>
    default_pass = <<"$2">>
    EOF
    rabbitmq-server
    
    ---
    apiVersion: v1
    kind: Service
    metadata:
      name: message-broker
      namespace: {{ .Release.Namespace }}
    spec:
      ports:
       - port: 5672
         targetPort: 5672
         name: "tcp"
         protocol: TCP
       - port: 15672
         targetPort: 15672
         name: "management"
         protocol: TCP
      selector:
        app: message-broker
    ---
    apiVersion: apps/v1
    kind: Deployment
    metadata:
      name: message-broker
      namespace: {{ .Release.Namespace }}
    spec:
      replicas: 1
      selector:
        matchLabels:
          app: message-broker
      template:
        metadata:
          labels:
            app: message-broker
        spec:
          containers:
          - name: message-broker
            image: {{ .Values.message_broker.image }}
            imagePullPolicy: {{ .Values.components.message_broker.imagePullPolicy }}
            ports:
            - containerPort: 5672
              name: tcp
            - containerPort: 15672
              name: management
            volumeMounts:
            - name: data
              mountPath: /var/lib/rabbitmq/mnesia
            env:
            - name: RABBITMQ_DEFAULT_PASS
              valueFrom:
                secretKeyRef:
                  name: rabbitmq-secrets
                  key: password # password = root
            - name: RABBITMQ_DEFAULT_USER
              valueFrom:
                secretKeyRef:
                  name: rabbitmq-secrets
                  key: user # user = root
          ...
          nodeSelector:
          ....
          volumes:
          - name: data
            hostPath:
              path: /var/test/rabbitmq
    
    chown rabbitmq:rabbitmq /var/lib/rabbitmq/mnesia