k8s对象-挂载卷

支持类型
emptyDir
hostPath
gcePersistentDisk
awsElasticBlockStore
nfs
iscsi
glusterfs
rbd
gitRepo
secret
persistentVolumeClaim

以下介绍集中常用挂载类型:

1. emptyDir

1.1 概念

  • 位置
    pod所在的node节点。
    实际位置在 /var/lib/kubelet/pods/下(2.1.3 中我们将验证这个操作)

  • 生命周期
    该pod启动时创建
    该pod被移除时删除
    容器崩溃数据不丢失

1.2 示例

volumeMounts:
- name: server-logs
mountPath: /app/logs
volumes:
- name: server-logs
emptyDir: {}

1.3 实际位置

测试:我们按2.1.2 示例 创建一个挂载空目录的nginx容器,在容器中写一个 hellohello文件,到pod所在node节点上,查看该容器:

[root@DoN03 data]# docker ps |grep nginx
a1b2d342fe85 harbocto.boe.com.cn/public/nginx "/docker-entrypoint.…" 8 minutes ago Up 8 minutes k8s_nginxtest-02_nginxtest-02_test_9928f5c6-80fd-4310-b4f6-8b07ce61fbab_0
52b228668ff3 registry.aliyuncs.com/google_containers/pause:3.1 "/pause" 8 minutes ago Up 8 minutes k8s_POD_nginxtest-02_test_9928f5c6-80fd-4310-b4f6-8b07ce61fbab_0

查找该文件所在位置:

[root@DoN03 data]# find / -name hellohello
/var/lib/kubelet/pods/9928f5c6-80fd-4310-b4f6-8b07ce61fbab/volumes/kubernetes.io~empty-dir/server-logs/hellohello

2. hostPath

  • 位置
    pod所在的node节点的指定目录下

  • 生命周期
    该pod启动时创建
    该pod被移除时不会删除

  • 示例

app/logs将被挂载在宿主机的/data/logs目录

volumeMounts:
- name: server-logs
mountPath: /app/logs
volumes:
- name: server-logs
hostPath:
path: /data/logs

3. pvc+pv

3.1 作用

  • pvc:和pod关联(由pod指定pvc名),关联到pod中要挂载的目录。
  • pv:向存储申请空间并关联pvc,不受namespace限制。

3.2 组件间的关系

pod--------pvc------pv--------存储

  • 一个pod可以挂载多个pvc
  • 多个pod可挂载一个pvc
  • pv和pvc一一对应

3.3 示例

  • pvc
kind: PersistentVolumeClaim
apiVersion: v1
metadata:
name: pv-map-logs
spec:
accessModes:
- ReadWriteOnce
resources:
requests:
storage: 1Gi
  • pv
apiVersion: v1
kind: PersistentVolume
metadata:
name: pv-map-logs #名字和pvc一致即可关联
spec:
capacity:
storage: 1Gi
accessModes:
- ReadWriteOnce
nfs:
path: /data/map/logs #挂载nfs服务器的路径
server: 10.10.xxx.xxx # 挂载nfs服务器的地址
persistentVolumeReclaimPolicy: Recycle #回收策略

说明:
1)回收策略:

  • Recycle:删除pvc自动清除pv中的数据,pv的状态变为Available,可重新被挂载。
  • Retain:删除pvc后,pv变为Released状态,不可再使用。
  • Delete:删除pvc后,自动删除pv。
  • deployment 使用
volumeMounts:
- name: map-logs
mountPath: /app/logs
volumes:
- name: map-logs
persistentVolumeClaim:
claimName: pv-map-logs

4. 动态存储

storageclass 为PVC自动创建PV。

详情见 《k8s-StorageClass》


posted on   运维开发玄德公  阅读(35)  评论(0编辑  收藏  举报  

相关博文:
阅读排行:
· DeepSeek 开源周回顾「GitHub 热点速览」
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· AI与.NET技术实操系列(二):开始使用ML.NET
· 单线程的Redis速度为什么快?
< 2025年3月 >
23 24 25 26 27 28 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 1 2 3 4 5

导航

统计

点击右上角即可分享
微信分享提示