Edit This Page

配置 Pod 使用投射卷作存储

本文介绍怎样通过投射 卷将现有的多个卷资源挂载到相同的目录。 当前,secretconfigMapdownwardAPIserviceAccountToken 卷可以被投射。

注意: `serviceAccountToken` 不是一种卷类型

准备开始

你必须拥有一个 Kubernetes 的集群,同时你的 Kubernetes 集群必须带有 kubectl 命令行工具。 如果你还没有集群,你可以通过 Minikube 构建一 个你自己的集群,或者你可以使用下面任意一个 Kubernetes 工具构建:

要获知版本信息,请输入 kubectl version.

为 Pod 配置投射卷

本练习中,您将从本地文件来创建包含有用户名和密码的 Secret。然后创建运行一个容器的 Pod,该 Pod 使用投射 卷将 Secret 挂载到相同的路径下。

下面是 Pod 的配置文件:

pods/storage/projected.yaml
apiVersion: v1
kind: Pod
metadata:
  name: test-projected-volume
spec:
  containers:
  - name: test-projected-volume
    image: busybox
    args:
    - sleep
    - "86400"
    volumeMounts:
    - name: all-in-one
      mountPath: "/projected-volume"
      readOnly: true
  volumes:
  - name: all-in-one
    projected:
      sources:
      - secret:
          name: user
      - secret:
          name: pass
  1. 创建 Secrets:
    <!--# Create files containing the username and password:--># 创建包含用户名和密码的文件:
       echo -n "admin" > ./username.txt
       echo -n "1f2d1e2e67df" > ./password.txt-->

    <!--# Package these files into secrets:--># 将上述文件引用到 Secret:
       kubectl create secret generic user --from-file=./username.txt
       kubectl create secret generic pass --from-file=./password.txt
  1. 创建 Pod:
       kubectl create -f https://k8s.io/examples/pods/storage/projected.yaml
确认 Pod 中的容器运行正常,然后监视 Pod 的变化:
       kubectl get --watch pod test-projected-volume
<!--The output looks like this:-->输出结果和下面类似:
   NAME                    READY     STATUS    RESTARTS   AGE
   test-projected-volume   1/1       Running   0          14s
  1. 在另外一个终端中,打开容器的 shell:
       kubectl exec -it test-projected-volume -- /bin/sh
  1. 在 shell 中,确认 `projected-volume` 目录包含你的投射源:
       ls /projected-volume/

接下来