持久卷

本文档描述了当前状态 持久卷 在Kubernetes中。熟悉 建议。

介绍

与管理计算实例相比,管理存储是一个明显的问题。 持续量子系统为用户和管理员提供了一个API,该API从如何使用存储中抽象出如何提供存储的详细信息。为此,我们引入了两个新的API资源:PersistentVolume和持久卷声明。

A 持续量 (PV)是集群中的一块存储,已由管理员配置或使用以下方式动态配置 储存类别。它是集群中的资源,就像节点是集群资源一样。 PV是类似于Volumes的卷插件,但是其生命周期独立于使用PV的任何单个捕鱼大亨网络版。此API对象捕获NFS,iSCSI或特定于云提供商的存储系统的存储实现的详细信息。

A 持久卷声明 (PVC)是用户存储的请求。它类似于豆荚。容器消耗节点资源,PVC消耗PV资源。 捕鱼大亨网络版可以请求特定级别的资源(CPU和内存)。声明可以请求特定的大小和访问模式(例如,可以将它们安装为ReadWriteOnce,ReadOnlyMany或ReadWriteMany,请参见 存取模式)。

虽然持续卷索赔允许用户使用抽象存储资源,但是对于不同的问题,用户通常需要具有不同属性(例如性能)的PersistentVolume。集群管理员需要能够提供各种PersistentVolume,这些PersistentVolume不仅在大小和访问模式上有更多差异,而且还不让用户了解如何实现这些卷的细节。对于这些需求,有 存储类 资源。

详细的演练和工作示例.

卷和声明的生命周期

PV是集群中的资源。 PVC是对这些资源的请求,并且还充当对资源的声明检查。 PV和PVC之间的交互遵循以下生命周期:

供应

可以通过两种方式设置PV:静态或动态。

静态的

集群管理员创建许多PV。它们带有实际存储的详细信息,可供群集用户使用。它们存在于Kubernetes API中,可供使用。

动态

如果管理员创建的所有静态PV均与用户的持久卷声明不匹配, 群集可能会尝试动态地专门为PVC配置卷。 此设置基于StorageClasses:PVC必须请求一个 存储类 和 管理员必须已经为动态创建并配置了该类 provisioning to occur. Claims that request the class "" effectively disable 为自己动态配置。

要基于存储类启用动态存储配置,集群管理员 needs to enable the DefaultStorageClass 准入控制器 on the API server. This can be done, for example, by ensuring that DefaultStorageClass is among the comma-delimited, 要么dered list of values for the --enable-admission-plugins flag of API服务器组件。有关API服务器命令行标志的更多信息, check kube-apiserver 文档。

捆绑

用户创建一个持久卷声明,或者在动态预配置的情况下,已经创建了一个持久卷声明,该请求具有特定数量的存储请求并具有某些访问模式。主服务器中的控制回路监视新的PVC,找到匹配的PV(如果可能),并将它们绑定在一起。如果为新PVC动态设置了PV,则循环将始终将该PV绑定到PVC。否则,用户将始终获得至少他们想要的东西,但是音量可能超出了要求。绑定后,无论绑定如何绑定,持久卷声明绑定都是互斥的。 PVC与PV的绑定是一对一的映射,使用ClaimRef是PersistentVolume和持久卷声明之间的双向绑定。

如果不存在匹配的卷,则声明将无限期保持未绑定。随着匹配量的增加,声明将受到约束。例如,配备有许多50Gi PV的群集将与请求100Gi的PVC不匹配。将100Gi PV添加到群集时,可以绑定PVC。

使用

窗格使用声明作为卷。群集检查索赔以找到绑定的卷并将该卷装入捕鱼大亨网络版。对于支持多种访问模式的卷,用户可以在将其声明用作捕鱼大亨网络版中的卷时指定所需的模式。

Once a user has a claim 和 that claim is bound, the bound PV belongs to the user for as long as they need it. Users schedule 豆荚 和 access their claimed PVs by including a persistentVolumeClaim section in a 捕鱼大亨网络版's block. 看到 索赔量 有关此的更多详细信息。

使用中的存储对象保护

“使用中的存储对象保护”功能的目的是确保不会从系统中删除绑定到PVC的捕鱼大亨网络版和PersistentVolume(PV)主动使用的持续卷索赔(PVC),因为这可能会导致数据丢失。

注意: 当存在使用PVC的捕鱼大亨网络版对象时,捕鱼大亨网络版会积极使用PVC。

如果用户删除了捕鱼大亨网络版正在使用的PVC,则不会立即删除该PVC。 PVC的清除被推迟,直到任何捕鱼大亨网络版不再主动使用PVC。另外,如果管理员删除绑定到PVC的PV,则不会立即删除该PV。 PV的去除被推迟,直到PV不再与PVC结合。

You can see that a PVC is protected when the PVC's status is Terminating 和 the Finalizers list includes kubernetes.io/pvc-protection:

Kubectl describe pvc hostpath
Name:          hostpath
Namespace:     default
StorageClass:  example-hostpath
Status:        Terminating
Volume:
Labels:        <none>
Annotations:   volume.beta.kubernetes.io/storage-class=example-hostpath
               volume.beta.kubernetes.io/storage-provisioner=example.com/hostpath
Finalizers:    [kubernetes.io/pvc-protection]
...

You can see that a PV is protected when the PV's status is Terminating 和 the Finalizers list includes kubernetes.io/pv-protection too:

Kubectl describe pv task-pv-volume
Name:            task-pv-volume
Labels:          type=本地注解:     <none>
Finalizers:      [kubernetes.io/pv-protection]存储类:    standard
Status:          Terminating
Claim:
Reclaim Policy:  删除
Access Modes:    RWO
Capacity:        1Gi
Message:
Source:
    Type:          主机路径 (bare host directory volume)
    Path:          /tmp/data
    主机路径Type:
Events:            <none>

回收中

当用户完成其卷处理后,他们可以从允许回收资源的API中删除PVC对象。 持续量的回收策略告诉群集在释放其声明后如何处理该卷。当前,可以保留,回收或删除卷。

保留

The 保留 reclaim policy allows for manual reclamation of the 资源。 When the 持久卷声明 is deleted, the 持续量 still exists 和 the volume is considered "released". But it is not yet available for another claim because the previous claimant's data remains on the volume. An administrator can manually reclaim the volume with the following steps.

  1. 删除PersistentVolume。删除PV之后,外部基础架构中的关联存储资产(例如AWS EBS,GCE PD,Azure Disk或Cinder卷)仍然存在。
  2. 相应地手动清理关联存储资产上的数据。
  3. 手动删除关联的存储资产,或者如果要重复使用相同的存储资产,请使用存储资产定义创建一个新的PersistentVolume。

删除

For volume plugins that support the 删除 reclaim policy, deletion removes both the 持续量 object from Kubernetes, as well as the associated storage asset 在里面 external infrastructure, such as an AWS EBS, GCE PD, Azure磁盘, 要么 煤渣 volume. 卷数 that were dynamically provisioned inherit the 他们的StorageClass的回收政策, which defaults to 删除. The administrator should configure the 存储类 according to users' expectations; otherwise, the PV must be edited 要么 patched after it is created. 看到 更改持久卷的回收策略.

回收

警告: The 回收 reclaim policy is 不推荐使用. Instead, the recommended approach is to use dynamic provisioning.

If supported by the underlying volume plugin, the 回收 reclaim policy performs a basic scrub (rm -rf /thevolume/*) on the volume 和 makes it available again for a new claim.

但是,管理员可以使用以下命令配置自定义回收站捕鱼大亨网络版模板 Kubernetes控制器管理器命令行参数,如 参考. The custom recycler 捕鱼大亨网络版 template must contain a specification, as 如以下示例所示:

apiVersion: v1
kind: 捕鱼大亨网络版
metadata:
  name: pv-recycler
  namespace: default
spec:
  restartPolicy: Never
  :
  - name: vol
    hostPath:
      path: /any/path/it/will/be/replaced
  containers:
  - name: pv-recycler
    image: "k8s.gcr.io/busybox"
    command: ["/bin/sh", "-c", "test -e /scrub && rm -rf /scrub/..?* /scrub/.[!.]* /scrub/*  && test -z \"$(ls -A /scrub)\" || exit 1"]
    volumeMounts:
    - name: vol
      mountPath: /scrub

However, the particular path specified 在里面 custom recycler 捕鱼大亨网络版 template 在里面 part is replaced with the particular path of the volume that is being recycled.

保留持久卷

控制平面可以 将持续卷索赔绑定到匹配的PersistentVolumes 在里面 簇。但是,如果您希望PVC绑定到特定的PV,则需要预先绑定它们。

通过在持久卷声明中指定PersistentVolume,可以声明该特定PV与PVC之间的绑定。 If the 持续量 exists 和 has not reserved 持续卷索赔 through its claimRef field, then the 持续量 和 持久卷声明 will be bound.

绑定的发生与某些卷匹配标准无关,包括节点亲和力。 控制飞机仍在检查 存储类,访问模式和请求的存储大小有效。

apiVersion: v1
kind: 持久卷声明
metadata:
  name: foo-pvc
  namespace: foo
spec:
  storageClassName: "" # Empty string must be explicitly set otherwise default 存储类 will be set
  volumeName: foo-pv
  ...

This method does not guarantee any binding privileges to the 持续量. If other 持续卷索赔 could use the PV that you specify, you first need to reserve that storage volume. Specify the relevant 持久卷声明 在里面 claimRef field of the PV so that other PVCs can not bind to it.

apiVersion: v1
kind: 持续量
metadata:
  name: foo-pv
spec:
  storageClassName: ""
  claimRef:
    name: foo-pvc
    namespace: foo
  ...

This is useful if you want to consume 持续量s that have their claimPolicy set to 保留, including cases where you are reusing an existing PV.

扩展永久卷声明

功能状态: Kubernetes v1.11 [beta]

现在默认启用对扩展持续卷索赔(PVC)的支持。你可以扩大 以下类型的卷:

  • gcePersistentDisk
  • awsElasticBlockStore
  • 煤渣
  • 糊精
  • rbd
  • Azure文件
  • Azure磁盘
  • 波特沃克斯
  • FlexVolumes
  • CSI

You can only expand a PVC if its 存储类's allowVolumeExpansion field is set to true.

apiVersion: storage.k8s.io/v1
kind: 存储类
metadata:
  name: gluster-vol-default
provisioner: kubernetes.io/glusterfs
parameters:
  resturl: "http://192.168.10.100:8080"
  restuser: ""
  secretNamespace: ""
  secretName: ""
allowVolumeExpansion: true

要请求更大的PVC体积,请编辑PVC对象并指定更大的体积 尺寸。这将触发支持基础PersistentVolume的卷的扩展。一种 永远不会创建新的PersistentVolume来满足要求。相反,将调整现有卷的大小。

CSI卷扩展

功能状态: Kubernetes v1.16 [beta]

默认情况下启用对扩展CSI卷的支持,但它也需要特定的CSI驱动程序来支持卷扩展。有关更多信息,请参阅特定CSI驱动程序的文档。

调整包含文件系统的卷的大小

如果文件系统是XFS,Ext3或Ext4,则只能调整包含文件系统的卷的大小。

当卷包含文件系统时,仅在使用新捕鱼大亨网络版时才调整文件系统的大小 the 持久卷声明 in ReadWrite mode. File system expansion is either done when a 捕鱼大亨网络版 is starting up 或捕鱼大亨网络版正在运行且基础文件系统支持联机扩展时。

FlexVolumes allow resize if the driver is set with the RequiresFSResize capability to true. 可以在捕鱼大亨网络版重新启动时调整FlexVolume的大小。

调整使用中的持久卷声明的大小

功能状态: Kubernetes v1.15 [beta]
注意: Expanding in-use PVCs is available as beta since Kubernetes 1.15, 和 as alpha since 1.11. The ExpandInUsePersistentVolumes feature must be enabled, which is the case automatically for many clusters for beta features. Refer to the 功能门 文档以获取更多信息。

在这种情况下,您不需要删除并重新创建使用现有PVC的捕鱼大亨网络版或部署。 文件系统扩展后,所有使用中的PVC都将自动供其捕鱼大亨网络版使用。 此功能对捕鱼大亨网络版或部署中未使用的PVC无效。您必须创建一个捕鱼大亨网络版 在扩展完成之前使用PVC。

与其他卷类型类似-当由捕鱼大亨网络版使用时,FlexVolume卷也可以扩展。

注意: 仅当基础驱动程序支持调整大小时,才可以调整FlexVolume的大小。
注意: 扩展EBS量是一项耗时的操作。此外,每卷还有每6小时修改一次的每卷配额。

扩展卷时从故障中恢复

如果扩展基础存储失败,则集群管理员可以手动恢复持久卷声明(PVC)状态并取消调整大小请求。否则,调整大小请求将由控制器连续重试,而无需管理员干预。

  1. Mark the 持续量(PV) that is bound to the 持久卷声明(PVC) with 保留 reclaim policy.
  2. 删除 the PVC. Since PV has 保留 reclaim policy - we will not lose any data when we recreate the PVC.
  3. 删除 the claimRef entry from PV specs, so as new PVC can bind to it. This should make the PV Available.
  4. Re-create the PVC with smaller size than PV 和 set volumeName field of the PVC to the name of the PV. This should bind new PVC to existing PV.
  5. 不要忘记恢复PV的回收策略。

持久卷的类型

持续量类型作为插件实现。 Kubernetes当前支持以下插件:

  • awsElasticBlockStore -AWS Elastic 块 Store(EBS)
  • azureDisk -Azure磁盘
  • azureFile -Azure文件
  • cephfs -CephFS音量
  • cinder -Cinder(OpenStack块存储) (不推荐使用)
  • csi -容器存储接口(CSI)
  • fc -光纤通道(FC)存储
  • flexVolume -FlexVolume
  • flocker -储物柜
  • gcePersistentDisk -GCE永久磁碟
  • 糊精 -Glusterfs音量
  • hostPath -HostPath卷 (仅用于单节点测试;在多节点群集中将无法使用; consider using 本地 volume instead)
  • iscsi -iSCSI(IP上的SCSI)存储
  • 本地 -本地存储设备 mounted on nodes.
  • nfs -网络文件系统(NFS)存储
  • photonPersistentDisk -光子控制器永久磁盘。 (由于删除了相应的卷,此卷类型不再起作用 cloud provider.)
  • portworxVolume -Portworx量
  • quobyte -千字节卷
  • rbd -Rados 块 Device(RBD)音量
  • scaleIO -ScaleIO体积 (不推荐使用)
  • storageos -StorageOS卷
  • vsphereVolume -vSphere VMDK卷

持久卷

每个PV包含规格和状态,即规格和状态。 PersistentVolume对象的名称必须是有效的 DNS子域名.

apiVersion: v1
kind: 持续量
metadata:
  name: pv0003
spec:
  capacity:
    storage: 5Gi
  volumeMode: 文件系统
  accessModes:
    - ReadWriteOnce
  persistentVolumeReclaimPolicy: 回收
  storageClassName: slow
  mountOptions:
    - hard
    - nfsvers=4.1
  nfs:
    path: /tmp
    server: 172.17.0.2
注意: 群集中使用PersistentVolume可能需要与卷类型有关的帮助程序。在此示例中,PersistentVolume的类型为NFS,并且需要辅助程序/sbin/mount.nfs来支持NFS文件系统的安装。

容量

Generally, a PV will have a specific storage capacity. This is set using the PV's capacity attribute. 见 Kubernetes 资源模型 to understand the units expected by capacity.

当前,存储大小是可以设置或请求的唯一资源。将来的属性可能包括IOPS,吞吐量等。

音量模式

功能状态: Kubernetes v1.18 [stable]

Kubernetes supports two volumeModes of 持续量s: 文件系统.

volumeMode 是可选的API参数。 文件系统 is the default mode used when volumeMode parameter is omitted.

A volume with volumeMode: 文件系统 is 已安装 放入捕鱼大亨网络版s进入目录。如果音量 由块设备支持并且设备为空,Kuberneretes创建一个文件系统 首次安装之前,请先将其安装在设备上。

You can set the value of volumeMode to to use a volume as a raw block device. 这样的卷作为一个块设备呈现在捕鱼大亨网络版中,上面没有任何文件系统。 此模式有助于为捕鱼大亨网络版提供最快的访问卷的方式,而无需 捕鱼大亨网络版和卷之间的任何文件系统层。另一方面,应用程序 在捕鱼大亨网络版中运行的设备必须知道如何处理原始块设备。 See 原始块体积支持 for an example on how to use a volume with volumeMode: 块 in a 捕鱼大亨网络版.

存取模式

可以通过资源提供者支持的任何方式将PersistentVolume安装在主机上。如下表所示,提供商将具有不同的功能,并且每个PV的访问模式都将设置为该特定卷支持的特定模式。例如,NFS可以支持多个读/写客户端,但是特定的NFS PV可能以只读方式在服务器上导出。每个PV都有自己的一组访问模式,用于描述该特定PV的功能。

访问方式为:

  • ReadWriteOnce-可以通过单个节点以读写方式安装该卷
  • ReadOnlyMany-该卷可以被许多节点只读安装
  • ReadWriteMany-该卷可以被许多节点读写安装

在CLI中,访问模式缩写为:

  • RWO-ReadWriteOnce
  • ROX-ReadOnlyMany
  • RWX-ReadWriteMany

重要! 即使一次卷支持多个卷,也只能一次使用一种访问模式挂载该卷。例如,GCEPersistentDisk可以由单个节点安装为ReadWriteOnce,也可以由多个节点安装为ReadOnlyMany,但不能同时安装。

音量插件ReadWriteOnceReadOnlyManyReadWriteMany
AWSElasticBlockStore--
Azure文件
Azure磁盘--
头文件
煤渣--
CSI取决于司机取决于司机取决于司机
足球俱乐部-
FlexVolume取决于司机
植绒--
GCEP永久磁盘-
Glusterfs
主机路径--
iSCSI-
兆字节
NFS
RBD-
VsphereVolume--(在并置捕鱼大亨网络版时有效)
波特沃克斯卷-
ScaleIO-
存储操作系统--

PV可以具有一个类别,该类别可以通过设置 storageClassName 属性的名称 存储类. 特定类别的PV只能绑定到请求的PVC that class. A PV with no storageClassName has no class 和 can only be bound 不需要特殊类别的PVC。

In the past, the annotation volume.beta.kubernetes.io/storage-class was used instead of the storageClassName attribute. This annotation is still working; however, 在以后的Kubernetes版本中,它将完全弃用。

回收政策

当前的回收政策是:

  • 保留-手动填海
  • 回收 -- basic scrub (rm -rf /thevolume/*)
  • 删除-关联的存储资产(例如AWS EBS,GCE PD,Azure Disk或OpenStack 煤渣卷)被删除

当前,仅NFS和HostPath支持回收。 AWS EBS,GCE PD,Azure Disk和Cinder卷支持删除。

挂载选项

当在节点上安装持久卷时,Kubernetes管理员可以指定其他安装选项。

注意: 并非所有的Persistent Volume类型都支持安装选项。

以下卷类型支持安装选项:

  • AWSElasticBlockStore
  • Azure磁盘
  • Azure文件
  • 头文件
  • 煤渣(OpenStack块存储)
  • GCEP永久磁盘
  • Glusterfs
  • NFS
  • 千字节卷
  • RBD(Ceph块设备)
  • 存储操作系统
  • VsphereVolume
  • iSCSI

挂载选项未经验证,因此如果其中一个无效,挂载将仅失败。

In the past, the annotation volume.beta.kubernetes.io/mount-options was used instead of the mountOptions attribute. This annotation is still working; however, 在以后的Kubernetes版本中,它将完全弃用。

节点亲和力

注意: 对于大多数卷类型,您无需设置此字段。它会自动填充 AWS EBS, GCE PDAzure磁盘 音量块类型。您需要为此明确设置 本地 卷。

PV可以指定 节点亲和力 定义限制可以访问此卷的节点的约束。使用PV的捕鱼大亨网络版仅会安排到由节点亲缘关系选择的节点上。

卷将处于以下阶段之一:

  • 可用-尚未绑定到声明的免费资源
  • 绑定-卷已绑定到声明
  • 已发布-声明已被删除,但是群集尚未回收该资源
  • 失败-卷无法自动回收

CLI将显示绑定到PV的PVC的名称。

持续卷索赔

每个PVC均包含规格和状态,即索赔的规格和状态。 持久卷声明对象的名称必须是有效的 DNS子域名.

apiVersion: v1
kind: 持久卷声明
metadata:
  name: myclaim
spec:
  accessModes:
    - ReadWriteOnce
  volumeMode: 文件系统
  resources:
    requests:
      storage: 8Gi
  storageClassName: slow
  selector:
    matchLabels:
      release: "stable"
    matchExpressions:
      - {key: environment, operator: In, values: [dev]}

存取模式

当请求使用特定访问模式进行存储时,声明使用与卷相同的约定。

音量模式

声明使用与卷相同的约定来表示将卷作为文件系统或块设备使用。

资源资源

声明与捕鱼大亨网络版s一样,可以请求特定数量的资源。在这种情况下,该请求用于存储。相同 资源模型 同时适用于数量和理赔。

选择器

声明可以指定一个 标签选择器 进一步过滤卷集。仅其标签与选择器匹配的卷可以绑定到声明。选择器可以包含两个字段:

  • matchLabels -该卷必须带有此值的标签
  • matchExpressions -通过指定键,值列表以及与键和值相关的运算符提出的要求列表。有效的运算符包括In,NotIn,Exists和DidNotExist。

All of the requirements, from both matchLabelsmatchExpressions, are ANDed together – they must all be satisfied in 要么der to match.

声明可以通过指定名称来请求特定类别 存储类 using the attribute storageClassName. Only PVs of the requested class, ones with the same storageClassName as the PVC, can be bound to the PVC.

PVCs don't necessarily have to request a class. A PVC with its storageClassName set equal to "" is always interpreted to be requesting a PV with no class, so it 只能绑定到没有类的PV(没有注释或一组等于 "")。 A PVC with no storageClassName is not quite the same 和 is treated differently 由群集决定,具体取决于 DefaultStorageClass 入场插件已开启。

  • 如果启用了进入插件,则管理员可以指定一个 default 存储类. All PVCs that have no storageClassName can be bound only to 该默认值的PV。指定默认的StorageClass是通过设置 annotation storageclass.kubernetes.io/is-default-class equal to true in 一个StorageClass对象。如果管理员未指定默认值,则 集群响应PVC创建,就像准入插件已关闭一样。如果 指定了多个默认值,准入插件禁止创建 all PVCs.
  • 如果准入插件已关闭,则没有默认概念 StorageClass. All PVCs that have no storageClassName can be bound only to PVs that have no class. In this case, the PVCs that have no storageClassName are treated the same way as PVCs that have their storageClassName set to "".

根据安装方法,可能会部署默认的StorageClass 在安装过程中通过插件管理器将其连接到Kubernetes集群。

When a PVC specifies a selector in addition to requesting a 存储类, 要求进行“与”运算:只有所请求类别的PV 请求的标签可能已绑定到PVC。

注意: Currently, a PVC with a non-empty selector can't have a PV dynamically provisioned for it.

In the past, the annotation volume.beta.kubernetes.io/storage-class was used instead of storageClassName attribute. This annotation is still working; however, 将来的Kubernetes版本将不再支持它。

索赔量

捕鱼大亨网络版通过将声明用作卷来访问存储。声明必须与使用声明的捕鱼大亨网络版存在于相同的命名空间中。集群在捕鱼大亨网络版的命名空间中找到声明,并使用它来获取支持声明的PersistentVolume。然后将卷安装到主机上并安装到捕鱼大亨网络版中。

apiVersion: v1
kind: 捕鱼大亨网络版
metadata:
  name: mypod
spec:
  containers:
    - name: myfrontend
      image: nginx
      volumeMounts:
      - mountPath: "/var/www/html"
        name: mypd
  :
    - name: mypd
      persistentVolumeClaim:
        claimName: myclaim

关于命名空间的说明

持续量s binds are exclusive, 和 since 持续卷索赔 are namespaced objects, mounting claims with "Many" modes (ROX, RWX) is only possible within one namespace.

原始块体积支持

功能状态: Kubernetes v1.18 [stable]

以下卷插件支持原始块卷,包括动态预配置,其中 applicable:

  • AWSElasticBlockStore
  • Azure磁盘
  • CSI
  • 足球俱乐部(光纤通道)
  • GCEP永久磁盘
  • iSCSI
  • 本地量
  • OpenStack煤渣
  • RBD(Ceph块设备)
  • VsphereVolume

使用原始块卷的PersistentVolume

apiVersion: v1
kind: 持续量
metadata:
  name: block-pv
spec:
  capacity:
    storage: 10Gi
  accessModes:
    - ReadWriteOnce
  volumeMode: 
  persistentVolumeReclaimPolicy: 保留
  fc:
    targetWWNs: ["50060e801049cfd1"]
    lun: 0
    readOnly: false

持久卷声明请求原始块卷

apiVersion: v1
kind: 持久卷声明
metadata:
  name: block-pvc
spec:
  accessModes:
    - ReadWriteOnce
  volumeMode: 
  resources:
    requests:
      storage: 10Gi

捕鱼大亨网络版规范在容器中添加Raw 块 Device路径

apiVersion: v1
kind: 捕鱼大亨网络版
metadata:
  name: pod-with-block-volume
spec:
  containers:
    - name: fc-container
      image: fedora:26
      command: ["/bin/sh", "-c"]
      args: [ "tail -f /dev/null" ]
      volumeDevices:
        - name: data
          devicePath: /dev/xvda
  :
    - name: data
      persistentVolumeClaim:
        claimName: block-pvc
注意: 为捕鱼大亨网络版添加原始块设备时,请在容器中指定设备路径,而不是安装路径。

绑定块体积

If a user requests a raw block volume by indicating this using the volumeMode field 在里面 持久卷声明 spec, the binding rules differ slightly from previous releases that didn't consider this mode as part of the spec. 列出了用户和管理员可能指定用于请求原始块设备的可能组合的表。该表指示是否绑定卷或不指定组合: 静态预配置卷的卷绑定矩阵:

光伏体积模式PVC体积模式结果
未指定未指定绑定
未指定无捆绑
未指定文件系统绑定
未指定无捆绑
绑定
文件系统无捆绑
文件系统文件系统绑定
文件系统无捆绑
文件系统未指定绑定
注意: alpha版本仅支持静态配置的卷。管理员在使用裸块设备时应注意考虑这些值。

卷快照和从快照支持还原卷

功能状态: Kubernetes v1.20 [stable]

卷快照仅支持树外CSI卷插件。有关详细信息,请参见 卷快照. 树内卷插件已弃用。您可以在中阅读有关已弃用的卷插件的信息。 批量插件常见问题解答.

从卷快照创建持久卷声明

apiVersion: v1
kind: 持久卷声明
metadata:
  name: restore-pvc
spec:
  storageClassName: csi-hostpath-sc
  dataSource:
    name: new-snapshot-test
    kind: VolumeSnapshot
    apiGroup: snapshot.storage.k8s.io
  accessModes:
    - ReadWriteOnce
  resources:
    requests:
      storage: 10Gi

卷克隆

卷克隆 仅适用于CSI卷插件。

从现有的PVC创建持久卷声明

apiVersion: v1
kind: 持久卷声明
metadata:
  name: cloned-pvc
spec:
  storageClassName: my-csi-plugin
  dataSource:
    name: existing-src-pvc-name
    kind: 持久卷声明
  accessModes:
    - ReadWriteOnce
  resources:
    requests:
      storage: 10Gi

编写便携式配置

如果您要编写可在多种集群上运行的配置模板或示例 并且需要持久存储,建议您使用以下模式:

  • 在您的配置包中包含持久卷声明对象(旁边) 部署,ConfigMap等)。

  • 由于用户实例化,因此请勿在配置中包含PersistentVolume对象 该配置可能没有创建PersistentVolumes的权限。

  • 在实例化时为用户提供提供存储类名称的选项 the template.

    • 如果用户提供了存储类名称,则将该值放入 persistentVolumeClaim.storageClassName 领域。 这将导致PVC匹配正确的存储空间 如果群集具有由管理员启用的StorageClasses,则为class。
    • 如果用户未提供存储类别名称,请保留 persistentVolumeClaim.storageClassName 字段为零。这将导致 PV将自动为用户提供默认的StorageClass 在集群中。许多集群环境都安装了默认的StorageClass, 或管理员可以创建自己的默认StorageClass。
  • 在您的工具中,注意一段时间后没有粘结的PVC 并将其显示给用户,因为这可能表明该群集没有 动态存储支持(在这种情况下,用户应创建匹配的PV) 或群集没有存储系统(在这种情况下,用户无法部署 需要PVC的配置)。

    下一步是什么

参考

上次修改时间:太平洋标准时间2020年12月22日下午4:06: 修复指向批量插件常见问题解答(a2fa57e88)的链接