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 2021-08-13 09:19  运维开发玄德公  阅读(34)  评论(0编辑  收藏  举报  来源

导航