【问题标题】:RabbitMQ configuration files is not coping in the Kubernetes deploymentRabbitMQ 配置文件不适用于 Kubernetes 部署
【发布时间】:2019-10-22 11:55:47
【问题描述】:

我正在尝试在 Kubernetes 集群上部署 RabbitMQ,并使用 initcontainer 从 ConfigMap 复制文件。但是,在 POD 处于运行状态后,文件不会被复制。

最初,我尝试不使用 initcontainer,但收到类似“touch: cannot touch '/etc/rabbitmq/rabbitmq.conf': Read-only file system.”之类的错误。

kind: Deployment
metadata:
  name: broker01
  namespace: s2sdocker
  labels:
    app: broker01
spec:
  replicas: 1
  selector:
    matchLabels:
      app: broker01
  template:
   metadata:
     name: broker01
     labels:
       app: broker01
   spec:
     initContainers:
      - name: configmap-copy
        image: busybox
        command: ['/bin/sh', '-c', 'cp /etc/rabbitmq/files/definitions.json /etc/rabbitmq/']
        volumeMounts:
          - name: broker01-definitions
            mountPath: /etc/rabbitmq/files
          - name: pre-install
            mountPath: /etc/rabbitmq

     containers:
      - name: broker01
        image: rabbitmq:3.7.17-management
        envFrom:
          - configMapRef:
              name: broker01-rabbitmqenv-cm
        ports:
        volumeMounts:
          - name: broker01-data
            mountPath: /var/lib/rabbitmq
          - name: broker01-log
            mountPath: /var/log/rabbitmq/log
          - name: broker01-definitions
            mountPath: /etc/rabbitmq/files
     volumes:
       - name: pre-install
         emptyDir: {}
       - name: broker01-data
         persistentVolumeClaim:
           claimName: broker01-data-pvc
       - name: broker01-log
         persistentVolumeClaim:
           claimName: broker01-log-pvc
       - name: broker01-definitions
         configMap:
            name: broker01-definitions-cm

文件“definitions.json”应该被复制到/etc/reabbitmq 文件夹。我关注了“Kubernetes deployment read-only filesystem error”。但问题没有解决。

【问题讨论】:

  • 很高兴看到 broker01-definitions-cm 配置图定义
  • 我正在尝试将 docker-compose 文件转换为 Kubernetes。这是 docker-compose 文件 synatx。 broker01: image: rabbitmq:3.7.17-management env_file: - broker/rabbitmq01/conf/rabbitmq.env networks: - private volumes: - ./broker/rabbitmq01/data:/var/lib/rabbitmq - ./broker/rabbitmq01/conf/definitions.json:/etc/rabbitmq/definitions.json - ./broker/rabbitmq01/log:/var/log/rabbitmq/log dns_search: . restart: always
  • 文件太大,无法在此处添加,超出字符限制。

标签: kubernetes rabbitmq


【解决方案1】:

在“containers volumeMount”部分进行更改后,我能够将文件复制到 /etc/rabbitmq 文件夹。

请在此处找到修改后的代码。

      - name: broker01
        image: rabbitmq:3.7.17-management
        envFrom:
          - configMapRef:
              name: broker01-rabbitmqenv-cm
        ports:
        volumeMounts:
          - name: broker01-data
            mountPath: /var/lib/rabbitmq
          - name: broker01-log
            mountPath: /var/log/rabbitmq/log
          - name: pre-install
            mountPath: /etc/rabbitmq

【讨论】:

    【解决方案2】:

    你能检查 /etc/rabbitmq/ 的权限吗? 用户是否有权将文件复制到上述位置?

          - name: pre-install
            mountPath: /etc/rabbitmq
    

    我看到 /etc/rabbitmq 是一个挂载点。它是一个现成的文件系统,因此文件复制失败。

    您能否更新“预安装”挂载点的权限

    【讨论】:

    • /# ls -ld /etc/ /etc/rabbitmq/ drwxr-xr-x. 1 root root 22 Oct 22 11:52 /etc/ drwxrwxrwx. 1 rabbitmq rabbitmq 40 Oct 22 11:52 /etc/rabbitmq/ #
    • 你能指导我怎么做吗?是 initcontainer 中的 chmod 命令吗?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-05-15
    • 2020-10-06
    • 1970-01-01
    • 2018-11-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多