4.3.3.3. アクセスモード
PersistentVolume
はリソースプロバイダーでサポートされるすべての方法でホストにマウントできます。プロバイダーには各種の機能があり、それぞれの PV のアクセスモードは特定のボリュームでサポートされる特定のモードに設定されます。たとえば、NFS は複数の読み取り/書き込みクライアントをサポートしますが、特定の NFS PV は読み取り専用としてサーバー上でエクスポートされる可能性があります。それぞれの PV は、その特定の PV の機能について記述するアクセスモードの独自のセットを取得します。
要求は、同様のアクセスモードのボリュームに一致します。一致する条件はアクセスモードとサイズの 2 つの条件のみです。要求のアクセスモードは要求 (request) を表します。そのため、より多くのアクセスを付与することはできますが、アクセスを少なくすることはできません。たとえば、要求により RWO が要求されるものの、利用できる唯一のボリュームが NFS PV (RWO+ROX+RWX) の場合に、要求は RWO をサポートする NFS に一致します。
直接的なマッチングが常に最初に試行されます。ボリュームのモードは、要求モードと一致するか、要求した内容以上のものを含む必要があります。また、サイズは期待値以上である必要があります。2 つのタイプのボリューム (NFS および iSCSI など) に同じアクセスモードセットがある場合には、いずれかをこれらのモードを含む要求と一致させることができます。ボリュームのタイプ間で順序付けすることはできず、タイプを選択することはできません。
同じモードが含まれるボリュームはすべて分類され、サイズ別 (一番小さいものから一番大きいもの順) に分類されます。バインダーは一致するモードのグループを取得し、1 つのサイズが一致するまでそれぞれを (サイズの順序で) 繰り返し処理します。
以下の表では、アクセスモードをまとめています。
アクセスモード | CLI の省略形 | 説明 |
---|---|---|
ReadWriteOnce |
| ボリュームは単一ノードで読み取り/書き込みとしてマウントできます。 |
ReadOnlyMany |
| ボリュームは数多くのノードで読み取り専用としてマウントできます。 |
ReadWriteMany |
| ボリュームは数多くのノードで読み取り/書き込みとしてマウントできます。 |
ボリュームの AccessModes
は、ボリュームの機能の記述子です。それらは施行されている制約ではありません。ストレージプロバイダーはリソースの無効な使用から生じるランタイムエラーに対応します。
たとえば、Ceph は ReadWriteOnce アクセスモードを提供します。ボリュームの ROX 機能を使用する必要がある場合は、要求に read-only
のマークを付ける必要があります。プロバイダーのエラーは、マウントエラーとしてランタイム時に表示されます。
iSCSI およびファイバーチャネルボリュームには現在、フェンシングメカニズムがありません。ボリュームが一度に 1 つのノードでのみ使用されるようにする必要があります。ノードのドレイン (解放) などの特定の状況では、ボリュームは 2 つのノードで同時に使用できます。ノードをドレイン (解放) する前に、まずこれらのボリュームを使用する Pod が削除されていることを確認してください。
以下の表では、異なる PV でサポートされるアクセスモードが表示されています。
ボリュームプラグイン | ReadWriteOnce | ReadOnlyMany | ReadWriteMany |
---|---|---|---|
AWS EBS | ✅ | - | - |
Azure File | ✅ | ✅ | ✅ |
Azure Disk | ✅ | - | - |
Ceph RBD | ✅ | ✅ | - |
ファイバーチャネル | ✅ | ✅ | - |
GCE Persistent Disk | ✅ | - | - |
GlusterFS | ✅ | ✅ | ✅ |
gluster-block | ✅ | - | - |
HostPath | ✅ | - | - |
iSCSI | ✅ | ✅ | - |
NFS | ✅ | ✅ | ✅ |
Openstack Cinder | ✅ | - | - |
VMWare vSphere | ✅ | - | - |
Local | ✅ | - | - |
AWS EBS、GCE 永続ディスクまたは OpenStack Cinder PV に依存する Pod には、再作成デプロイメントストラテジーを使用します。