This documentation is for a release that is no longer maintained
See documentation for the latest supported version 3 or the latest supported version 4.4.3. StorageClass の定義
現時点で、StorageClass オブジェクトはグローバルスコープオブジェクトであり、cluster-admin または storage-admin ユーザーによって作成される必要があります。
ClusterStorageOperator は、使用されるプラットフォームによってデフォルトの StorageClass をインストールする可能性があります。この StorageClass は Operator によって所有され、制御されます。アノテーションとラベルを定義するほかは、これを削除したり、変更したりすることはできません。異なる動作が必要な場合は、カスタム StorageClass を定義する必要があります。
以下のセクションでは、StorageClass の基本オブジェクトの定義とサポートされている各プラグインタイプの具体的な例について説明します。
4.3.1. 基本 StorageClass オブジェクト定義 リンクのコピーリンクがクリップボードにコピーされました!
以下のリソースは、StorageClass を設定するために使用するパラメーターおよびデフォルト値を示しています。この例では、AWS ElasticBlockStore (EBS) オブジェクト定義を使用します。
StorageClass 定義例
4.3.2. StorageClass のアノテーション リンクのコピーリンクがクリップボードにコピーされました!
StorageClass をクラスター全体のデフォルトとして設定するには、以下のアノテーションを StorageClass のメタデータに追加します。
storageclass.kubernetes.io/is-default-class: "true"
storageclass.kubernetes.io/is-default-class: "true"
以下は例になります。
これにより、特定のボリュームを指定しない Persistent Volume Claim (永続ボリューム要求、PVC) が デフォルト StorageClass によって自動的にプロビジョニングされるようになります。
ベータアノテーションの storageclass.beta.kubernetes.io/is-default-class は依然として使用可能ですが、今後のリリースで削除される予定です。
StorageClass の記述を設定するには、以下のアノテーションを StorageClass のメタデータに追加します。
kubernetes.io/description: My StorageClass Description
kubernetes.io/description: My StorageClass Description
以下は例になります。
4.3.3. OpenStack Cinder オブジェクトの定義 リンクのコピーリンクがクリップボードにコピーされました!
cinder-storageclass.yaml
4.3.4. AWS Elastic Block Store (EBS) オブジェクト定義 リンクのコピーリンクがクリップボードにコピーされました!
aws-ebs-storageclass.yaml
- 1
- (必須)
io1、gp2、sc1、st1から選択します。デフォルトはgp2です。有効な Amazon Resource Name (ARN) 値については、AWS のドキュメント を参照してください。 - 2
- (オプション) io1 ボリュームのみ。1 GiB あたり 1 秒あたりの I/O 処理数。AWS ボリュームプラグインは、この値と要求されたボリュームのサイズを乗算してボリュームの IOPS を算出します。値の上限は、AWS でサポートされる最大値である 20,000 IOPS です。詳細については、AWS のドキュメントを参照してください。
- 3
- (オプション) EBS ボリュームを暗号化するかどうかを示します。有効な値は
trueまたはfalseです。 - 4
- (オプション) ボリュームを暗号化する際に使用するキーの完全な ARN。値を指定しない場合でも
encyptedがtrueに設定されている場合は、AWS によってキーが生成されます。有効な ARN 値については、AWS のドキュメントを参照してください。 - 5
- (オプション) 動的にプロビジョニングされたボリュームで作成されるファイルシステム。この値は、動的にプロビジョニングされる永続ボリュームの
fsTypeフィールドにコピーされ、ボリュームの初回マウント時にファイルシステムが作成されます。デフォルト値はext4です。
4.3.5. Azure Disk オブジェクト定義 リンクのコピーリンクがクリップボードにコピーされました!
azure-advanced-disk-storageclass.yaml
- 1
- Azure ストレージアカウントの名前。これはクラスターと同じリソースグループに存在している必要があります。ストレージアカウントを指定した場合、
locationは無視されます。ストレージアカウントを指定しない場合、新しいストレージアカウントがクラスターと同じリソースグループに作成されます。storageAccountを指定する場合は、kindの値はDedicatedでなければなりません。 - 2
- Azure ストレージアカウントの SKU の層。デフォルトは空です。プレミアム VM は
Standard_LRSディスクとPremium_LRSディスクの両方を割り当て、標準 VM はStandard_LRSディスクのみを、マネージド VM はマネージドディスクのみを、アンマネージド VM はアンマネージドディスクのみを割り当てることができます。 - 3
- 許容値は、
Shared(デフォルト)、DedicatedおよびManagedです。-
kindがSharedに設定されている場合は、Azure は、クラスターと同じリソースグループにあるいくつかの共有ストレージアカウントで、アンマネージドディスクをすべて作成します。 -
kindがManagedに設定されている場合は、Azure は新しいマネージドディスクを作成します。 kindがDedicatedに設定されており、storageAccountが指定されている場合には、Azure は、クラスターと同じリソースグループ内にある新規のアンマネージドディスク用に、指定のストレージアカウントを使用します。これを機能させるには、以下が前提となります。- 指定のストレージアカウントが、同じリージョン内にあること。
- Azure Cloud Provider にストレージアカウントへの書き込み権限があること。
-
kindがDedicatedに設定されており、storageAccountが指定されていない場合には、Azure はクラスターと同じリソースグループ内の新規のアンマネージドディスク用に、新しい専用のストレージアカウントを作成します。
-
4.3.6. Azure File のオブジェクト定義 リンクのコピーリンクがクリップボードにコピーされました!
Azure File StorageClass はシークレットを使用して Azure ストレージアカウント名と Azure ファイル共有の作成に必要なストレージアカウントキーを保存します。これらのパーミッションは、以下の手順の一部として作成されます。
手順
シークレットの作成および表示を可能にする ClusterRole を定義します。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
- シークレットを表示し、作成するための ClusterRole の名前。
ClusterRole を ServiceAccount に追加します。
oc adm policy add-cluster-role-to-user <persistent-volume-binder-role> system:serviceaccount:kube-system:persistent-volume-binder
$ oc adm policy add-cluster-role-to-user <persistent-volume-binder-role> system:serviceaccount:kube-system:persistent-volume-binderCopy to Clipboard Copied! Toggle word wrap Toggle overflow Azure File StorageClass を作成します。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
- StorageClass の名前。PersistentVolumeClaim は、関連する PersistentVolume をプロビジョニングするためにこの StorageClass を使用します。
- 2
eastusなどの Azure ストレージアカウントの場所。デフォルトは空であり、新規 Azure ストレージアカウントが OpenShift Container Platform クラスターの場所に作成されます。- 3
- SKU は、
Standard_LRSなどの Azure ストレージアカウントの層になります。デフォルトは空です。つまり、新しい Azure ストレージアカウントはStandard_LRSSKU で作成されます。 - 4
- Azure ストレージアカウントの名前。ストレージアカウントが提供されると、
skuNameおよびlocationは無視されます。ストレージアカウントを指定しない場合、StorageClass は、定義されたskuNameとlocationに一致するアカウントのリソースグループに関連付けられたストレージアカウントを検索します。
4.3.6.1. Azure File を使用する場合の考慮事項 リンクのコピーリンクがクリップボードにコピーされました!
以下のファイルシステム機能は、デフォルトの Azure File StorageClass ではサポートされません。
- シンボリックリンク
- ハードリンク
- 拡張属性
- スパースファイル
- 名前付きパイプ
また、Azure File がマウントされるディレクトリーの所有者 ID (UID) は、コンテナーのプロセス UID とは異なります。uid マウントオプションは StorageClass に指定して、マウントされたディレクトリーに使用する特定のユーザー ID を定義できます。
以下の StorageClass は、マウントされたディレクトリーのシンボリックリンクを有効にした状態で、ユーザーおよびグループ ID を変更する方法を示しています。
4.3.7. GCE PersistentDisk (gcePD) オブジェクトの定義 リンクのコピーリンクがクリップボードにコピーされました!
gce-pd-storageclass.yaml
- 1
pd-standardまたはpd-ssdのいずれかを選択します。デフォルトはpd-ssdです。
4.3.8. VMWare vSphere オブジェクトの定義 リンクのコピーリンクがクリップボードにコピーされました!
vsphere-storageclass.yaml
- 1
- OpenShift Container Platform で VMware vSphere を使用する方法の詳細については、VMware vSphere のドキュメントを参照してください。
- 2
diskformat:thin、zeroedthickおよびeagerzeroedthickはすべて有効なディスクフォーマットです。ディスクフォーマットの種類に関する詳細は、vSphere のドキュメントを参照してください。デフォルト値はthinです。
4.3.9. Red Hat OpenShift Container Storage オブジェクト定義 リンクのコピーリンクがクリップボードにコピーされました!
Red Hat OpenShift Container Storage を使用する場合、動的ボリュームプロビジョニングのストレージクラスは、ストレージクラスの作成と一覧表示の確認について説明されているように、Red Hat OpenShift Container Storage 4.2 が Operator Hub からデプロイされる際に作成されます。