Local Persistent Volumes & projected volume

Local Persistent Volumes

本地卷静态配置程序通过检测并为主机上的每个本地磁盘创建 PV,并在释放磁盘时清理磁盘,来管理预分配磁盘的 PersistentVolume 生命周期。它不支持动态配置。

sig-storage-local-static-provisioner

A local persistent volume represents a local disk directly-attached to a single Kubernetes Node.

本地持久卷表示直接连接到单个 Kubernetes 节点的本地磁盘。

Kubernetes provides a powerful volume plugin system that enables Kubernetes workloads to use a wide variety of block and file storage to persist data. Most of these plugins enable remote storage – these remote storage systems persist data independent of the Kubernetes node where the data originated. Remote storage usually can not offer the consistent high performance guarantees of local directly-attached storage. With the Local Persistent Volume plugin, Kubernetes workloads can now consume high performance local storage using the same volume APIs that app developers have become accustomed to.

Kubernetes 提供了强大的卷插件系统,使 Kubernetes 工作负载能够使用各种块和文件存储来保存数据。 这些插件中的大多数都支持远程存储——这些远程存储系统独立于数据来源的 Kubernetes 节点来保存数据。 远程存储通常无法提供本地直连存储一致的高性能保证。 借助本地持久卷插件,Kubernetes 工作负载现在可以使用应用程序开发人员已经习惯的相同卷 API 来使用高性能本地存储。

“Local Persistent Volumes” vs “HostPath”

emptyDir,hostPath和local volume是在Kubernetes中用于存储数据的不同选项。

  1. emptyDir:emptyDir是一种临时性的存储卷类型,它在Pod运行期间存在,并且只能被该Pod中的容器访问。emptyDir卷由Kubernetes自动创建,并根据需要分配给Pod中的容器。当Pod被删除或重新调度时,emptyDir中的数据也将被删除。emptyDir通常用于容器之间共享数据或者为容器提供临时性的工作空间。

  2. hostPath:hostPath卷允许将主机上的文件系统路径挂载到Pod中的容器中。这意味着Pod中的所有容器都可以访问该路径中的文件。使用hostPath卷时需要谨慎,因为它会将主机上的文件暴露给Pod中的所有容器,可能导致安全风险或冲突。hostPath通常用于需要直接访问主机文件系统的情况,例如日志收集或与主机交互的容器。

  3. local volume:local volume是Kubernetes 1.14版本引入的新功能,用于将本地存储设备挂载到Pod中的容器中。与hostPath不同,local volume支持Pod的重新调度,并确保在重新调度后能够将数据正确地挂载回来。local volume适用于对数据持久性要求较高的应用,例如数据库。

综上所述,emptyDir适用于临时性的共享存储,hostPath允许容器直接访问主机文件系统,而local volume提供了对本地存储设备的持久性挂载。选择合适的存储选项取决于应用程序的需求和特定的使用情况。

emptyDir,hostPath,local volume

本地持久卷会绑定节点,对于 HostPath 卷,引用 HostPath 卷的 Pod 可能会被调度程序移动到不同的节点,从而导致数据丢失。

在这里插入图片描述

概述

本地持久卷允许用户通过标准 PVC 接口以简单、便携的方式访问本地存储。PV 包含系统用于将 Pod 调度到正确节点的节点亲和性信息。

此处提供了外部静态配置程序,以帮助在配置本地卷后简化本地存储管理。请注意,本地存储配置器与大多数配置器不同,并且不支持动态配置。相反,它要求管理员在每个节点上预先配置本地卷,并且如果卷应该是

  1. 文件系统volumeMode(默认)PV - 将它们安装在发现目录下。
  2. 块volumeMode PV - 在发现目录下创建指向节点上块设备的符号链接。

配置程序将通过为每个卷创建和清理 PersistentVolume 来管理发现目录下的卷。

将 Pod 调度到与其本地 PV 相同的节点时需要注意的是,当托管 PV 的节点被删除时,虽然数据可能丢失,但 PV 对象仍然存在,因此系统会无限期地尝试将 Pod 调度到已删除的节点。请参阅我们的本地卷节点清理文档,其中包含有关如何使工作负载从节点删除中自动恢复的信息。

部署

在 Kubernetes 中,Local Persistent Volume (local-pv) 是一种存储插件,它在节点上使用本地磁盘提供持久化存储。local-pv 可以使用多个目录作为存储路径。

要实现使用多个目录的 StorageClass,您需要使用 VolumeBindingMode(动态或静态)来指定如何绑定 PersistentVolume(PV)和 PersistentVolumeClaim(PVC)。以下是一个示例 StorageClass 的 YAML 文件:

kind: StorageClass
apiVersion: storage.k8s.io/v1
metadata:
name: local-pv-sc
provisioner: kubernetes.io/no-provisioner
volumeBindingMode: WaitForFirstConsumer
allowVolumeExpansion: true
parameters:
paths: /mnt/disk1,/mnt/disk2,/mnt/disk3

在这个示例中,我们使用了 volumeBindingMode: WaitForFirstConsumer,这意味着 PVC 只有在第一个 Pod 使用它时才会绑定到 PV。这样可以确保 Pod 能够访问正确的 PV。

parameters.paths 参数指定了要使用的目录列表。在这个示例中,我们使用了三个目录 /mnt/disk1/mnt/disk2/mnt/disk3

使用这个 StorageClass 创建 PVC 时,Kubernetes 将会在节点上查找可用的目录并创建一个本地 PV,然后将其绑定到 PVC。在 Pod 中使用这个 PVC 时,它将会使用绑定的 PV 上的目录。

需要注意的是,使用 local-pv 时需要确保在节点上的所有目录都有足够的可用空间,并且在创建 PV 时需要手动指定容量和访问模式。

这是一个 Kubernetes 中的 StorageClass 对象的 YAML 配置文件。该对象名为 csi-localpv,使用的存储插件为 qfusion/localpv,并且支持在需要时扩展卷容量。

接下来是该对象的其他属性:

  • metadata:元数据属性,包括创建时间、标签、注释等。
  • provisioner:指定用于为此 StorageClass 创建 PersistentVolume 的存储插件的名称。
  • reclaimPolicy:指定 PersistentVolume 删除后的行为。该 StorageClass 的取值为 Delete,表示删除 PersistentVolume。
  • volumeBindingMode:指定如何绑定 PersistentVolume 和 PersistentVolumeClaim。该 StorageClass 的取值为 WaitForFirstConsumer,表示只有在第一个使用该 PersistentVolumeClaim 的 Pod 出现时才会绑定 PersistentVolume 和 PersistentVolumeClaim。
  • allowVolumeExpansion:指定是否允许扩展 PersistentVolumeClaim 的容量。该 StorageClass 的取值为 true,表示允许扩展。
  • metadata.annotations:注释属性,包括自定义的一些键值对,用于描述该 StorageClass。例如,sc.woqutech.com/name 表示该 StorageClass 的名称,sc.woqutech.com/vendor 表示存储插件的供应商等。
  • managedFields:管理字段属性,表示管理该对象的控制器。可以看到,该对象被 Go-http-client 和 webserver 两个控制器管理。
  • selfLink:指向该对象的 URL。

总的来说,这个 YAML 文件描述了一个名为 csi-localpv 的 StorageClass 对象,使用的存储插件是 qfusion/localpv,支持扩展容量,并且具有一些自定义的注释属性。

projected volume

https://blog.csdn.net/mx_steve/article/details/96740903

1.Secret;
2.ConfigMap;
3.Downward API;
4.ServiceAccountToken;

k8s项目只有三种projected volume对象,ServiceAccountToken知识一种特殊的Secret。

在这里插入图片描述

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值