3.3. 永続ボリューム
各 PV には、以下の例のように、ボリュームの仕様およびステータスである spec および status が含まれます。
PersistentVolume オブジェクト定義の例
apiVersion: v1
kind: PersistentVolume
metadata:
name: pv0001
spec:
capacity:
storage: 5Gi
accessModes:
- ReadWriteOnce
persistentVolumeReclaimPolicy: Retain
...
status:
...
以下のコマンドを実行して、PV にバインドされている PVC の名前を表示できます。
$ oc get pv <pv_name> -o jsonpath='{.spec.claimRef.name}'
3.3.1. PV の種類 リンクのコピーリンクがクリップボードにコピーされました!
Red Hat OpenShift Service on AWS クラシックアーキテクチャーは、永続ボリューム用のストレージオプションとして、以下のものをサポートしています。
- AWS Elastic Block Store (EBS)。これはデフォルトでインストールされます。
- AWS Elastic File Store (EFS)
Red Hat OpenShift Service on AWS クラシックアーキテクチャーは、他のストレージベンダーの Kubernetes Container Storage Interface (CSI) 互換ボリュームプロビジョナーと連携して機能します。Red Hat OpenShift Service on AWS クラシックアーキテクチャーの CSI ドライバーの詳細は、関連情報 セクションの CSI ボリュームの設定 を参照してください。
3.3.2. 容量 リンクのコピーリンクがクリップボードにコピーされました!
通常、永続ボリューム (PV) には特定のストレージ容量があります。これは PV の capacity 属性を使用して設定されます。
現時点で、ストレージ容量は設定または要求できる唯一のリソースです。今後は属性として IOPS、スループットなどが含まれる可能性があります。
3.3.3. アクセスモード リンクのコピーリンクがクリップボードにコピーされました!
永続ボリュームは、リソースプロバイダーでサポートされるすべての方法でホストにマウントできます。プロバイダーには各種の機能があり、それぞれの PV のアクセスモードは特定のボリュームでサポートされる特定のモードに設定されます。たとえば、NFS は複数の読み取り/書き込みクライアントをサポートしますが、特定の NFS PV は読み取り専用としてサーバー上でエクスポートされる可能性があります。それぞれの PV は、その特定の PV の機能を記述するアクセスモードの独自のセットを取得します。
要求は、同様のアクセスモードのボリュームに一致します。一致する条件はアクセスモードとサイズの 2 つの条件のみです。要求のアクセスモードは要求 (request) を表します。そのため、より多くのアクセスを付与することはできますが、アクセスを少なくすることはできません。たとえば、要求により RWO が要求されるものの、利用できる唯一のボリュームが NFS PV (RWO+ROX+RWX) の場合に、要求は RWO をサポートする NFS に一致します。
直接的なマッチングが常に最初に試行されます。ボリュームのモードは、要求モードと一致するか、要求した内容以上のものを含む必要があります。サイズは予想されるものより多いか、これと同等である必要があります。2 つのタイプのボリューム (NFS および iSCSI など) のどちらにも同じセットのアクセスモードがある場合、それらのいずれかがそれらのモードを持つ要求に一致する可能性があります。ボリュームのタイプ間で順序付けすることはできず、タイプを選択することはできません。
同じモードのボリュームはすべて分類され、サイズ別 (一番小さいものから一番大きいもの順) に分類されます。バインダーは一致するモードのグループを取得し、1 つのサイズが一致するまでそれぞれを (サイズの順序で) 繰り返し処理します。
ボリュームアクセスモードは、ボリュームの機能を表すものです。これらは強制される制約ではありません。リソースの無効な使用によって発生する実行時エラーについては、ストレージプロバイダーが責任を負います。プロバイダーのエラーは、マウントエラーとしてランタイム時に表示されます。
以下の表では、アクセスモードをまとめています。
| アクセスモード | CLI の省略形 | 説明 |
|---|---|---|
| ReadWriteOnce |
| ボリュームはシングルノードで読み取り/書き込みとしてマウントできます。 |
| ReadWriteOncePod |
| ボリュームは、1 つのノード上の 1 つの Pod によって読み取り/書き込みとしてマウントできます。 |
| ボリュームプラグイン | ReadWriteOnce [1] | ReadWriteOncePod | ReadOnlyMany | ReadWriteMany |
|---|---|---|---|---|
| AWS EBS [2] |
✅ |
✅ |
|
|
| AWS EFS |
✅ |
✅ |
✅ |
✅ |
| LVM Storage |
✅ |
✅ |
|
|
- ReadWriteOnce (RWO) ボリュームは複数のノードにマウントできません。ノードに障害が発生すると、システムは、すでに障害が発生しているノードに割り当てられているため、割り当てられた RWO ボリュームを新規ノードにマウントすることはできません。複数割り当てのエラーメッセージが表示される場合には、シャットダウンまたはクラッシュしたノードで Pod を強制的に削除し、動的永続ボリュームの割り当て時などの重要なワークロードでのデータ損失を回避します。
- AWS EBS に依存する Pod の再作成デプロイメントストラテジーを使用します。
-
raw ブロックボリュームのみが、ファイバーチャネルおよび iSCSI の
ReadWriteMany(RWX) アクセスモードをサポートします。詳細は、「ブロックボリュームのサポート」を参照してください。 GCP hyperdisk-balanced ディスクの場合:
サポートされているアクセスモードは次のとおりです。
-
ReadWriteOnce -
ReadWriteMany
-
-
ReadWriteManyアクセスモードが有効になっているディスクでは、クローン作成とスナップショット作成は無効になっています。 -
ReadWriteMany内の単一の hyperdisk-balanced ディスクボリュームを最大 8 つのインスタンスにアタッチできます。 -
すべてのインスタンスからディスクをデタッチした場合にのみ、
ReadWriteManyでディスクのサイズを変更できます。 - その他の制限
3.3.4. フェーズ リンクのコピーリンクがクリップボードにコピーされました!
ボリュームは以下のフェーズのいずれかにあります。
| フェーズ | 説明 |
|---|---|
| Available | まだ要求にバインドされていない空きリソースです。 |
| Bound | ボリュームが要求にバインドされています。 |
| Released | 要求が削除されていますが、リソースがまだクラスターにより回収されていません。 |
| Failed | ボリュームが自動回収に失敗しています。 |
3.3.4.1. 最後のフェーズの移行時間 リンクのコピーリンクがクリップボードにコピーされました!
LastPhaseTransitionTime フィールドには、永続ボリューム (PV) が別のフェーズ (pv.Status.Phase) に移行するたびに更新されるタイムスタンプが含まれます。PV の最後のフェーズ移行の時間を確認するには、次のコマンドを実行します。
$ oc get pv <pv_name> -o json | jq '.status.lastPhaseTransitionTime'
- 1
- 最後のフェーズの移行を確認する PV の名前を指定します。
3.3.4.2. マウントオプション リンクのコピーリンクがクリップボードにコピーされました!
属性 mountOptions を使用して PV のマウント中にマウントオプションを指定できます。
以下に例を示します。
マウントオプションの例
apiVersion: v1
kind: PersistentVolume
metadata:
name: pv0001
spec:
capacity:
storage: 1Gi
accessModes:
- ReadWriteOnce
mountOptions:
- nfsvers=4.1
nfs:
path: /tmp
server: 172.17.0.2
persistentVolumeReclaimPolicy: Retain
claimRef:
name: claim1
namespace: default
- 1
- 指定のマウントオプションは、PV がディスクにマウントされている時に使用されます。
以下の PV タイプがマウントオプションをサポートします。
- AWS Elastic Block Store (EBS)
- AWS Elastic File Storage (EFS)