6장. PersistentVolumeClaim [v1]
- 설명
- PersistentVolumeClaim은 영구 볼륨에 대한 사용자 요청 및 클레임입니다.
- 유형
-
object
6.1. 사양
속성 | 유형 | 설명 |
---|---|---|
|
| APIVersion은 버전이 지정된 이 오브젝트 표현의 스키마를 정의합니다. 서버는 인식된 스키마를 최신 내부 값으로 변환해야 하며, 인식되지 않는 값을 거부할 수 있습니다. 자세한 내용은 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은 스토리지 장치의 공통 속성을 설명하고 공급자별 속성에 대해 소스를 허용합니다. |
|
| PersistentVolumeClaimStatus는 영구 볼륨 클레임의 현재 상태입니다. |
6.1.1. .spec
- 설명
- PersistentVolumeClaimSpec은 스토리지 장치의 공통 속성을 설명하고 공급자별 속성에 대해 소스를 허용합니다.
- 유형
-
object
속성 | 유형 | 설명 |
---|---|---|
|
| accessModes에는 볼륨에 필요한 액세스 모드가 포함되어 있습니다. 자세한 내용은 https://kubernetes.io/docs/concepts/storage/persistent-volumes#access-modes-1 |
|
| TypedLocalObjectReference에는 동일한 네임 스페이스 내에서 형식화된 참조 오브젝트를 찾을 수 있는 충분한 정보가 포함되어 있습니다. |
|
| dataSourceRef는 비어 있지 않은 볼륨이 필요한 경우 볼륨을 데이터로 채울 오브젝트를 지정합니다. 비어 있지 않은 API 그룹(코어 오브젝트가 아님) 또는 PersistentVolumeClaim 오브젝트의 모든 오브젝트일 수 있습니다. 이 필드가 지정되면 지정된 오브젝트의 유형이 설치된 일부 볼륨 팝업 또는 동적 프로비저너와 일치하는 경우에만 볼륨 바인딩이 성공적으로 수행됩니다. 이 필드는 dataSource 필드의 기능을 대체하므로 두 필드가 모두 비어 있지 않은 경우 동일한 값이 있어야 합니다. 이전 버전과의 호환성을 위해 dataSourceRef에 네임스페이스가 지정되지 않으면 둘 다 필드(dataSource 및 dataSourceRef)가 비어 있고 다른 하나는 비어 있지 않은 경우 자동으로 동일한 값으로 설정됩니다. dataSourceRef에 네임스페이스가 지정되면 dataSource는 동일한 값으로 설정되지 않으며 비어 있어야 합니다. dataSource와 dataSourceRef에는 세 가지 중요한 차이점이 있습니다. * dataSource는 두 가지 특정 유형의 오브젝트만 허용하는 반면, dataSourceRef에서는 비 코어 오브젝트 및 PersistentVolumeClaim 오브젝트를 허용합니다. * dataSource는 허용하지 않는 값을 무시(dropping)하는 동안 dataSourceRef는 모든 값을 유지하고 허용하지 않는 값이 지정된 경우 오류를 생성합니다. * dataSource는 로컬 오브젝트만 허용하지만 dataSourceRef는 모든 네임스페이스의 오브젝트를 허용합니다. (베타) 이 필드를 사용하려면 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이 바인딩되지 않은 경우 기본 VolumeAttributesClass는 persistentvolume 컨트롤러에서 설정합니다. volumeAttributesClass에서 참조하는 리소스가 없는 경우, 리소스가 존재할 때까지 modifyVolumeStatus 필드에 반영된 대로 이 PersistentVolumeClaim은 Pending 상태로 설정됩니다. 자세한 정보: https://kubernetes.io/docs/concepts/storage/volume-attributes-classes/ (Alpha) 이 필드를 사용하려면 VolumeAttributesClass 기능 게이트를 활성화해야 합니다. |
|
| volumeMode는 클레임에 필요한 볼륨 유형을 정의합니다. claim 사양에 포함되지 않은 경우 Filesystem의 값이 포함됩니다.
가능한 enum 값: - |
|
| volumeName은 이 클레임을 지원하는 PersistentVolume에 대한 바인딩 참조입니다. |
6.1.2. .spec.dataSource
- 설명
- TypedLocalObjectReference에는 동일한 네임 스페이스 내에서 형식화된 참조 오브젝트를 찾을 수 있는 충분한 정보가 포함되어 있습니다.
- 유형
-
object
- 필수 항목
-
kind
-
name
-
속성 | 유형 | 설명 |
---|---|---|
|
| APIGroup은 참조 중인 리소스의 그룹입니다. APIGroup을 지정하지 않으면 지정된Kind이 코어 API 그룹에 있어야 합니다. 다른 타사 유형의 경우 APIGroup이 필요합니다. |
|
| kind는 참조되는 리소스 유형입니다. |
|
| name은 참조되는 리소스의 이름입니다. |
6.1.3. .spec.dataSourceRef
- 설명
- dataSourceRef는 비어 있지 않은 볼륨이 필요한 경우 볼륨을 데이터로 채울 오브젝트를 지정합니다. 비어 있지 않은 API 그룹(코어 오브젝트가 아님) 또는 PersistentVolumeClaim 오브젝트의 모든 오브젝트일 수 있습니다. 이 필드가 지정되면 지정된 오브젝트의 유형이 설치된 일부 볼륨 팝업 또는 동적 프로비저너와 일치하는 경우에만 볼륨 바인딩이 성공적으로 수행됩니다. 이 필드는 dataSource 필드의 기능을 대체하므로 두 필드가 모두 비어 있지 않은 경우 동일한 값이 있어야 합니다. 이전 버전과의 호환성을 위해 dataSourceRef에 네임스페이스가 지정되지 않으면 둘 다 필드(dataSource 및 dataSourceRef)가 비어 있고 다른 하나는 비어 있지 않은 경우 자동으로 동일한 값으로 설정됩니다. dataSourceRef에 네임스페이스가 지정되면 dataSource는 동일한 값으로 설정되지 않으며 비어 있어야 합니다. dataSource와 dataSourceRef에는 세 가지 중요한 차이점이 있습니다. * dataSource는 두 가지 특정 유형의 오브젝트만 허용하는 반면, dataSourceRef에서는 비 코어 오브젝트 및 PersistentVolumeClaim 오브젝트를 허용합니다. * dataSource는 허용하지 않는 값을 무시(dropping)하는 동안 dataSourceRef는 모든 값을 유지하고 허용하지 않는 값이 지정된 경우 오류를 생성합니다. * dataSource는 로컬 오브젝트만 허용하지만 dataSourceRef는 모든 네임스페이스의 오브젝트를 허용합니다. (베타) 이 필드를 사용하려면 AnyVolumeDataSource 기능 게이트를 활성화해야 합니다. (alpha) dataSourceRef의 namespace 필드를 사용하려면 CrossNamespaceVolumeDataSource 기능 게이트를 활성화해야 합니다.
- 유형
-
object
- 필수 항목
-
kind
-
name
-
속성 | 유형 | 설명 |
---|---|---|
|
| APIGroup은 참조 중인 리소스의 그룹입니다. APIGroup을 지정하지 않으면 지정된Kind이 코어 API 그룹에 있어야 합니다. 다른 타사 유형의 경우 APIGroup이 필요합니다. |
|
| kind는 참조되는 리소스 유형입니다. |
|
| name은 참조되는 리소스의 이름입니다. |
|
| namespace는 네임스페이스가 지정되면 해당 네임스페이스의 소유자가 참조를 수락할 수 있도록 참조 네임스페이스에 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를 생략하면 구현 정의된 값을 제외하고 명시적으로 지정된 경우 기본값은 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 라벨 구문을 따릅니다. 유효한 값은 * 접두사가 지정되지 않은 키: - storage - 볼륨의 용량 중 하나입니다. * 사용자 정의 리소스는 위의 값에서 "example.com/my-custom-resource"와 같은 구현 정의 접두사 이름을 사용해야 합니다. 그렇지 않은 키 또는 kubernetes.io 접두사가 예약된 키로 간주되므로 사용할 수 없습니다. ClaimResourceStatus는 - ControllerResizeInProgress의 상태에 있을 수 있습니다. 컨트롤러의 크기 조정 컨트롤러에서 컨트롤 플레인에서 볼륨 크기 조정을 시작할 때 상태 설정. - ControllerResizeFailed: 터미널 오류가 있는 컨트롤러 크기 조정에 실패한 경우 상태 설정. - NodeResizePending: 컨트롤러의 크기 조정이 완료되면 볼륨 크기 조정이 완료되지만 노드에 볼륨 크기 조정이 필요합니다. - NodeResizeInProgress: kubelet이 볼륨 크기 조정을 시작할 때 상태 세트입니다. - NodeResizeFailed: 터미널 오류와 함께 kubelet에서 크기 조정에 실패한 경우 상태 세트입니다. 일시적인 오류는 NodeResizeFailed를 설정하지 않습니다. 예를 들어, 더 많은 용량을 위해 PVC를 확장하는 경우 - pvc.status.allocatedResourceStatus['storage'] = "ControllerResizeInProgress" - pvc.status.allocatedResourceStatus['storage'] = "ControllerResizeFailed" - pvc.status['storage'] - pvc.status['storage'] - pvc.status['storage'] - pvc.status['storage'] - pvc.status['storage'] = "NodeResizePending" - pvc.status.allocatedResourceStatus['storage'] = "NodeResizeInProgress" - pvc.status.allocatedResourceStatus['storage'] = "NodeResizeFailed" 이는 지정된 PVC에 대한 크기 조정 작업이 진행되지 않음을 의미합니다. 이전에 알 수 없는 resourceName 또는 ClaimResourceStatus를 사용하여 PVC 업데이트를 수신하는 컨트롤러는 설계된 목적에 대한 업데이트를 무시해야 합니다. 예를 들어 볼륨 용량의 크기만 담당하는 컨트롤러는 PVC와 연결된 다른 유효한 리소스를 변경하는 PVC 업데이트를 무시해야 합니다. 알파 필드이며 RecoverVolumeExpansionFailure 기능을 활성화해야 합니다. |
| allocatedResources는 용량을 포함하여 PVC에 할당된 리소스를 추적합니다. 키 이름은 표준 Kubernetes 라벨 구문을 따릅니다. 유효한 값은 * 접두사가 지정되지 않은 키: - storage - 볼륨의 용량 중 하나입니다. * 사용자 정의 리소스는 위의 값에서 "example.com/my-custom-resource"와 같은 구현 정의 접두사 이름을 사용해야 합니다. 그렇지 않은 키 또는 kubernetes.io 접두사가 예약된 키로 간주되므로 사용할 수 없습니다. 여기서 보고된 용량은 볼륨 확장 작업이 요청될 때 실제 용량보다 클 수 있습니다. 스토리지 할당량의 경우 allocatedResources 및 PVC.spec.resources의 더 큰 값이 사용됩니다. allocatedResources가 설정되지 않은 경우 할당량 계산에 PVC.spec.resources만 사용됩니다. 볼륨 확장 용량 요청이 감소하면 진행 중인 확장 작업이 없고 실제 볼륨 용량이 요청된 용량보다 작거나 같은 경우에만 allocatedResources가 낮아집니다. 이전에 알 수 없는 resourceName으로 PVC 업데이트를 수신하는 컨트롤러는 설계된 목적에 대한 업데이트를 무시해야 합니다. 예를 들어 볼륨 용량의 크기만 담당하는 컨트롤러는 PVC와 연결된 다른 유효한 리소스를 변경하는 PVC 업데이트를 무시해야 합니다. 알파 필드이며 RecoverVolumeExpansionFailure 기능을 활성화해야 합니다. | |
| capacity는 기본 볼륨의 실제 리소스를 나타냅니다. | |
|
| 조건은 영구 볼륨 클레임의 현재 조건입니다. 기본 영구 볼륨의 크기를 조정하는 경우 Condition이 'Resizing'으로 설정됩니다. |
|
| PersistentVolumeClaimCondition에는 pvc 상태에 대한 세부 정보가 포함되어 있습니다. |
|
| currentVolumeAttributesClassName은 PVC가 사용 중인 VolumeAttributesClass의 현재 이름입니다. 설정되지 않으면 이 PersistentVolumeClaim에 적용된 VolumeAttributeClass가 알파 필드이며 VolumeAttributesClass 기능을 활성화해야 합니다. |
|
| ModifyVolumeStatus는 ControllerModifyVolume 작업의 상태 오브젝트를 나타냅니다. |
|
| phase는 PersistentVolumeClaim의 현재 단계를 나타냅니다.
가능한 enum 값: - 바인딩된 PersistentVolumeClaims에 사용되는 |
6.1.6. .status.conditions
- 설명
- 조건은 영구 볼륨 클레임의 현재 조건입니다. 기본 영구 볼륨의 크기를 조정하는 경우 Condition이 'Resizing'으로 설정됩니다.
- 유형
-
array
6.1.7. .status.conditions[]
- 설명
- PersistentVolumeClaimCondition에는 pvc 상태에 대한 세부 정보가 포함되어 있습니다.
- 유형
-
object
- 필수 항목
-
type
-
status
-
속성 | 유형 | 설명 |
---|---|---|
| lastProbeTime은 조건을 조사한 시간입니다. | |
| lastTransitionTime은 조건이 한 상태에서 다른 상태로 전환된 시간입니다. | |
|
| message는 마지막 전환에 대한 세부 정보를 나타내는 사람이 읽을 수 있는 메시지입니다. |
|
| 이유는 고유합니다. 이는 조건의 마지막 전환 이유를 제공하는 짧은 머신 이해할 수 있는 문자열이어야 합니다. "Resizing"을 보고하는 경우 기본 영구 볼륨의 크기를 조정할 수 있습니다. |
|
| |
|
|
6.1.8. .status.modifyVolumeStatus
- 설명
- ModifyVolumeStatus는 ControllerModifyVolume 작업의 상태 오브젝트를 나타냅니다.
- 유형
-
object
- 필수 항목
-
status
-
속성 | 유형 | 설명 |
---|---|---|
|
| 상태는 ControllerModifyVolume 작업의 상태입니다. 다음과 같은 상태에 있을 수 있습니다. - Pending Pending는 지정된 VolumeAttributesClass가 존재하지 않는 등 미해결 요구 사항으로 인해 PersistentVolumeClaim을 수정할 수 없음을 나타냅니다. - InProgress InProgress는 볼륨이 수정되었음을 나타냅니다. - Infeasible Infeasible은 요청이 CSI 드라이버에서 유효하지 않은 것으로 거부되었음을 나타냅니다. 오류를 해결하려면 유효한 VolumeAttributesClass를 지정해야 합니다. 참고: 향후 새 상태를 추가할 수 있습니다. 소비자는 알 수 없는 상태를 확인하고 적절하게 실패해야 합니다.
가능한 enum 값: - |
|
| targetVolumeAttributesClassName은 현재 PVC가 조정 중인 VolumeAttributesClass의 이름입니다. |