3.6. ブロックボリュームのサポート
raw ブロックボリュームは、アプリケーションがパフォーマンスを向上させるために直接アクセスするファイルシステムのないストレージです。volumeMode: 永続ボリュームとクレームをブロックし、特権コンテナーを設定します。ストレージプロバイダーのサポートは、静的のみ、動的のみ、両方、またはなしによって異なります。
raw ブロックボリュームを使用する Pod は、特権付きコンテナーを許可するように設定する必要があります。
以下の表は、ブロックボリュームをサポートするボリュームプラグインを表示しています。
| ボリュームプラグイン | 手動のプロビジョニング | 動的なプロビジョニング | フルサポート |
|---|---|---|---|
| Amazon Elastic Block Store (Amazon EBS) | ✅ | ✅ | ✅ |
| Amazon Elastic File Storage (Amazon EFS) | |||
| Azure Disk | ✅ | ✅ | ✅ |
| Azure File | |||
| Cinder | ✅ | ✅ | ✅ |
| Fibre Channel | ✅ | ✅ | |
| GCP | ✅ | ✅ | ✅ |
| HostPath | |||
| IBM Cloud Block Storage ボリューム | ✅ | ✅ | ✅ |
| iSCSI | ✅ | ✅ | |
| Local volume | ✅ | ✅ | |
| LVM Storage | ✅ | ✅ | ✅ |
| NFS | |||
| Red Hat OpenShift Data Foundation | ✅ | ✅ | ✅ |
| CIFS/SMB | |||
| VMware vSphere | ✅ | ✅ | ✅ |
手動でプロビジョニングできるものの、完全にサポートされていないブロックボリュームの使用は、テクノロジープレビュー機能としてのみ提供されます。テクノロジープレビュー機能は、Red Hat 製品のサービスレベルアグリーメント (SLA) の対象外であり、機能的に完全ではないことがあります。Red Hat は、実稼働環境でこれらを使用することを推奨していません。テクノロジープレビュー機能は、最新の製品機能をいち早く提供して、開発段階で機能のテストを行い、フィードバックを提供していただくことを目的としています。
Red Hat のテクノロジープレビュー機能のサポート範囲に関する詳細は、テクノロジープレビュー機能のサポート範囲 を参照してください。
3.6.1. ブロックボリュームの例 リンクのコピーリンクがクリップボードにコピーされました!
raw ブロックボリュームの例は、ファイルシステムなしでブロックストレージデバイスに直接アクセスする必要があるアプリケーションの設定を示しています。このアプローチは、従来のファイルシステム層をバイパスして、低レベルのストレージ制御を必要とするデータベースやその他のアプリケーションで一般的に使用されます。
この例では、ブロックボリュームストレージに不可欠な 3 つのコンポーネントを設定する方法を示します。
-
PersistentVolume(PV) withvolumeMode: raw ブロックストレージリソースを定義するブロック。 -
volumeMode:Blockを設定してブロックストレージを要求するPersistentVolumeClaim(PVC)。 -
ファイルシステムボリュームに使用される一般的な volumeMounts および mountPath の代わりに、volumeDevices および devicePath を使用してブロックデバイスをマウントする Pod 仕様。
以下の参照表は、volumeMode の許容値 (デフォルトは Filesystem、Block は明示的に設定する必要があります) と、PV と PVC 間のバインディングシナリオを示しています。これらのバインディングルールを理解することが重要です。PV と PVC の両方で volumeMode: Block を指定して BIND を成功させる必要があります。ファイルシステム PVC との Block PV などのボリュームモードが一致しないと、バインディングが妨げられ、Pod スケジューリングが失敗する可能性があります。
PV の例
apiVersion: v1
kind: PersistentVolume
metadata:
name: block-pv
spec:
capacity:
storage: 10Gi
accessModes:
- ReadWriteOnce
volumeMode: Block
persistentVolumeReclaimPolicy: Retain
fc:
targetWWNs: ["50060e801049cfd1"]
lun: 0
readOnly: false
spec.volumeMode を Block に設定して、この PV が raw ブロックボリュームであることを示します。
PVC の例
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
name: block-pvc
spec:
accessModes:
- ReadWriteOnce
volumeMode: Block
resources:
requests:
storage: 10Gi
spec.volumeMode を Block に設定して、raw ブロック PVC が要求されていることを示します。
Pod の仕様例
apiVersion: v1
kind: Pod
metadata:
name: pod-with-block-volume
spec:
containers:
- name: fc-container
image: fedora:26
command: ["/bin/sh", "-c"]
args: [ "tail -f /dev/null" ]
volumeDevices:
- name: data
devicePath: /dev/xvda
volumes:
- name: data
persistentVolumeClaim:
claimName: block-pvc
-
spec.container.volumeDevices:volumeMountsの代わりに、このパラメーターがブロックデバイスに使用されます。PersistentVolumeClaimソースのみを raw ブロックボリュームと共に使用できます。 -
spec.container.volumeDevices.devicePath: このパラメーターは、mountPath の代わりに、raw ブロックがシステムにマップされている物理デバイスへのパスを表します。 -
spec.volumes.persistentVolumeClaim.claimName: ボリュームソースのタイプはpersistentVolumeClaimで、PVC の名前と想定どおり一致している必要があります。
| 値 | デフォルト |
|---|---|
| Filesystem | はい |
| Block | いいえ |
PV volumeMode | PVC volumeMode | バインディングの結果 |
|---|---|---|
| Filesystem | Filesystem | バインド |
| Unspecified | Unspecified | バインド |
| Filesystem | Unspecified | バインド |
| Unspecified | Filesystem | バインド |
| Block | Block | バインド |
| Unspecified | Block | バインドなし |
| Block | Unspecified | バインドなし |
| Filesystem | Block | バインドなし |
| Block | Filesystem | バインドなし |
値を指定しないと、Filesystem のデフォルト値が指定されます。