k8s对象-挂载卷(emptyDir、hostPath、pvc+pv、StorageClass)

支持类型
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》


在这里插入图片描述

  • 0
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

玄德公笔记

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值