--- title: 配置 Pod 使用投射卷作存储 content_type: task weight: 70 --- 本文介绍怎样通过[`projected`](/zh/docs/concepts/storage/volumes/#projected) 卷将现有的多个卷资源挂载到相同的目录。 当前,`secret`、`configMap`、`downwardAPI` 和 `serviceAccountToken` 卷可以被投射。 {{< note >}} `serviceAccountToken` 不是一种卷类型 {{< /note >}} ## {{% heading "prerequisites" %}} {{< include "task-tutorial-prereqs.md" >}} {{< version-check >}} ## 为 Pod 配置 projected 卷 本练习中,您将从本地文件来创建包含有用户名和密码的 Secret。然后创建运行一个容器的 Pod, 该 Pod 使用[`projected`](/zh/docs/concepts/storage/volumes/#projected) 卷将 Secret 挂载到相同的路径下。 下面是 Pod 的配置文件: {{< codenew file="pods/storage/projected.yaml" >}} 1. 创建 Secret: ```shell # 创建包含用户名和密码的文件: echo -n "admin" > ./username.txt echo -n "1f2d1e2e67df" > ./password.txt # 将上述文件引用到 Secret: kubectl create secret generic user --from-file=./username.txt kubectl create secret generic pass --from-file=./password.txt ``` 2. 创建 Pod: ```shell kubectl create -f https://k8s.io/examples/pods/storage/projected.yaml ``` 3. 确认 Pod 中的容器运行正常,然后监视 Pod 的变化: ```shell kubectl get --watch pod test-projected-volume ``` 输出结果和下面类似: ``` NAME READY STATUS RESTARTS AGE test-projected-volume 1/1 Running 0 14s ``` 4. 在另外一个终端中,打开容器的 shell: ```shell kubectl exec -it test-projected-volume -- /bin/sh ``` 5. 在 shell 中,确认 `projected-volume` 目录包含你的投射源: ```shell ls /projected-volume/ ``` ## 清理 删除 Pod 和 Secret: ```shell kubectl delete pod test-projected-volume kubectl delete secret user pass ``` ## {{% heading "whatsnext" %}} * 进一步了解[`projected`](/zh/docs/concepts/storage/volumes/#projected) 卷。 * 阅读[一体卷](https://github.com/kubernetes/community/blob/master/contributors/design-proposals/node/all-in-one-volume.md)设计文档。