Kubernetes对象之Volume

Kubernetes Volume:
默认情况下容器中的磁盘文件是非持久化的。
Kubernetes Volume具有明确的生命周期与pod相同。
Volume的生命周期比Pod中运行的任何容器要持久,在容器重新启动时能可以保留数据。
Pod被删除不存在时,Volume也将消失。
Kubernetes支持许多类型的Volume,Pod可以同时使用任意类型/数量的Volume。
一个Volume只是一个目录,目录中可能有一些数据,pod的容器可以访问这些数据。
要使用Volume,pod需要指定Volume的类型和内容(spec.volumes字段),和映射到容器的位置(spec.containers.volumeMounts字段)。


Volume 类型:
Kubernetes支持Volume类型有:
emptyDir、hostPath、gcePersistentDisk、awsElasticBlockStore、nfs、iscsi、fc (fibre channel)、flocker、glusterfs、rbd、cephfs、gitRepo、secret、persistentVolumeClaim、downwardAPI、projected、azureFileVolume、azureDisk、vsphereVolume、Quobyte、PortworxVolume、ScaleIO、StorageOS、local




emptyDir:
使用emptyDir,当Pod分配到Node上时,将会创建emptyDir,并且只要Node上的Pod一直运行,Volume就会一直存在。
当Pod(不管任何原因)从Node上被删除时,emptyDir也同时会删除,存储的数据也将永久删除。
删除容器不影响emptyDir。




hostPath:
hostPath允许挂载Node上的文件系统到Pod里面去。
Pod需要使用Node上的文件,可以使用hostPath。


Local:
Local 是Kubernetes集群中每个节点的本地存储。
Local Storage同HostPath的区别在于对Pod的调度上,使用Local Storage可以由Kubernetes自动的对Pod进行调度,而是用HostPath只能人工手动调度Pod。
本地PersistentVolume需要手动清理和删除。


Using subPath:
volumeMounts.subPath特性可以用来指定卷中的一个子目录,而不是直接使用卷的根目录。


gcePersistentDisk:
gcePersistentDisk可以挂载GCE上的永久磁盘到容器,需要Kubernetes运行在GCE的VM中。
Pod删除时,gcePersistentDisk被删除,但Persistent Disk 的内容任然存在。
gcePersistentDisk能够允许我们提前对数据进行处理,而且这些数据可以在Pod之间“切换”。
使用gcePersistentDisk,必须用gcloud或使用GCE API或UI 创建PD。


awsElasticBlockStore:
Pod删除时,Volume仅被卸载,内容将被保留。
awsElasticBlockStore可以挂载AWS上的EBS盘到容器,需要Kubernetes运行在AWS的EC2上。
awsElasticBlockStore能够允许我们提前对数据进行处理,而且这些数据可以在Pod之间“切换”。


NFS:
Kubernetes中通过简单地配置就可以挂载NFS到Pod中,而NFS中的数据是可以永久保存的,同时NFS支持同时写操作。
Pod被删除时,Volume被卸载,内容被保留。
NFS能够允许我们提前对数据进行处理,而且这些数据可以在Pod之间相互传递。


iSCSI:
iscsi允许将现有的iscsi磁盘挂载到我们的pod中。
删除Pod时会被删除,但Volume只是被卸载,内容被保留。
iscsi能够允许我们提前对数据进行处理,而且这些数据可以在Pod之间“切换”。


flocker:
Flocker是一个开源的容器集群数据卷管理器。它提供各种存储后端支持的数据卷的管理和编排。


GlusterFS:
允许将Glusterfs Volume安装到pod中。
Pod被删除时,Volume只是被卸载,内容被保留。
味着glusterfs能够允许我们提前对数据进行处理,而且这些数据可以在Pod之间“切换”。


RBD:
RBD允许Rados Block Device格式的磁盘挂载到Pod中。
当pod被删除的时候,rbd也仅仅是被卸载,内容保留。
rbd能够允许我们提前对数据进行处理,而且这些数据可以在Pod之间“切换”。


cephFS:
cephfs Volume可以将已经存在的CephFS Volume挂载到pod中。
pod被删除的时,cephfs仅被被卸载,内容保留。
cephfs能够允许我们提前对数据进行处理,而且这些数据可以在Pod之间“切换”。


secret:
secret volume用于将敏感信息(如密码)传递给pod。
将secrets存储在Kubernetes API中,使用的时候以文件的形式挂载到pod中,而不用连接api。
ecret volume由tmpfs(RAM支持的文件系统)支持。


downwardAPI:

通过环境变量的方式告诉容器Pod的信息


内容整理自Kubernetes中文社区:https://www.kubernetes.org.cn/

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Kubernetes 是一种用于自动化容器操作的开源平台,它可以帮助您管理和调度容器化应用程序。在 Kubernetes 中,Volume 是一种对象,用于将持久性存储附加到容器,并在容器中访问它们。本文将介绍 Kubernetes 中的 Volume,包括它的类型、如何创建和使用 Volume,以及常见的 Volume 插件。 ## Volume 类型 Kubernetes 中支持多种 Volume 类型,每种类型都有不同的用途和功能。以下是一些常见的 Volume 类型: ### emptyDir EmptyDir 是 Kubernetes 中最简单的 Volume 类型之一,它是一个空目录,可以在容器之间共享数据。当 Pod 被创建时,Kubernetes 会在节点上创建一个空目录,然后将其挂载到容器中。当 Pod 被删除时,这个空目录也会被删除。EmptyDir 的主要作用是在同一 Pod 中的容器之间共享数据。 ### hostPath HostPath Volume 允许将节点上的文件或目录挂载到 Pod 中。这意味着 Pod 可以直接访问节点上的文件系统,例如 /etc、/usr 等。HostPath Volume 可以用于访问宿主机上的配置文件、数据文件等。 ### configMap 和 secret ConfigMap 和 Secret 是 Kubernetes 中用于存储配置数据和敏感数据的对象。ConfigMap 可以存储 key-value 对,而 Secret 可以存储敏感数据,例如密码、证书等。这两种 Volume 类型都可以在容器中挂载,使容器可以访问其中的数据。 ### persistentVolumeClaim PersistentVolumeClaim(PVC)是 Kubernetes 中用于请求持久性存储的对象。PVC 可以用于请求某种存储类型,例如 NFS、iSCSI 等,并将其挂载到容器中。PVC 可以在多个 Pod 之间共享,并可以在 Pod 被删除后保留数据。 ## 创建和使用 Volume 在 Kubernetes 中创建和使用 Volume 非常简单。以下是一个使用 EmptyDir Volume 的示例: ```yaml apiVersion: v1 kind: Pod metadata: name: my-pod spec: containers: - name: my-container image: nginx volumeMounts: - name: my-volume mountPath: /usr/share/nginx/html volumes: - name: my-volume emptyDir: {} ``` 在上面的示例中,我们定义了一个名为 my-volume 的 EmptyDir Volume,并将其挂载到容器的 /usr/share/nginx/html 目录中。这意味着容器可以在该目录中读取和写入数据。 以下是一个使用 HostPath Volume 的示例: ```yaml apiVersion: v1 kind: Pod metadata: name: my-pod spec: containers: - name: my-container image: nginx volumeMounts: - name: my-volume mountPath: /usr/share/nginx/html volumes: - name: my-volume hostPath: path: /data ``` 在上面的示例中,我们定义了一个名为 my-volume 的 HostPath Volume,并将其挂载到容器的 /usr/share/nginx/html 目录中。这意味着容器可以访问节点上的 /data 目录中的数据。 ## 常见的 Volume 插件 Kubernetes 中有许多 Volume 插件可用于连接各种持久性存储。以下是一些常见的 Volume 插件: ### NFS NFS Volume 插件允许将 NFS 共享挂载到容器中。它可以用于在多个 Pod 之间共享数据。 ### iSCSI iSCSI Volume 插件允许将 iSCSI 存储挂载到容器中。它可以用于连接 SAN 存储等。 ### AWS EBS AWS EBS Volume 插件允许将 Amazon Elastic Block Store(EBS)存储挂载到容器中。它可以用于连接 Amazon EC2 实例上的持久性存储。 ### GCE PD GCE PD Volume 插件允许将 Google Compute Engine 持久性磁盘(PD)挂载到容器中。它可以用于连接 Google Cloud Platform 上的持久性存储。 ## 总结 本文介绍了 Kubernetes 中的 Volume,包括它的类型、如何创建和使用 Volume,以及常见的 Volume 插件。Volume 是 Kubernetes 中非常重要的概念之一,它可以帮助您管理和调度容器化应用程序。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值