我需要在两个容器myapp和monitoring之间共享一个目录,为此,我创建了一个emptyDir:{},然后在这两个容器上创建了volumeMount。
spec:
volumes:
- name: shared-data
emptyDir: {}
containers:
- name: myapp
volumeMounts:
- name: shared-data
mountPath: /etc/myapp/
- name: monitoring
volumeMounts:
- name: shared-data
mountPath: /var/read 这可以很好地工作,因为我写入共享数据目录的数据在两个容器中都可见。但是,在/etc/myapp/myapp.config下创建容器时创建的配置文件是隐藏的,因为共享数据卷挂载在/etc/myapp路径上(重叠)。
如何强制容器首先将卷挂载到/etc/myapp路径,然后使docker镜像将myapp.config文件放在默认路径/etc/myapp下,除非它是已挂载的卷,从而允许监控容器在/var/read下访问配置文件?
摘要:让监视容器读取myapp容器上的/etc/myapp/myapp.config文件。
有没有人能给点建议?
发布于 2020-11-30 16:36:16
您是否可以在init容器中挂载/var/read处的共享数据,并将配置文件从/etc/myapp/myapp.config复制到/var/read?
发布于 2020-12-09 18:48:25
考虑在SubPaths中使用ConfigMaps。
API是一个
对象,用于以键值对的形式存储非机密性数据。Pod可以将ConfigMaps作为环境变量、命令行参数或卷中的配置文件使用。有时,在单个pod中共享一个卷以供多种用途是很有用的。
volumeMounts.subPath属性指定引用卷内的子路径,而不是其根路径。
ConfigMaps可以用作卷。template.spec中的volumeMounts与任何其他卷相同。但是,volumes部分有所不同。您可以按名称引用configMap,而不是指定persistentVolumeClaim或其他卷类型。然后,您可以添加subPath属性,如下所示:
volumeMounts:
- name: shared-data
mountPath: /etc/myapp/
subPath: myapp.config以下是向您展示如何设置它的资源:
分步指导
https://stackoverflow.com/questions/65064992
复制相似问题