配置 Pod 使用投射卷作存储
本文介绍怎样通过 projected
卷将现有的多个卷资源挂载到相同的目录。
当前,secret
、configMap
、downwardAPI
和 serviceAccountToken
卷可以被投射。
说明:
serviceAccountToken
不是一种卷类型。准备开始
你必须拥有一个 Kubernetes 的集群,且必须配置 kubectl 命令行工具让其与你的集群通信。 建议运行本教程的集群至少有两个节点,且这两个节点不能作为控制平面主机。 如果你还没有集群,你可以通过 Minikube 构建一个你自己的集群,或者你可以使用下面的 Kubernetes 练习环境之一:
要获知版本信息,请输入 kubectl version
.
为 Pod 配置投射卷
本练习中,你将使用本地文件来创建用户名和密码 Secret,
然后创建运行一个容器的 Pod,
该 Pod 使用projected
卷将 Secret 挂载到相同的路径下。
下面是 Pod 的配置文件:
apiVersion: v1
kind: Pod
metadata:
name: test-projected-volume
spec:
containers:
- name: test-projected-volume
image: busybox:1.28
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
-
创建 Secret:
# 创建包含用户名和密码的文件: 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
-
创建 Pod:
kubectl apply -f https://k8s.io/examples/pods/storage/projected.yaml
-
确认 Pod 中的容器运行正常,然后监视 Pod 的变化:
kubectl get --watch pod test-projected-volume
输出结果和下面类似:
NAME READY STATUS RESTARTS AGE test-projected-volume 1/1 Running 0 14s
-
在另外一个终端中,打开容器的 shell:
kubectl exec -it test-projected-volume -- /bin/sh
-
在 shell 中,确认
projected-volume
目录包含你的投射源:ls /projected-volume/
清理
删除 Pod 和 Secret:
kubectl delete pod test-projected-volume
kubectl delete secret user pass
接下来
Feedback
Was this page helpful?
Glad to hear it! Please tell us how we can improve.
Sorry to hear that. Please tell us how we can improve.
最后修改 October 12, 2023 at 7:45 PM PST: sync kubeadm-upgrad attach-handler-lifecycle-event configure-projected-volume-storage (d4db22d419)