emptyDir-gitRepo
emptyDir & gitRepo
k8s存储类型分类(卷的类型)
临时存储
emptyDir 用于存储临时数据的简单空目录
gitRepo 通过检出Git仓库的内容来初始化的卷
持久存储
hostPath 用于将目录从工作节点的文件系统挂载到pod中
nfs 挂载到pod中的NFS共享卷
configMap 存储配置文件
secret 加密存储方案 比如加密用户名密码,密钥
volume 存储卷
persistent volume 持久卷
emptyDir
它是最简单的卷,其他的卷都是在它的基础上创建的
它充当暂存空间,如果有多个容器的数据需要合并,可以使用emptyDir当作临时存储的位置
充当存档点,存储pod重启时需要恢复的数据
具体来说,当一个 emptyDir 卷被创建并挂载到一个 Pod 中时,Kubernetes 会在节点上为该卷创建一个临时目录。这个临时目录位于节点的磁盘上,通常是在节点的文件系统中的某个目录。
该临时目录的存储介质取决于节点的配置。它可以是节点的本地磁盘、临时存储或其他可供节点使用的持久化存储。
需要注意的是,emptyDir 卷的数据具有临时性,只在该 Pod 的生命周期内存在。当 Pod 终止后,emptyDir 卷中的数据也会被清除,并且在下次启动相同的 Pod 时,将重新创建一个空的 emptyDir 卷。
apiVsersion: v1
kind: Pod
metadata:
name: fortune
spec:
containers:
- image: luksa/fortune 这个镜像生成index.html文件
name: html-generator
volumeMounts:
- name: html 挂载名为html的卷
mountPath: /var/htdocs 挂载路径
- image: nginx:alpine 生成的index.html被ngnix服务使用
name: web-server
volumeMounts:
- name: html 挂载名为html的卷
mountPath: /usr/share/nginx/html 挂载路径
readOnly: true
ports:
- containerPort: 80
protocol: TCP
volumes:
- name: html 卷名为html
emptyDir: {} 类型为emptyDir
kubectl port-forward fortune 8080:80 用本地8080端口访问nginx服务
选择存储介质
volumes:
- name: html
emptyDir:
medium: Memory
gitRepo
apiVsersion: v1
kind: Pod
metadata:
name: gitrepo-volume-pod
spec:
containers:
- image: nginx:alpine 生成的index.html被ngnix服务使用
name: web-server
volumeMounts:
- name: html 挂载名为html的卷
mountPath: /usr/share/nginx/html 挂载路径
readOnly: true
ports:
- containerPort: 80
protocol: TCP
volumes:
- name: html
gitRepo:
repository: https://github.com/luksa/kubia-website-example.git
revision: master 检出主分支
directory: . 将repo克隆到卷的根目录
hostPath
将主机节点文件系统上的文件或目录挂载到Pod中
一般情况下,pod是不应该访问节点文件系统的,但是某些系统级别的pod(通常由DaemonSet管理)确实读取节点文件,K8S通过hostPath来实现。
它是单节点的,如果pod被调度到其他节点,这个pod就不能使用原来的hostPath
hostPaht指向节点文件系统的特定文件或目录,同一节点上运行在其hostPath卷中使用相同路径的pod可以看到相同文件
创建
apiVersion: v1
kind: Pod
metadata:
name: hostpath-pod
spec:
containers:
- name: host-container
image: nginx
volumeMounts:
- mountPath: /test-pd # 容器中的挂载路径
name: test-volume
volumes:
- name: test-volume
hostPath:
path: /data # 宿主机的挂载路径
type: DirectoryOrCreate # 该类型表示没有目录就创建并给予相应的权限
除了必需的 path 属性之外,用户可以选择性地为 hostPath 卷指定 type
值 | 行为 |
---|---|
空字符串(默认)用于向后兼容,这意味着在挂载hostPath卷之前不会执行任何检查 | |
DirectoryOrCreate | 如果在给定的路径上没有任何东西存在,那么将根据需要在那里创建一个空目录,权限设置为0755,与kubelet具有相同的组和所有权 |
Directory | 给定的路径下必须存在目录 |
FileOrCreate | 如果在给定的路径下没有任何东西存在,那么会根据需要创建一个空文件,权限设置为0644,与kubelet具有相同的组和所有权 |
File | 给定的路径下必须存在文件 |
Socket | 在给定的路径下必须存在UNIX套接字 |
CharDevice | 在给定的路径下必须存在字符设备 |
BlockDevice | 在给定的路径下必须存在块设备 |
NFS
volumes:
- name: mongodb-data
nfs:
server: 1.1.1.1
path: /some/path
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· 写一个简单的SQL生成工具
· AI 智能体引爆开源社区「GitHub 热点速览」
· C#/.NET/.NET Core技术前沿周刊 | 第 29 期(2025年3.1-3.9)