【问题标题】:how to set rabbitmq data directory to pvc in kubernetes pod如何在 kubernetes pod 中将 rabbitmq 数据目录设置为 pvc
【发布时间】:2019-12-30 08:52:51
【问题描述】:

我尝试创建独立的 rabbitmq kubernetes 服务。数据应该挂载到我的持久卷中。

.....
apiVersion: v1
kind: ConfigMap
metadata:
  name: rabbitmq-config
data:
  enabled_plugins: |
      [rabbitmq_management,rabbitmq_peer_discovery_k8s].
  rabbitmq.conf: |
        loopback_users.guest = false
---
apiVersion: apps/v1beta1
kind: StatefulSet
metadata:
  name: standalone-rabbitmq
spec:
  serviceName: standalone-rabbitmq
  replicas: 1
  template:
        .....
        volumeMounts:
          - name: config-volume
            mountPath: /etc/rabbitmq
          - name: standalone-rabbitmq-data
            mountPath: /data
        - name: config-volume
          configMap:
            name: rabbitmq-config
            items:
            - key: rabbitmq.conf
              path: rabbitmq.conf
            - key: enabled_plugins
              path: enabled_plugins
        - name: standalone-rabbitmq-data
          persistentVolumeClaim:
            claimName: standalone-rabbitmq-pvc-test
---
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
  name: standalone-rabbitmq-pvc-test
spec:
  accessModes:
    - ReadWriteOnce
  resources:
    requests:
      storage: 1Gi
  storageClassName: test-storage-class

根据我的研究,我了解到rabbitmq的数据目录是RABBITMQ_MNESIA_DIR(请看https://www.rabbitmq.com/relocate.html)。所以我只想设置这个参数“/data”,这样我的新PVC(standalone-rabbitmq-pvc-test)就用来保存数据。 你能告诉我如何配置这个吗?

【问题讨论】:

    标签: kubernetes rabbitmq


    【解决方案1】:

    HTH,这就是我的配置。从中可以看到有挂载点。第一个是数据,第二个是配置,第三个是定义,分别在下面提到的 YML 中。

         volumeMounts:
        - mountPath: /var/lib/rabbitmq
          name: rmqdata
        - mountPath: /etc/rabbitmq
          name: config
        - mountPath: /etc/definitions
          name: definitions
          readOnly: true
    

    这是 PVC 模板的东西。

    volumeClaimTemplates:
    - metadata:
      creationTimestamp: null
      name: rmqdata
    spec:
      accessModes:
      - ReadWriteOnce
      resources:
        requests:
          storage: 100Gi
      storageClassName: nfs-provisioner
      volumeMode: Filesystem
    

    更新后:根据 cmets,您可以像这样将其直接挂载到 data 文件夹。将 rmqdata 分配给 mountpath 的部分将保持不变。

      volumes:
      - hostPath:
          path: /data
          type: DirectoryOrCreate
        name: rmqdata
    

    【讨论】:

    • 感谢您的回答。我不知道如何将 rmqdata 挂载到我的 pv,即“/data”目录。你能解释一下为什么使用定义吗?
    • 所以基本上'rmqdata'是PVC的名称,它以最简单的方式是一个文件夹。现在,在您的情况下,我认为您可以将其安装到其中一个节点上的文件夹中。
    【解决方案2】:

    为了添加路径,创建一个新文件,比如说 'rabbitmq.properties' 并添加您需要的所有环境变量,每行一个: echo "RABBITMQ_MNESIA_DIR=/data" >> rabbitmq.properties

    然后运行kubectl create configmap rabbitmq-config --from-file=rabbitmq.properties 生成配置映射。

    如果您需要在一个 configmap 中聚合多个配置文件,请在 --from-file 参数中指向文件夹的完整路径

    然后你可以运行kubectl get configmaps rabbitmq-config -o yaml 显示创建的 yaml:

    user@k8s:~$ kubectl get configmaps rabbitmq-config -o yaml
    apiVersion: v1
    data:
      rabbitmq.properties: |
        RABBITMQ_MNESIA_DIR=/data
    kind: ConfigMap
    metadata:
      creationTimestamp: "2019-12-30T11:33:27Z"
      name: rabbitmq-config
      namespace: default
      resourceVersion: "1106939"
      selfLink: /api/v1/namespaces/default/configmaps/rabbitmq-config
      uid: 4c6b1599-a54b-4e0e-9b7d-2799ea5d9e39
    

    如果您的 configmap 的所有其他方面都正确,您可以在 configmap 的数据部分中添加以下行:

      rabbitmq.properties: |
        RABBITMQ_MNESIA_DIR=/data
    

    【讨论】:

      猜你喜欢
      • 2019-02-16
      • 1970-01-01
      • 1970-01-01
      • 2021-06-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-05-24
      相关资源
      最近更新 更多