1 目标
一个 Pod 里两个容器,通过 emptyDir 共享目录」的动手任务。
步骤:写 YAML → 创建 → 验证共享成功。
writer 容器把数据写入 emptyDir,reader 容器实时读到,两者通过同一份卷完成通信
2 yaml
文件:two-container-share-volume.yaml
apiVersion: v1
kind: Pod
metadata:
name: share-volume-pod
spec:
restartPolicy: Never
volumes:
- name: shared-data # ❶ 声明 emptyDir 卷
emptyDir: {}
containers:
- name: writer # ❷ 写容器:生成文件后退出
image: registry.cn-hangzhou.aliyuncs.com/google_containers/busybox
imagePullPolicy: Never
volumeMounts:
- name: shared-data
mountPath: /data
command: ["/bin/sh"]
args: ["-c", "echo 'Hello from writer container' > /data/message.txt; sleep 2"]
- name: reader # ❸ 读容器:一直挂着等待查看
image: registry.cn-hangzhou.aliyuncs.com/google_containers/busybox
imagePullPolicy: Never
volumeMounts:
- name: shared-data
mountPath: /data
command: ["/bin/sh"]
args: ["-c", "sleep 5; cat /data/message.txt; tail -f /dev/null"]
3 验证
kubectl apply -f two-container-share-volume.yaml
hw@host2:~/istack$ kubectl get pod -o wide
NAME READY STATUS RESTARTS AGE IP NODE NOMINATED NODE READINESS GATES
istack-nginx-pod 1/1 Running 0 5h14m 10.0.0.162 host2 <none> <none>
share-volume-pod 1/2 NotReady 0 42s 10.0.0.143 host2 <none> <none>
hw@host2:~/istack$
hw@host2:~/istack$ kubectl logs share-volume-pod -c reader
Hello from writer container
hw@host2:~/istack$
hw@host2:~/istack$ kubectl exec -it share-volume-pod -c reader -- sh
/ # ls /data
message.txt
/ # cat /data/message.txt
Hello from writer container