第 6 章 PersistentVolumeClaim [v1]
- 描述
- PersistentVolumeClaim 是用户对持久性卷的请求并声明
- 类型
-
对象
6.1. 规格
属性 | 类型 | 描述 |
---|---|---|
|
| APIVersion 定义对象的这个表示法的版本化的 schema。服务器应该将识别的模式转换为最新的内部值,并可拒绝未识别的值。更多信息: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources |
|
| kind 是一个字符串值,代表此对象所代表的 REST 资源。服务器可以从客户端向其提交请求的端点推断。无法更新。采用驼峰拼写法 (CamelCase)。更多信息: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds |
| 标准对象元数据。更多信息: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata | |
|
| PersistentVolumeClaimSpec 描述了存储设备的通用属性,并允许 Source 用于特定于供应商的属性 |
|
| PersistentVolumeClaimStatus 是持久性卷声明的当前状态。 |
6.1.1. .spec
- 描述
- PersistentVolumeClaimSpec 描述了存储设备的通用属性,并允许 Source 用于特定于供应商的属性
- 类型
-
object
属性 | 类型 | 描述 |
---|---|---|
|
| accessModes 包含卷应具有所需的访问模式。更多信息: https://kubernetes.io/docs/concepts/storage/persistent-volumes#access-modes-1 |
|
| TypedLocalObjectReference 包含足够信息,以便您在同一命名空间中找到类型引用的对象。 |
|
| 如果需要非空卷,则 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 功能门。 |
|
| VolumeResourceRequirements 描述了卷的存储资源要求。 |
| selector 是要考虑绑定的卷的标签查询。 | |
|
| storageClassName 是声明所需的 StorageClass 的名称。更多信息: https://kubernetes.io/docs/concepts/storage/persistent-volumes#class-1 |
|
| volumeAttributesClassName 可用于设置此声明使用的 VolumeAttributesClass。如果指定,CSI 驱动程序将使用对应的 VolumeAttributesClass 中定义的属性创建或更新卷。这有一个不同于 storageClassName 的目的,可在创建声明后更改。空字符串表示,不会将 VolumeAttributesClass 应用到声明,但不允许在设置后将此字段重置为空字符串。如果未指定,并且 PersistentVolumeClaim 为 unbound,则 persistentvolume 控制器将设置默认的 VolumeAttributesClass (如果存在)。如果 volumeAttributesClass 引用的资源不存在,则这个 PersistentVolumeClaim 将被设置为 Pending 状态,如 modifyVolumeStatus 字段反映,直到资源存在为止。更多信息: https://kubernetes.io/docs/concepts/storage/volume-attributes-classes/ (Alpha)使用此字段需要启用 VolumeAttributesClass 功能门。 |
|
| volumeMode 定义声明需要哪些卷类型。当未包含在 claim spec 中时,文件系统的值会被表示。
可能枚举值: - |
|
| volumeName 是对此声明支持的 PersistentVolume 的绑定引用。 |
6.1.2. .spec.dataSource
- 描述
- TypedLocalObjectReference 包含足够信息,以便您在同一命名空间中找到类型引用的对象。
- 类型
-
object
- 必填
-
kind
-
name
-
属性 | 类型 | 描述 |
---|---|---|
|
| APIGroup 是所引用资源的组。如果没有指定 APIGroup,则指定的 Kind 必须位于 core API 组中。对于任何其他第三方类型,需要 APIGroup。 |
|
| kind 是被引用的资源类型 |
|
| 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,则指定的 Kind 必须位于 core API 组中。对于任何其他第三方类型,需要 APIGroup。 |
|
| kind 是被引用的资源类型 |
|
| name 是被引用的资源的名称 |
|
| 命名空间是被引用的资源的命名空间,请注意,当指定命名空间时,引用命名空间中需要一个 gateway.networking.k8s.io/ReferenceGrant 对象来允许该命名空间的所有者接受引用。详情请查看 ReferenceGrant 文档。(alpha)此字段需要启用 CrossNamespaceVolumeDataSource 功能门。 |
6.1.4. .spec.resources
- 描述
- VolumeResourceRequirements 描述了卷的存储资源要求。
- 类型
-
object
属性 | 类型 | 描述 |
---|---|---|
| 限制描述了允许的最大计算资源量。更多信息: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/ | |
| Requests 描述了所需的最少计算资源。如果容器省略了 Requests,则默认为 Limits (如果明确指定),否则默认为实现定义的值。请求不能超过限值。更多信息: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/ |
6.1.5. .status
- 描述
- PersistentVolumeClaimStatus 是持久性卷声明的当前状态。
- 类型
-
object
属性 | 类型 | 描述 |
---|---|---|
|
| accessModes 包含 PVC 支持的卷的实际访问模式。更多信息: https://kubernetes.io/docs/concepts/storage/persistent-volumes#access-modes-1 |
|
| 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 跟踪分配给 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 代表底层卷的实际资源。 | |
|
| 条件是持久性卷声明的当前条件。如果底层持久性卷被调整大小,则条件将设置为 'Resizing'。 |
|
| PersistentVolumeClaimCondition 包含有关 pvc 状态的详细信息 |
|
| currentVolumeAttributesClassName 是 PVC 正在使用的 VolumeAttributesClass 的当前名称。当取消设置时,没有应用到此 PersistentVolumeClaim 的 VolumeAttributeClass。这是一个 alpha 字段,需要启用 VolumeAttributesClass 功能。 |
|
| ModifyVolumeStatus 代表 ControllerModifyVolume 操作的状态对象 |
|
| phase 代表 PersistentVolumeClaim 的当前阶段。
可能枚举值: - 用于绑定的 PersistentVolumeClaim 的 |
6.1.6. .status.conditions
- 描述
- 条件是持久性卷声明的当前条件。如果底层持久性卷被调整大小,则条件将设置为 'Resizing'。
- 类型
-
array
6.1.7. .status.conditions[]
- 描述
- PersistentVolumeClaimCondition 包含有关 pvc 状态的详细信息
- 类型
-
object
- 必填
-
type
-
status
-
属性 | 类型 | 描述 |
---|---|---|
| lastProbeTime 是我们探测到条件的时间。 | |
| lastTransitionTime 是条件从一个状态转换到另一个状态的时间。 | |
|
| Message 是人类可读的消息,指示最后一次转换的详细信息。 |
|
| 原因是唯一的,这应该是一个简短的机器理解字符串,给出了条件最后一次转换的原因。如果报告"重新调整",则表示已调整底层持久性卷的大小。 |
|
| |
|
|
6.1.8. .status.modifyVolumeStatus
- 描述
- ModifyVolumeStatus 代表 ControllerModifyVolume 操作的状态对象
- 类型
-
object
- 必填
-
status
-
属性 | 类型 | 描述 |
---|---|---|
|
| status 是 ControllerModifyVolume 操作的状态。它可以处于以下状态: - Pending Pending 表示因为未处理的要求(如指定的 VolumeAttributesClass 不存在)- InProgress InProgress 表示卷被修改。- 不可联邦表示请求已被修改为无效的 CSI 驱动程序。要解决错误,需要指定一个有效的 VolumeAttributesClass。注: 以后可以添加新状态。消费者应检查未知状态并正确失败。
可能枚举值: - |
|
| targetVolumeAttributesClassName 是当前被协调的 PVC 的 VolumeAttributesClass 的名称 |