k8s存储卷

简介

存储卷是定义在Pod之上的可被其内部所有容器挂载是使用的共享目录,该目录实际上是宿主机或外部存储设备之上的存储空间,可以被Pod内的多个容器挂载使用。存储卷独立与Pod的生命周期,因此它存储的数据可以在容器重启或重建后继续使用。

目前k8s支持的存储卷可以大致分为一下几类,它们各自有着不同的实现插件:

  1. 临时存储卷:emptyDir
  2. 本地存储卷:hostPath
  3. 网络存储卷:nfs、cinder、rbd、iscsi等
  4. 特殊存储卷:configmap、secret
  5. 扩展支持第三方存储的存储接口:CSI

通常k8s内置的存储卷插件可以归类为In-Tree类型,它们通k8s源码一起发布迭代,而由存储厂商借助CSI接口扩展的独立于k8s源码的插件统称为Out-of-Tree类型,集群管理员可以根据需要创建自定义的扩展插件,CSI是比较常用的实现方式。目前k8s已经开始逐步将In-Tree类型的存储卷插件迁移到CSI,所以建议在新环境中使用CSI。

emptyDir存储卷

emptyDir存储卷可以看作是Pod上的一个临时目录,其生命周期和Pod相同,Pod创建时被创建,Pod删除时被删除,通常用于数据缓存和临时存储。
emptyDir存储卷定义在Pod资源的spec.volumes.emptyDir字段,可嵌套使用的字段有两个:

  • medium:用于指定emptyDir存储卷使用的存储介质,可用值为default和Memory,默认是default表示使用节点的默认存储介质(磁盘);Memory表示使用基于内存的临时文件系统tmpfs,可用空间受限于内存,但性能很好,一般用于缓存
  • sizeLimit :当前存储卷的空间限额,默认为nil,不限制
apiVersion: apps/v1
kind: Deployment
metadata:
  name: volume-emptydir-demo
spec:
  replicas: 1
  selector:
    matchLabels:
      app: volume-emptydir-demo
  template:
    metadata:
      labels:
        app: volume-emptydir-demo
    spec:
      containers:
      - name: nginx
        image: nginx
        imagePullPolicy: IfNotPresent
        ports:
        - name: http
          containerPort: 80
        volumeMounts:
        - name: cache-volume
          mountPath: /cache
      volumes:
      - name: cache-volume
        emptyDir:
          medium: Memory
          sizeLimit: 128Mi

进入Pod验证
在这里插入图片描述
emptyDir其实就是node节点上的一个目录,它存放在 /var/lib/kubelet/pods/<pod-id>/volumes/kubernetes.io~empty-dir/ 下
在这里插入图片描述

hostPath存储卷

hostPath是将工作节点上的目录或文件关联到Pod上的一种卷类型,类似于Docker的bind mount,hostPath卷的生命周期和工作节点相同。hostPath存储卷在Pod需要访问节点上的文件时很有用。

hostPath存储卷定义在Pod资源的spec.volumes.hostPathz字段,可嵌套使用的字段有两个:

  • path <string>:用于指定工作节点上的目录路径
  • type <string>:用于指定工作节点之上的存储类型

关于type字段,目前支持的值有下面这些:

  • DirectoryOrCreate:指定的目录不存在时,自动将其创建为0755权限的空目录,属主和属组都为kubelet
  • Directory:事先必须存在的目录
  • FileOrCreate:指定的不存在时,自动将其创建为0644权限的空文件,属主和属组都为kubelet
  • File:事先必须存在的文件
  • Socket:事先必须存在的Socket文件
  • CharDevice:事先必须存在的字符设备路径
  • BlockDevice:事先必须存在的文件设备路径
  • “”:空字符串,默认值,用于向后兼容,在关联hostPath卷之前不进行任何检查
apiVersion: apps/v1
kind: Deployment
metadata:
  name: volume-hostpath-demo
spec:
  replicas: 1
  selector:
    matchLabels:
      app: volume-hostpath-demo
  template:
    metadata:
      labels:
        app: volume-hostpath-demo
    spec:
      containe
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值