Volume

概述


什么是Valume

默认情况下容器的数据都是非持久化的,在容器消亡以后数据也跟着丢失,所以 Docker 提供了 Volume 机制以便将数据持久化存储。类似的,Kubernetes 提供了更强大的 Volume 机制和丰富的插件,解决了容器数据持久化和容器间共享数据的问题。

与 Docker 不同,Kubernetes Volume 的生命周期与 Pod 绑定。容器挂掉后 Kubelet 再次重启容器时,Volume 的数据依然还在,而 Pod 删除时,Volume 才会清理。数据是否丢失取决于具体的 Volume 类型,比如 emptyDir 的数据会丢失,而 PV 的数据则不会丢

Volume类型

目前,Kubernetes 支持以下 Volume 类型:
emptyDir、hostPath、hostPath、gcePersistentDisk、awsElasticBlockStore、nfs、iscsi、flocker、glusterfs、rbd、cephfs、gitRepo、secret、persistentVolumeClaim、downwardAPI、azureFileVolume、azureDisk、vsphereVolume、Quobyte、PortworxVolume、ScaleIO、FlexVolume、StorageOS、local

用的比较多的是:emptyDir、hostPath、nfs、glusterfs

本地数据卷


emptyDir

emptyDir表示空目录,会在宿主机上创建数据卷目录并挂在到容器中。

创建emptyDir类型的数据卷

下面通过yaml文件创建一个emptyDir类型的数据卷:

apiVersion: v1
kind: Pod
metadata:
  name: redis-pod
spec:
  containers:
  - image: redis
    name: redis
    volumeMounts:
    - mountPath: /cache
      name: cache-volume
  volumes:
  - name: cache-volume
    emptyDir: {}

这里会创建一个叫redis-pod的pod,使用redis镜像,然后创建了一个emptyDir类型的volume,并挂载到容器的/cache。注意在yaml文件中volumes的定义和containers的定义在同一级。

创建这个pod:

kubectl create -f empty.yaml

这里写图片描述

查看数据卷

进入到这个pod中,可以看到我们挂载的cache目录:
这里写图片描述

hostPath

可以将宿主机中的目录挂载到容器中。

创建hostPath类型的volume

通过yaml文件创建:

apiVersion: v1
kind: Pod
metadata:
  name: test-pd
spec:
  containers:
  - image: nginx
    name: test-container
    volumeMounts:
   
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值