3.3.3. アクセスモード
永続ボリュームは、リソースプロバイダーでサポートされるすべての方法でホストにマウントできます。プロバイダーには各種の機能があり、それぞれの PV のアクセスモードは特定のボリュームでサポートされる特定のモードに設定されます。たとえば、NFS は複数の読み取り/書き込みクライアントをサポートしますが、特定の NFS PV は読み取り専用としてサーバー上でエクスポートされる可能性があります。それぞれの PV は、その特定の PV の機能を記述するアクセスモードの独自のセットを取得します。
要求は、同様のアクセスモードのボリュームに一致します。一致する条件はアクセスモードとサイズの 2 つの条件のみです。要求のアクセスモードは要求 (request) を表します。そのため、より多くのアクセスを付与することはできますが、アクセスを少なくすることはできません。たとえば、要求により RWO が要求されるものの、利用できる唯一のボリュームが NFS PV (RWO+ROX+RWX) の場合に、要求は RWO をサポートする NFS に一致します。
直接的なマッチングが常に最初に試行されます。ボリュームのモードは、要求モードと一致するか、要求した内容以上のものを含む必要があります。サイズは予想されるものより多いか、これと同等である必要があります。2 つのタイプのボリューム (NFS および iSCSI など) のどちらにも同じセットのアクセスモードがある場合、それらのいずれかがそれらのモードを持つ要求に一致する可能性があります。ボリュームのタイプ間で順序付けすることはできず、タイプを選択することはできません。
同じモードのボリュームはすべて分類され、サイズ別 (一番小さいものから一番大きいもの順) に分類されます。バインダーは一致するモードのグループを取得し、1 つのサイズが一致するまでそれぞれを (サイズの順序で) 繰り返し処理します。
ボリュームアクセスモードは、ボリュームの機能を表すものです。これらは強制される制約ではありません。リソースの無効な使用によって発生する実行時エラーについては、ストレージプロバイダーが責任を負います。プロバイダーのエラーは、実行時にマウントエラーとして表示されます。
たとえば、NFS は ReadWriteOnce アクセスモードを提供します。ボリュームの ROX 機能を使用する場合は、要求に ReadOnlyMany マークを付けます。
iSCSI およびファイバーチャネルボリュームには現在、フェンシングメカニズムがありません。ボリュームが一度に 1 つのノードでのみ使用されるようにする必要があります。ノードの drain (Pod の退避) などの特定の状況では、ボリュームは 2 つのノードで同時に使用できます。ノードの drain (Pod の退避) を実行する前に、そのボリュームを使用している Pod を削除します。
以下の表では、アクセスモードをまとめています。
| アクセスモード | CLI の省略形 | 説明 |
|---|---|---|
| ReadWriteOnce |
| ボリュームはシングルノードで読み取り/書き込みとしてマウントできます。 |
| ReadWriteOncePod [1] |
| ボリュームは、1 つのノード上の 1 つの Pod によって読み取り/書き込みとしてマウントできます。 |
| ReadOnlyMany |
| ボリュームは数多くのノードで読み取り専用としてマウントできます。 |
| ReadWriteMany |
| ボリュームは数多くのノードで読み取り/書き込みとしてマウントできます。 |
- RWOP は SELinux マウント機能を使用します。この機能はドライバーに依存しており、ODF、AWS EBS、Azure Disk、GCP PD、IBM Cloud Block Storage ボリューム、Cinder、vSphere ではデフォルトで有効になっています。サードパーティーのドライバーについては、ストレージベンダーにお問い合わせください。
| ボリュームプラグイン | ReadWriteOnce [1] | ReadWriteOncePod | ReadOnlyMany | ReadWriteMany |
|---|---|---|---|---|
| AWS EBS [2] | ✅ | ✅ | ||
| AWS EFS | ✅ | ✅ | ✅ | ✅ |
| Azure File | ✅ | ✅ | ✅ | ✅ |
| Azure Disk | ✅ | ✅ | ||
| CIFS/SMB | ✅ | ✅ | ✅ | ✅ |
| Cinder | ✅ | ✅ | ||
| Fibre Channel | ✅ | ✅ | ✅ | ✅ [3] |
| GCP Persistent Disk | ✅ [4] | ✅ | ✅ | ✅ [4] |
| GCP Filestore | ✅ | ✅ | ✅ | ✅ |
| HostPath | ✅ | ✅ | ||
| IBM Power Virtual Server Disk | ✅ | ✅ | ✅ | ✅ |
| IBM Cloud® VPC Disk | ✅ | ✅ | ||
| iSCSI | ✅ | ✅ | ✅ | ✅ [3] |
| Local volume | ✅ | ✅ | ||
| LVM Storage | ✅ | ✅ | ||
| NFS | ✅ | ✅ | ✅ | ✅ |
| OpenStack Manila | ✅ | ✅ | ||
| Red Hat OpenShift Data Foundation | ✅ | ✅ | ✅ | |
| VMware vSphere | ✅ | ✅ | ✅ [5] |
- ReadWriteOnce (RWO) ボリュームは複数のノードにマウントできません。ノードに障害が発生すると、システムは、すでに障害が発生しているノードに割り当てられているため、割り当てられた RWO ボリュームを新規ノードにマウントすることはできません。複数割り当てのエラーメッセージが表示される場合には、シャットダウンまたはクラッシュしたノードで Pod を強制的に削除し、動的永続ボリュームの割り当て時などの重要なワークロードでのデータ損失を回避します。
- AWS EBS に依存する Pod の再作成デプロイメントストラテジーを使用します。
-
raw ブロックボリュームのみが、ファイバーチャネルおよび iSCSI の
ReadWriteMany(RWX) アクセスモードをサポートします。詳細は、「ブロックボリュームのサポート」を参照してください。 GCP hyperdisk-balanced ディスクの場合:
サポートされているアクセスモードは次のとおりです。
-
ReadWriteOnce -
ReadWriteMany
-
-
ReadWriteManyアクセスモードが有効になっているディスクでは、クローン作成とスナップショット作成は無効になっています。 -
ReadWriteMany内の単一の hyperdisk-balanced ディスクボリュームを最大 8 つのインスタンスにアタッチできます。 -
すべてのインスタンスからディスクをデタッチした場合にのみ、
ReadWriteManyでディスクのサイズを変更できます。 - その他の制限
-
基盤となる vSphere 環境が vSAN ファイルサービスをサポートしている場合、OpenShift Container Platform によってインストールされた vSphere Container Storage Interface (CSI) Driver Operator は ReadWriteMany (RWX) ボリュームのプロビジョニングをサポートします。vSAN ファイルサービスが設定されていない場合に RWX を要求すると、ボリュームの作成に失敗し、エラーがログに記録されます。詳細は、"Using Container Storage Interface"
"VMware vSphere CSI Driver Operator" を参照してください。