第 6 章 PersistentVolumeClaim [v1]
- 描述
- PersistentVolumeClaim 是用户对持久性卷的请求并声明
- 类型
- 
						object
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 包含足够信息,以便您在同一命名空间中找到类型引用的对象。 | 
| 
									 | 
									 | TypedObjectReference 包含足够信息,以便您找到输入引用的对象 | 
| 
									 | 
									 | 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/ (Beta)使用此字段需要启用 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
- 描述
- TypedObjectReference 包含足够信息,以便您找到输入引用的对象
- 类型
- 
								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 大小调整卷大小时设置的状态。- ControllerResizeFailed: 在重新定义控制器大小失败并带有终止性错误时设置的状态。- NodeResizePending: 当重新定义控制器调整卷的大小结束,但节点上需要进一步重新定义卷大小是设置的状态。- NodeResizeInProgress: 当 kubelet 开始重新定义卷的大小时设置的状态。- NodeResizeFailed: 当 kubelet 中调整大小失败并带有终止性错误时设置的状态。临时错误不会设置 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"。如果这个字段没有设置,意味着,给定 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 代表底层卷的实际资源。 | |
| 
									 | 
									 | conditions 是持久性卷声明的当前条件。如果底层持久性卷被调整大小,则条件将设置为 'Resizing'。 | 
| 
									 | 
									 | PersistentVolumeClaimCondition 包含有关 pvc 状态的详细信息 | 
| 
									 | 
									 | currentVolumeAttributesClassName 是 PVC 正在使用的 VolumeAttributesClass 的当前名称。如果未设置时,没有应用到此 PersistentVolumeClaim 的 VolumeAttributeClass。这是一个 beta 字段,需要默认启用 VolumeAttributesClass 功能(默认关闭)。 | 
| 
									 | 
									 | ModifyVolumeStatus 代表 ControllerModifyVolume 操作的状态对象 | 
| 
									 | 
									 | phase 代表 PersistentVolumeClaim 的当前阶段。 
									可能的枚举值: -  | 
6.1.6. .status.conditions
- 描述
- conditions 是持久性卷声明的当前条件。如果底层持久性卷被调整大小,则条件将设置为 'Resizing'。
- 类型
- 
								array
6.1.7. .status.conditions[]
- 描述
- PersistentVolumeClaimCondition 包含有关 pvc 状态的详细信息
- 类型
- 
								object
- 必填
- 
										type
- 
										status
 
- 
										
| 属性 | 类型 | 描述 | 
|---|---|---|
| 
									 | lastProbeTime 是我们探测到条件的时间。 | |
| 
									 | lastTransitionTime 是条件从一个状态转换到另一个状态的时间。 | |
| 
									 | 
									 | Message 是人类可读的消息,指示最后一次转换的详细信息。 | 
| 
									 | 
									 | reason 是唯一的,这应该是一个简短的机器理解的字符串,给出了条件最后一次转换的原因。如果报告"Resizing",则表示已调整底层持久性卷的大小。 | 
| 
									 | 
									 | status 是条件的状态。可以是 True, False, Unknown。更多信息: https://kubernetes.io/docs/reference/kubernetes-api/config-and-storage-resources/persistent-volume-claim-v1/#:~:text=state%20of%20pvc-,conditions.status,-(string)%2C%20required | 
| 
									 | 
									 | 
6.1.8. .status.modifyVolumeStatus
- 描述
- ModifyVolumeStatus 代表 ControllerModifyVolume 操作的状态对象
- 类型
- 
								object
- 必填
- 
										status
 
- 
										
| 属性 | 类型 | 描述 | 
|---|---|---|
| 
									 | 
									 | status 是 ControllerModifyVolume 操作的状态。它可以处于以下任何状态: - Pending Pending 表示因为没有满足的要求(如指定的 VolumeAttributesClass 不存在)PersistentVolumeClaim 不能被修改 - InProgress InProgress 表示卷正在被修改。- Infeasible Infeasible 代表 CSI 驱动程序已拒绝了请求。要解决错误,需要指定一个有效的 VolumeAttributesClass。注:新状态可以在以后添加。消费者应检查未知状态和失败的情况。 
									可能的枚举值: -  | 
| 
									 | 
									 | targetVolumeAttributesClassName 是当前被协调的 PVC 的 VolumeAttributesClass 的名称 |