Kubernetes将映像数据复制到卷装载
我需要在两个容器之间共享一个目录:myapp和monitoring,为了实现这一点,我在两个容器上创建了一个emptyDir:{}和volumeMountKubernetes将映像数据复制到卷装载,kubernetes,Kubernetes,我需要在两个容器之间共享一个目录:myapp和monitoring,为了实现这一点,我在两个容器上创建了一个emptyDir:{}和volumeMount spec: volumes: - name: shared-data emptyDir: {} containers: - name: myapp volumeMounts: - name: shared-data
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文件
是否有人可以提供建议?是否可以将共享数据装载在init容器中的/var/read处,并将配置文件从/etc/myapp/myapp.config复制到/var/read?考虑与一起使用 ConfigMap是用于在中存储非机密数据的API对象 键值对。POD可以使用ConfigMaps作为环境变量, 命令行参数,或作为卷中的配置文件 有时,共享一个卷以便在一个环境中多次使用是很有用的 单荚。
volumeMounts.subPath属性指定一个子路径
在引用的卷中,而不是在其根中
ConfigMaps可以用作卷。模板.spec中的volumeMounts
与任何其他卷相同。但是,卷部分是不同的。您不必指定persistentVolumeClaim
或其他卷类型,而是按名称引用configMap。然后可以添加子路径
属性,该属性如下所示:
volumeMounts:
- name: shared-data
mountPath: /etc/myapp/
subPath: myapp.config
以下是将向您展示如何设置它的资源:
- :官方文件
- :循序渐进指南
- :副刊
容器本身必须以某种形式运行cp
,可以在自己的入口点中运行,也可以在init容器中运行。Kubernetes从不单独将文件复制到卷中(这与Docker的行为不同)。。。/etc/myapp下有默认配置文件(由图像写入)和新配置文件(myapp容器正在运行)的数据应可供监控容器拾取。@BuggyB您是否设法使其工作?否,我现在放弃了上述内容。我将二进制文件(用于度量报废)直接嵌入到主myapp容器中,该容器可以直接从/etc/myapp/*读取,而不是使用需要上述功能的工具。这不是一个好的解决方案,因为当我扩展myapp时,监控也会扩展,但对于我的场景,我不会扩展-单容器myapp.1。将共享数据卷装载到/var/read-是2。但如何将myapp容器上的/etc/myapp/myapp.config复制到监视容器上的/var/read?