kubernetes——emptyDir和hostPath的区别

本文参考:https://www.cnblogs.com/breezey/p/9827570.html

emptyDir和hostPath的区别

volume类型

  volume是kubernetes Pod中多个容器访问的共享目录。volume被定义在pod上,被这个pod的多个容器挂载到相同或不同的路径下。volume的生命周期与pod的生命周期相同,pod内的容器停止和重启时一般不会影响volume中的数据。所以一般volume被用于持久化pod产生的数据。

Kubernetes提供了众多的volume类型,包括eemptyDir、hostPath、gcePersistentDisk、awsElasticBlockStore、gitRepo、secret、nfs、iscsi、glusterfs、persistentVolumeClaim、rbd、flexVolume、cinder、cephfs、flocker、downwardAPI、fc、azureFile、configMap、vsphereVolume等

emptyDir

emptyDir类型的volume在pod分配到node上时被创建,kubernetes会在node上自动分配 一个目录,因此无需指定宿主机node上对应的目录文件。这个目录的初始内容为空,当Pod从node上移除时,emptyDir中的数据会被永久删除。

emptyDir Volume主要用于某些应用程序无需永久保存的临时目录,多个容器的共享目录等。

实例见本博客博文《kubernetes v1.14.0——Pod容器共享volume》

hostPath

  hostPath Volume为pod挂载宿主机上的目录或文件,使得容器可以使用宿主机的高速文件系统进行存储。
缺点
  在k8s中,pod都是动态在各node节点上调度。当一个pod在当前node节点上启动并通过hostPath存储了文件到本地以后,下次调度到另一个节点上启动时,就无法使用在之前节点上存储的文件。

apiVersion: v1
kind: Pod
metadata:
  name: tomcat
  namespace: admin
spec:
  containers:
  - name: tomcat9
    image: tomcat:9
    imagePullPolicy: IfNotPresent
    volumeMounts:
    - name: tomcat-log
      mountPath: /usr/local/tomcat/logs
    ports:
    - containerPort: 8080
  volumes:
  - name: tomcat-log
    hostPath:
      path: /root/logs

  tomcat所在节点的目录/root/logs/挂载到容器tomcat9的/usr/local/tomcat/logs/下,当pod运行时,日志会被存储在本地目录中。

  • 4
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值