k8s动手任务2:通过 emptyDir 共享目录实现多容器共享卷

35 阅读1分钟

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