我试图在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部署只读文件系统错误”。但问题并没有解决。
您可以检查/etc/rabbitmq/上的权限吗。用户是否有权将文件复制到上述位置?
- name: pre-install
mountPath: /etc/rabbitmq
我看到/etc/rabbitmq是一个挂载点。它是一个仅准备就绪的文件系统,因此文件复制失败。
可以更新预安装挂载点的权限吗
在“容器卷装部分”中进行更改后,我能够将文件复制到 /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模板吗?