第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 には、同じ namespace 内で typed 参照オブジェクトを見つけるのに十分な情報が含まれます。 |
|
| dataSourceRef は、空でないボリュームが必要な場合は、ボリュームにデータを取り込むオブジェクトを指定します。これには、空ではない API グループ (コアオブジェクトではない) または PersistentVolumeClaim オブジェクトの任意のオブジェクトを指定できます。このフィールドが指定されている場合、ボリュームバインディングは、指定されたオブジェクトのタイプが、インストールされているボリュームポピュレーターまたはダイナミックプロビジョナーと一致する場合にのみ成功します。このフィールドは、dataSource フィールドの機能を置き換えるため、両方のフィールドが空でない場合は、同じ値である必要があります。下位互換性を確保するために、dataSourceRef で namespace が指定されておらず、一方が空でもう一方が空でない場合、両方のフィールド (dataSource と dataSourceRef) が自動的に同じ値に設定されます。dataSourceRef で namespace が指定されている場合、dataSource は同じ値に設定されていないため、空にする必要があります。dataSource と dataSourceRef には 3 つの重要な違いがあります。* dataSource では 2 つの特定のタイプのオブジェクトのみが使用できますが、dataSourceRef ではコアオブジェクト以外および PersistentVolumeClaim オブジェクトを使用できます。* dataSource は使用できない値を無視 (ドロップ) しますが、dataSourceRef はすべての値を保持し、使用できない値が指定された場合はエラーを生成します。* dataSource ではローカルオブジェクトのみが使用できますが、dataSourceRef では任意の namespace のオブジェクトを使用できます。(ベータ版) このフィールドを使用するには、AnyVolumeDataSource フィーチャーゲートを有効にする必要があります。(アルファ版) 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 が設定されます。volumeAttributesClass によって参照されるリソースが存在しない場合は、そのようなリソースが存在するまで、この PersistentVolumeClaim は、modifyVolumeStatus フィールドに反映されるように、保留状態に設定されます。詳細: https://kubernetes.io/docs/concepts/storage/persistent-volumes#volumeattributesclass (アルファベット)このフィールドを使用するには、VolumeAttributesClass 機能ゲートを有効にする必要があります。 |
|
| volumeMode は、要求に必要なボリュームのタイプを定義します。Filesystem の値は、要求仕様に含まれていない場合に暗示されます。
使用可能な列挙値: - |
|
| volumeName は、この要求をサポートする PersistentVolume へのバインディング参照です。 |
6.1.2. .spec.dataSource
- 説明
- TypedLocalObjectReference には、同じ namespace 内で typed 参照オブジェクトを見つけるのに十分な情報が含まれます。
- タイプ
-
object
- 必須
-
kind
-
name
-
プロパティー | タイプ | 説明 |
---|---|---|
|
| APIGroup は参照されているリソースのグループです。APIGroup が指定されていない場合には、指定の Kind をコア API グループに設定する必要があります。他のサードパーティータイプについては、APIGroup が必要です。 |
|
| kind は参照されているリソースのタイプです。 |
|
| name は、参照されているリソースの名前です。 |
6.1.3. .spec.dataSourceRef
- 説明
- dataSourceRef は、空でないボリュームが必要な場合は、ボリュームにデータを取り込むオブジェクトを指定します。これには、空ではない API グループ (コアオブジェクトではない) または PersistentVolumeClaim オブジェクトの任意のオブジェクトを指定できます。このフィールドが指定されている場合、ボリュームバインディングは、指定されたオブジェクトのタイプが、インストールされているボリュームポピュレーターまたはダイナミックプロビジョナーと一致する場合にのみ成功します。このフィールドは、dataSource フィールドの機能を置き換えるため、両方のフィールドが空でない場合は、同じ値である必要があります。下位互換性を確保するために、dataSourceRef で namespace が指定されておらず、一方が空でもう一方が空でない場合、両方のフィールド (dataSource と dataSourceRef) が自動的に同じ値に設定されます。dataSourceRef で namespace が指定されている場合、dataSource は同じ値に設定されていないため、空にする必要があります。dataSource と dataSourceRef には 3 つの重要な違いがあります。* dataSource では 2 つの特定のタイプのオブジェクトのみが使用できますが、dataSourceRef ではコアオブジェクト以外および PersistentVolumeClaim オブジェクトを使用できます。* dataSource は使用できない値を無視 (ドロップ) しますが、dataSourceRef はすべての値を保持し、使用できない値が指定された場合はエラーを生成します。* dataSource ではローカルオブジェクトのみが使用できますが、dataSourceRef では任意の namespace のオブジェクトを使用できます。(ベータ版) このフィールドを使用するには、AnyVolumeDataSource フィーチャーゲートを有効にする必要があります。(アルファ版) dataSourceRef の namespace フィールドを使用するには、CrossNamespaceVolumeDataSource フィーチャーゲートを有効にする必要があります。
- タイプ
-
object
- 必須
-
kind
-
name
-
プロパティー | タイプ | 説明 |
---|---|---|
|
| APIGroup は参照されているリソースのグループです。APIGroup が指定されていない場合には、指定の Kind をコア API グループに設定する必要があります。他のサードパーティータイプについては、APIGroup が必要です。 |
|
| kind は参照されているリソースのタイプです。 |
|
| name は、参照されているリソースの名前です。 |
|
| Namespace は、参照されるリソースの namespace です。 namespace が指定されている場合は、その namespace の所有者が参照を受け入れることができるように、参照された namespace に gateway.networking.k8s.io/ReferenceGrant オブジェクトが必要であることに注意してください。詳細は、ReferenceGrant ドキュメントを参照してください。(アルファ版) このフィールドでは、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 ラベル構文に従います。有効な値は次のいずれかです: * 接頭辞のないキー: - ストレージ - ボリュームの容量。* カスタムリソースでは、"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.allocatedResourceStatus['storage'] = "NodeResizePending" - pvc.status.allocatedResourceStatus['storage'] = "NodeResizeInProgress" - pvc.status.allocatedResourceStatus['storage'] = "NodeResizeFailed" このフィールドが設定されていないと、指定された PVC に対してサイズ変更操作が進行中ではないことを意味します。 以前は不明だった resourceName または ClaimResourceStatus を持つ PVC 更新を受信したコントローラーは、設計された目的のためにその更新を無視する必要があります。たとえば、ボリュームの容量のサイズ変更のみを担当するコントローラーは、PVC に関連付けられている他の有効なリソースを変更する PVC 更新を無視する必要があります。 これはアルファフィールドであるため、RecoverVolumeExpansionFailure 機能を有効にする必要があります。 |
| allocatedResources は、PVC に割り当てられたリソース (容量を含む) を追跡します。キー名は標準の Kubernetes ラベル構文に従います。有効な値は次のいずれかです: * 接頭辞のないキー: - ストレージ - ボリュームの容量。* カスタムリソースでは、"example.com/my-custom-resource" などの実装定義の接頭辞付きの名前を使用する必要があります。上記の値以外では、接頭辞のないキーや kubernetes.io 接頭辞を持つキーは予約済みとみなされるため、使用できません。 ここで報告される容量は、ボリューム拡張操作が要求された場合の実際の容量よりも大きくなる可能性があります。ストレージクォータには、allocatedResources と PVC.spec.resources を比較して大きい方の値が使用されます。allocatedResources が設定されていない場合、PVC.spec.resources のみがクォータの計算に使用されます。ボリューム拡張容量要求が下げられ、進行中の拡張操作がなく、実際のボリューム容量が要求された容量以下である場合にのみ、allocatedResources が引き下げられます。 以前は不明だった resourceName を持つ PVC 更新を受信したコントローラーは、設計された目的のため、その更新を無視する必要があります。たとえば、ボリュームの容量のサイズ変更のみを担当するコントローラーは、PVC に関連付けられている他の有効なリソースを変更する PVC 更新を無視する必要があります。 これはアルファフィールドであるため、RecoverVolumeExpansionFailure 機能を有効にする必要があります。 | |
| capacity は、基礎となるボリュームの実際のリソースを表します。 | |
|
| conditions は永続ボリューム要求の現在の条件です。基礎となる永続ボリュームのサイズを変更すると、Condition は 'ResizeStarted' に設定されます。 |
|
| PersistentVolumeClaimCondition には pvc の状態の詳細が含まています。 |
|
| currentVolumeAttributesClassName は、PVC が使用している VolumeAttributesClass の現在の名前です。設定されていないと、この PersistentVolumeClaim には VolumeAttributeClass が適用されません。これはアルファフィールドであり、VolumeAttributesClass 機能を有効にする必要があります。 |
|
| ModifyVolumeStatus は、ControllerModifyVolume 操作のステータスオブジェクトを表します。 |
|
| phase は PersistentVolumeClaim の現在のフェーズを表します。
使用可能な列挙値: - |
6.1.6. .status.conditions
- 説明
- conditions は永続ボリューム要求の現在の条件です。基礎となる永続ボリュームのサイズを変更すると、Condition は 'ResizeStarted' に設定されます。
- タイプ
-
array
6.1.7. .status.conditions[]
- 説明
- PersistentVolumeClaimCondition コンテーションで pvc の状態の詳細
- タイプ
-
object
- 必須
-
type
-
status
-
プロパティー | タイプ | 説明 |
---|---|---|
| lastProbeTime は、条件を調査した時間です。 | |
| lastTransitionTime は、条件があるステータスから別のステータスに遷移した最後の時間です。 | |
|
| message は、最後の遷移に関する詳細を示し、人間が判読できるメッセージです。 |
|
| 一意であり、これは、条件の最後の遷移理由を示す、マシンが理解できる短い文字列である必要があります。"ResizeStarted" と報告された場合は、基礎となる永続ボリュームのサイズが変更されていることを意味します。 |
|
| |
|
|
6.1.8. .status.modifyVolumeStatus
- 説明
- ModifyVolumeStatus は、ControllerModifyVolume 操作のステータスオブジェクトを表します。
- タイプ
-
object
- 必須
-
status
-
プロパティー | タイプ | 説明 |
---|---|---|
|
| status は、ControllerModifyVolume 操作のステータスです。状態は次のいずれかになります: - Pending。Pending は、指定された VolumeAttributesClass が存在しないなど、要件が満たされていないため、PersistentVolumeClaim を変更できないことを示します。- InProgress。InProgress は、ボリュームが変更中であることを示します。- Infeasible。Infeasible は、要求が CSI ドライバーによって無効として拒否されたことを示します。エラーを解決するには、有効な VolumeAttributesClass を指定する必要があります。注記: 将来的に新しいステータスが追加される可能性があります。コンシューマーは不明なステータスをチェックし、適切に失敗する必要があります。
可能な列挙値: - |
|
| targetVolumeAttributesClassName は、現在調整中の PVC の VolumeAttributesClass の名前です。 |