第 6 章 PersistentVolumeClaim [v1]


描述
PersistentVolumeClaim 是用户对持久性卷的请求并声明
类型
对象

6.1. 规格

属性类型描述

apiVersion

字符串

APIVersion 定义对象的这个表示法的版本化的 schema。服务器应该将识别的模式转换为最新的内部值,并可拒绝未识别的值。更多信息: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources

kind

字符串

kind 是一个字符串值,代表此对象所代表的 REST 资源。服务器可以从客户端向其提交请求的端点推断。无法更新。采用驼峰拼写法 (CamelCase)。更多信息: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds

metadata

ObjectMeta

标准对象元数据。更多信息: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata

spec

对象

PersistentVolumeClaimSpec 描述了存储设备的通用属性,并允许 Source 用于特定于供应商的属性

status

对象

PersistentVolumeClaimStatus 是持久性卷声明的当前状态。

6.1.1. .spec

描述
PersistentVolumeClaimSpec 描述了存储设备的通用属性,并允许 Source 用于特定于供应商的属性
类型
object
属性类型描述

accessModes

数组(字符串)

accessModes 包含卷应具有所需的访问模式。更多信息: https://kubernetes.io/docs/concepts/storage/persistent-volumes#access-modes-1

dataSource

对象

TypedLocalObjectReference 包含足够信息,以便您在同一命名空间中找到类型引用的对象。

dataSourceRef

object

如果需要非空卷,则 dataSourceRef 指定要使用数据填充卷的对象。这可以是来自非空 API 组(非核心对象)或 PersistentVolumeClaim 对象的任何对象。当指定对象的类型与某些安装的卷填充或动态置备程序匹配时,卷绑定才会成功。此字段将替换 dataSource 字段的功能,如果两个字段都不是空的,则它们必须具有相同的值。为了向后兼容,当命名空间没有在 dataSourceRef 中指定时,如果其中一个为空,则两个字段(dataSource 和 dataSourceRef)都会自动设置为相同的值,另一个是非空的。当在 dataSourceRef 中指定 namespace 时,dataSource 不设置为相同的值,必须为空。dataSource 和 dataSourceRef 之间有三个重要区别:* While dataSource 只允许两种特定类型的对象,dataSourceRef 允许任何非核心对象,以及 PersistentVolumeClaim 对象。* 虽然 dataSource 忽略了禁止的值(丢弃它们),dataSourceRef 保留所有值,并在指定禁止的值时生成错误。* 虽然 dataSource 只允许本地对象,dataSourceRef 允许任何命名空间中的对象。(beta)使用此字段需要启用 AnyVolumeDataSource 功能门。(alpha)使用 dataSourceRef 的 namespace 字段需要启用 CrossNamespaceVolumeDataSource 功能门。

resources

object

VolumeResourceRequirements 描述了卷的存储资源要求。

selector

LabelSelector

selector 是要考虑绑定的卷的标签查询。

storageClassName

string

storageClassName 是声明所需的 StorageClass 的名称。更多信息: https://kubernetes.io/docs/concepts/storage/persistent-volumes#class-1

volumeAttributesClassName

string

volumeAttributesClassName 可用于设置此声明使用的 VolumeAttributesClass。如果指定,CSI 驱动程序将使用对应的 VolumeAttributesClass 中定义的属性创建或更新卷。这有一个不同于 storageClassName 的目的,可在创建声明后更改。空字符串表示,不会将 VolumeAttributesClass 应用到声明,但不允许在设置后将此字段重置为空字符串。如果未指定,并且 PersistentVolumeClaim 为 unbound,则 persistentvolume 控制器将设置默认的 VolumeAttributesClass (如果存在)。如果 volumeAttributesClass 引用的资源不存在,则这个 PersistentVolumeClaim 将被设置为 Pending 状态,如 modifyVolumeStatus 字段反映,直到资源存在为止。更多信息: https://kubernetes.io/docs/concepts/storage/persistent-volumes#volumeattributesclass (Alpha)使用此字段需要启用 VolumeAttributesClass 功能门。

volumeMode

字符串

volumeMode 定义声明需要哪些卷类型。当未包含在 claim spec 中时,文件系统的值会被表示。

可能枚举值: - "Block" 表示卷不会格式化为文件系统,并保留原始块设备。- "Filesystem" 表示卷将被格式化为文件系统或使用文件系统格式化。

volumeName

string

volumeName 是对此声明支持的 PersistentVolume 的绑定引用。

6.1.2. .spec.dataSource

描述
TypedLocalObjectReference 包含足够信息,以便您在同一命名空间中找到类型引用的对象。
类型
object
必填
  • kind
  • name
属性类型描述

apiGroup

字符串

APIGroup 是所引用资源的组。如果没有指定 APIGroup,则指定的 Kind 必须位于 core API 组中。对于任何其他第三方类型,需要 APIGroup。

kind

字符串

kind 是被引用的资源类型

name

字符串

name 是被引用的资源的名称

6.1.3. .spec.dataSourceRef

描述
如果需要非空卷,则 dataSourceRef 指定要使用数据填充卷的对象。这可以是来自非空 API 组(非核心对象)或 PersistentVolumeClaim 对象的任何对象。当指定对象的类型与某些安装的卷填充或动态置备程序匹配时,卷绑定才会成功。此字段将替换 dataSource 字段的功能,如果两个字段都不是空的,则它们必须具有相同的值。为了向后兼容,当命名空间没有在 dataSourceRef 中指定时,如果其中一个为空,则两个字段(dataSource 和 dataSourceRef)都会自动设置为相同的值,另一个是非空的。当在 dataSourceRef 中指定 namespace 时,dataSource 不设置为相同的值,必须为空。dataSource 和 dataSourceRef 之间有三个重要区别:* While dataSource 只允许两种特定类型的对象,dataSourceRef 允许任何非核心对象,以及 PersistentVolumeClaim 对象。* 虽然 dataSource 忽略了禁止的值(丢弃它们),dataSourceRef 保留所有值,并在指定禁止的值时生成错误。* 虽然 dataSource 只允许本地对象,dataSourceRef 允许任何命名空间中的对象。(beta)使用此字段需要启用 AnyVolumeDataSource 功能门。(alpha)使用 dataSourceRef 的 namespace 字段需要启用 CrossNamespaceVolumeDataSource 功能门。
类型
object
必填
  • kind
  • name
属性类型描述

apiGroup

字符串

APIGroup 是所引用资源的组。如果没有指定 APIGroup,则指定的 Kind 必须位于 core API 组中。对于任何其他第三方类型,需要 APIGroup。

kind

字符串

kind 是被引用的资源类型

name

字符串

name 是被引用的资源的名称

namespace

string

命名空间是被引用的资源的命名空间,请注意,当指定命名空间时,引用命名空间中需要一个 gateway.networking.k8s.io/ReferenceGrant 对象来允许该命名空间的所有者接受引用。详情请查看 ReferenceGrant 文档。(alpha)此字段需要启用 CrossNamespaceVolumeDataSource 功能门。

6.1.4. .spec.resources

描述
VolumeResourceRequirements 描述了卷的存储资源要求。
类型
object
属性类型描述

limits

对象(数量)

限制描述了允许的最大计算资源量。更多信息: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/

requests

对象(数量)

Requests 描述了所需的最少计算资源。如果容器省略了 Requests,则默认为 Limits (如果明确指定),否则默认为实现定义的值。请求不能超过限值。更多信息: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/

6.1.5. .status

描述
PersistentVolumeClaimStatus 是持久性卷声明的当前状态。
类型
object
属性类型描述

accessModes

数组(字符串)

accessModes 包含 PVC 支持的卷的实际访问模式。更多信息: https://kubernetes.io/docs/concepts/storage/persistent-volumes#access-modes-1

allocatedResourceStatuses

对象(字符串)

allocatedResourceStatuses 存储给定 PVC 的大小的资源状态。键名称遵循标准 Kubernetes 标签语法。有效值为:* Un-prefixed 键: - storage - 卷的容量。* 自定义资源必须使用定义实现的前缀前缀名称,如 "example.com/my-custom-resource" 除以上值外 - 未前缀或具有 kubernetes.io 前缀的密钥被视为保留,因此可能无法使用。

ClaimResourceStatus 可以处于以下状态: - ControllerResizeInProgress: 当重新定义 control-plane 大小调整卷大小时 State set。- ControllerResizeFailed: 在重新定义控制器大小失败时,State set 会失败,并显示终端错误。- NodeResizePending: 当重新定义控制器调整卷的大小时 State 设置,但节点上需要进一步重新定义卷大小。- NodeResizeInProgress: 当 kubelet 开始重新定义卷的大小时设置 State。- NodeResizeFailed: 当 kubelet 中调整大小失败并显示终端错误时,State 设置。临时错误没有设置 NodeResizeFailed。例如:如果为更多容量扩展 PVC - 此字段可以是以下状态之一: - pvc.status.allocatedResourceStatus['storage'] = "ControllerResizeInProgress" - pvc.status.allocatedResourceStatus['storage'] = "ControllerResizeFailed" - pvc.status.allocatedResourceStatus['storage'] = "NodeResizePending" - pvc.status.allocatedResourceStatus['storage'] = "NodeResizeInProgress" - pvc.status.allocatedResourceStatus['storage'] = "NodeResizeFailed" When this field is not set, 这意味着,给定 PVC 没有调整大小的操作。

接收之前未知 resourceName 或 ClaimResourceStatus 的 PVC 更新的控制器应忽略其设计的用途的更新。例如 - 仅负责重新定义卷大小调整容量的控制器,应忽略更改与 PVC 相关的其他有效资源的 PVC 更新。

这是一个 alpha 字段,需要启用 RecoverVolumeExpansionFailure 功能。

allocatedResources

对象(数量)

allocatedResources 跟踪分配给 PVC 的资源,包括其容量。键名称遵循标准 Kubernetes 标签语法。有效值为:* Un-prefixed 键: - storage - 卷的容量。* 自定义资源必须使用定义实现的前缀前缀名称,如 "example.com/my-custom-resource" 除以上值外 - 未前缀或具有 kubernetes.io 前缀的密钥被视为保留,因此可能无法使用。

当请求卷扩展操作时,此处报告的容量可能大于实际容量。对于存储配额,使用来自 allocatedResources 和 PVC.spec.resources 的值。如果没有设置 allocatedResources,则单独使用 PVC.spec.resources 进行配额计算。如果卷扩展容量请求较低,则只有当实际卷容量相等或低于请求的容量时,才会降低 allocatedResources。

接收之前未知 resourceName 的 PVC 更新的控制器应忽略其目的的更新。例如 - 仅负责重新定义卷大小调整容量的控制器,应忽略更改与 PVC 相关的其他有效资源的 PVC 更新。

这是一个 alpha 字段,需要启用 RecoverVolumeExpansionFailure 功能。

capacity

对象(数量)

capacity 代表底层卷的实际资源。

conditions

数组

条件是持久性卷声明的当前条件。如果底层持久性卷被调整大小,则条件将设置为 'ResizeStarted'。

conditions[]

object

PersistentVolumeClaimCondition 包含有关 pvc 状态的详细信息

currentVolumeAttributesClassName

string

currentVolumeAttributesClassName 是 PVC 正在使用的 VolumeAttributesClass 的当前名称。当取消设置时,没有应用到此 PersistentVolumeClaim 的 VolumeAttributeClass。这是一个 alpha 字段,需要启用 VolumeAttributesClass 功能。

modifyVolumeStatus

object

ModifyVolumeStatus 代表 ControllerModifyVolume 操作的状态对象

phase

string

phase 代表 PersistentVolumeClaim 的当前阶段。

可能枚举值: - 用于绑定的 PersistentVolumeClaim 的 "Bound " - 用于丢失其底层 PersistentVolume 的 PersistentVolumeClaim。这个声明绑定到 PersistentVolume,这个卷不再存在,并会丢失它的所有数据。- 用于尚未绑定的 PersistentVolumeClaim 的 "Pending"

6.1.6. .status.conditions

描述
条件是持久性卷声明的当前条件。如果底层持久性卷被调整大小,则条件将设置为 'ResizeStarted'。
类型
array

6.1.7. .status.conditions[]

描述
PersistentVolumeClaimCondition 包含有关 pvc 状态的详细信息
类型
object
必填
  • type
  • status
属性类型描述

lastProbeTime

时间

lastProbeTime 是我们探测到条件的时间。

lastTransitionTime

时间

lastTransitionTime 是条件从一个状态转换到另一个状态的时间。

message

string

Message 是人类可读的消息,指示最后一次转换的详细信息。

reason

string

原因是唯一的,这应该是一个简短的机器理解字符串,给出了条件最后一次转换的原因。如果报告"ResizeStarted",则表示已调整底层持久性卷的大小。

status

字符串

 

type

string

 

6.1.8. .status.modifyVolumeStatus

描述
ModifyVolumeStatus 代表 ControllerModifyVolume 操作的状态对象
类型
object
必填
  • status
属性类型描述

status

string

status 是 ControllerModifyVolume 操作的状态。它可以处于以下状态: - Pending Pending 表示因为未处理的要求(如指定的 VolumeAttributesClass 不存在)- InProgress InProgress 表示卷被修改。- 不可联邦表示请求已被修改为无效的 CSI 驱动程序。要解决错误,需要指定一个有效的 VolumeAttributesClass。注: 以后可以添加新状态。消费者应检查未知状态并正确失败。

可能枚举值: - "InProgress" InProgress 表示卷正在被修改 - "Infeasible" Infeasible 表示请求已被 CSI 驱动程序无效。要解决错误,需要指定有效的 VolumeAttributesClass - "Pending" Pending 表示因为未处理的要求(如指定的 VolumeAttributesClass 不存在)无法修改 PersistentVolumeClaim,如指定的 VolumeAttributesClass

targetVolumeAttributesClassName

string

targetVolumeAttributesClassName 是当前被协调的 PVC 的 VolumeAttributesClass 的名称

Red Hat logoGithubRedditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

通过我们的产品和服务,以及可以信赖的内容,帮助红帽用户创新并实现他们的目标。

让开源更具包容性

红帽致力于替换我们的代码、文档和 Web 属性中存在问题的语言。欲了解更多详情,请参阅红帽博客.

關於紅帽

我们提供强化的解决方案,使企业能够更轻松地跨平台和环境(从核心数据中心到网络边缘)工作。

© 2024 Red Hat, Inc.