当前位置: 首页 > 知识库问答 >
问题:

Kubernetes部署中没有RabbitMQ配置文件

慕震博
2023-03-14

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

最初,我尝试不使用init容器,但我得到了一个错误,如“触摸:不能触摸'/etc/Rabbitmq/rabbitmq.conf':只读文件系统”

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部署只读文件系统错误”。但问题并没有解决。

共有2个答案

龙华翰
2023-03-14

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

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

我看到/etc/rabbitmq是一个挂载点。它是一个仅准备就绪的文件系统,因此文件复制失败。

可以更新预安装挂载点的权限吗

滕祯
2023-03-14

在“容器卷装部分”中进行更改后,我能够将文件复制到 /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
 类似资料:
  • null 我的问题是: 是否需要创建文件,然后在文件中引用它们,或者部署文件也可以嵌入pod定义? K8S文档似乎暗示的部分相当于定义一个pod。那是正确的吗?如果我想声明性地描述多pod部署呢?是否需要多个deployment.yml文件?

  • 本部分翻译自 Kubernetes The Hard Way,译者 @kweisamx 和 @feiskyer。该教程指引用户在 Google Cloud Platform 上面一步步搭建一个高可用的 Kubernetes 集群。 如有翻译不好的地方或文字上的错误, 欢迎提出 Issue 或是 PR。 另外,繁体中文版翻译见 Kubernetes-The-Hard-Way-ZH-tw。 本教程将带

  • 环境说明 CentOS 7.4 购买自阿里云普通的 ECS 华南地区(如果你是购买美国地区的服务器,则直接使用 kubespray 原项目,那些镜像地址不用修改,其他照着文档即可) 所有机子都是干净的不需要先安装 Docker 等其他容器相关的东西 机器简称 内网 IP 地址 部署软件 系统环境 硬件配置 操作机 172.18.243.242 ansible CentOS 7.4 1 vCPU +

  • 但却被忽略了。 是否可以使用maven激活配置文件?

  • 本章介绍创建的 Kubernetes 集群部署方法、 kubectl 客户端的安装方法以及推荐的配置。 其中 Kubernetes-The-Hard-Way 介绍了在 GCE 的 Ubuntu 虚拟机中一步步部署一套 Kubernetes 高可用集群的详细步骤,这些步骤也同样适用于 CentOS 等其他系统以及 AWS、Azure 等其他公有云平台。

  • 根据Kubernetes文档,部署和副本集之间有1:1的对应关系。类似地,根据replicas属性,一个ReplicaSet可以管理n个相同性质的豆荚。这是正确的认识吗? 从逻辑上讲(假设部署是一个包装器/控制器),我认为部署可以有多个副本集,每个副本集可以有多个豆荚(相同或不同种类)。如果这个说法是正确的,有人可以分享一个例子K8S模板吗?