Kubernetes/Helm:在 Init 和 Main 容器之间共享一个非属性文件
Kubernetes/Helm: sharing a single not properties file between Init and Main containers
在 kubernetes (minikube) / helm env 中,我有一个 ldif 文件,我想在 Init 容器和普通容器之间的卷上共享。我不想共享存储此文件的整个文件夹。
不幸的是,根据我的理解,这是不可能的,除非文件是属性文件(语法 "key=value")。
我使用 configMap/subPath 进行了测试,似乎如果不遵守 key/value 语法,Init 容器甚至不会启动,否则一切正常,文件也会出现在主容器中。
所以我想知道是否有可能完成这种分享。
BR
编辑:主容器启动命令是单服务启动,它不能复制或移动init容器共享的文件,除非它是唯一的方法。
要在 init 容器和其他容器之间共享文件,您可以使用带 emptyDir 的卷挂载
volumes:
- name: cache-volume
emptyDir: {}
init容器要共享的文件可以由容器进程复制到emptyDir的mountPath上,然后主容器从emptyDir卷的mouthPath中获取。
即使在 pod 重新启动后,有问题的文件,比如路径 /path1/file 也会被复制到 /path2/file(initcontainer 上的 emptyDir 的 mouthPath),然后在挂载 emptyDir 时保留在那里到主容器可用,直到 pod 重新启动
是的,这是可能的,而且您的方向是正确的。
这是一个如何执行此操作的示例。
---
kind: ConfigMap
apiVersion: v1
metadata:
name: example-configmap
data:
my-file.ldif: |
dn: cn=The Postmaster,dc=example,dc=com
objectClass: organizationalRole
cn: The Postmastermongodb
---
kind: Pod
apiVersion: v1
metadata:
name: example-pod
spec:
volumes:
- name: config-volume
configMap:
name: example-configmap
initContainers:
- name: init
image: busybox
volumeMounts:
- name: config-volume
mountPath: /path/in/the/init-container/my-file.ldif
subPath: my-file.ldif
containers:
- name: main
image: busybox
volumeMounts:
- name: config-volume
mountPath: /path/in/the/container/my-file.ldif
subPath: my-file.ldif
如果您发布您的配置图,将会有所帮助。您可能会被绊倒,因为要使其正常工作,您需要将文件的全部内容作为 configmap 中一个键的值。
在 kubernetes (minikube) / helm env 中,我有一个 ldif 文件,我想在 Init 容器和普通容器之间的卷上共享。我不想共享存储此文件的整个文件夹。
不幸的是,根据我的理解,这是不可能的,除非文件是属性文件(语法 "key=value")。
我使用 configMap/subPath 进行了测试,似乎如果不遵守 key/value 语法,Init 容器甚至不会启动,否则一切正常,文件也会出现在主容器中。
所以我想知道是否有可能完成这种分享。
BR
编辑:主容器启动命令是单服务启动,它不能复制或移动init容器共享的文件,除非它是唯一的方法。
要在 init 容器和其他容器之间共享文件,您可以使用带 emptyDir 的卷挂载
volumes:
- name: cache-volume
emptyDir: {}
init容器要共享的文件可以由容器进程复制到emptyDir的mountPath上,然后主容器从emptyDir卷的mouthPath中获取。
即使在 pod 重新启动后,有问题的文件,比如路径 /path1/file 也会被复制到 /path2/file(initcontainer 上的 emptyDir 的 mouthPath),然后在挂载 emptyDir 时保留在那里到主容器可用,直到 pod 重新启动
是的,这是可能的,而且您的方向是正确的。
这是一个如何执行此操作的示例。
---
kind: ConfigMap
apiVersion: v1
metadata:
name: example-configmap
data:
my-file.ldif: |
dn: cn=The Postmaster,dc=example,dc=com
objectClass: organizationalRole
cn: The Postmastermongodb
---
kind: Pod
apiVersion: v1
metadata:
name: example-pod
spec:
volumes:
- name: config-volume
configMap:
name: example-configmap
initContainers:
- name: init
image: busybox
volumeMounts:
- name: config-volume
mountPath: /path/in/the/init-container/my-file.ldif
subPath: my-file.ldif
containers:
- name: main
image: busybox
volumeMounts:
- name: config-volume
mountPath: /path/in/the/container/my-file.ldif
subPath: my-file.ldif
如果您发布您的配置图,将会有所帮助。您可能会被绊倒,因为要使其正常工作,您需要将文件的全部内容作为 configmap 中一个键的值。