Kubernetes投射卷储存

2023-12-25 41

Kubernetes 中,卷(Volume)是一种用于将主机上的文件或目录挂载到容器中的机制。然而,有时候我们可能需要将多个卷资源挂载到相同的目录,以实现更灵活的存储管理。本文将介绍如何通过 projected 卷将现有的多个卷资源挂载到相同的目录,帮助更好地理解和利用这一强大的功能。当前,secret、configMap、downwardAPI 和 serviceAccountToken 卷可以被投射。

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

一、准备开始

必须拥有一个 Kubernetes 的集群,同时必须配置 kubectl 命令行工具与集群通信。 建议在至少有两个不作为控制平面主机的节点的集群上运行本教程。 如果还没有集群,可以通过 Minikube 构建一个自己的集群,或者可以使用下面的 Kubernetes 练习环境之一:

  • Killercoda
  • 玩转 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
  • 广告合作

  • QQ群号:707632017

温馨提示:
1、本网站发布的内容(图片、视频和文字)以原创、转载和分享网络内容为主,如果涉及侵权请尽快告知,我们将会在第一时间删除。邮箱:2942802716#qq.com(#改为@)。 2、本站原创内容未经允许不得转裁,转载请注明出处“站长百科”和原文地址。