尝试在pod内的两个容器之间共享一个文件,我必须使用卷,并为该卷在入口路径中创建文件。
apiVersion: v1
kind: Pod
metadata:
name: pod-5
spec:
containers:
- name: busybox
image: busybox
command: ["sh", "-c", "if [ -f /workdir/foo ]; then sleep 3600; else exit; fi"]
volumeMounts:
- name: workdir
mountPath: "/workdir"
initContainers:
- name: install
image: busybox
command: ["sh", "-c", "touch /workdir/foo; hostname > /workdir/foo"]
volumeMounts:
- name: workdir
mountPath: "/workdir"
volumes:
- name: workdir
emptyDir: {}如果我不使用卷并在init容器中创建一个文件,并尝试从另一个容器中读取它,它将无法工作。
apiVersion: v1
kind: Pod
metadata:
name: pod-5
spec:
containers:
- name: busybox
image: busybox
command: ["sh", "-c", "if [ -f /workdir/foo ]; then sleep 3600; else exit; fi"]
initContainers:
- name: install
image: busybox
command: ["sh", "-c", "touch /workdir/foo; hostname > /workdir/foo"]为什么?我认为pod中的所有容器都应该共享网络和文件系统。
发布于 2020-06-06 17:03:05
同一个pod中的容器共享网络命名空间和IPC命名空间,但它们有单独的挂载命名空间和filesystem.Hence,我们使用卷来共享挂载。要了解有关名称空间的更多信息,请查看linux名称空间doc。
发布于 2020-06-06 16:41:17
让我们首先解释一下什么是Pod。Pod is是Kubernetes可以部署和管理的最小单元。换句话说,如果您需要在Kubernetes中运行单个容器,那么您需要为该容器创建一个Pod。同时,一个Pod可以包含多个容器,通常是因为这些容器是相对紧密耦合的。有多紧耦合?好吧,这样想吧: pod中的容器代表了在前容器世界中运行在同一服务器上的进程。
现在,把pod想象成您正在尝试运行容器的本地计算机中的pod。
kubernetes环境中的Pod也是如此。
在Kubernetes中,您可以使用共享Kubernetes Volume作为一种简单高效的方式在Pod中的容器之间共享数据。在大多数情况下,使用主机上与Pod内所有容器共享的目录就足够了
https://stackoverflow.com/questions/62228843
复制相似问题