4.4. Cinder を使用した永続ストレージ
OpenShift Container Platform は OpenStack Cinder ボリュームをサポートします。OpenStack Cinder を使用して、OpenShift Container Platform クラスターに 永続ストレージ をプロビジョニングできます。これには、Kubernetes と OpenStack についてある程度の理解があることが前提となります。
永続ボリュームは、単一のプロジェクトまたは namespace にバインドされず、OpenShift Container Platform クラスター全体で共有できます。永続ボリューム要求はプロジェクトまたは namespace に固有のもので、ユーザーによって要求されます。
OpenShift Container Platform 4.11 以降では、Cinder インツリーボリュームプラグインと同等の CSI ドライバーに自動的に移行できます。
CSI 自動移行はシームレスに行ってください。移行をしても、永続ボリューム、永続ボリューム要求、ストレージクラスなどの既存の API オブジェクトを使用する方法は変更されません。移行の詳細は、「CSI の自動移行」を参照してください。
4.4.1. Cinder を使用した手動プロビジョニング リンクのコピーリンクがクリップボードにコピーされました!
ストレージは、ボリュームとして OpenShift Container Platform にマウントされる前に基礎となるインフラストラクチャーになければなりません。
手動プロビジョニングでは、OpenShift Container Platform が Red Hat OpenStack Platform (RHOSP) 用に設定されており、Cinder ボリューム ID がある。
4.4.1.1. 永続ボリュームの作成 リンクのコピーリンクがクリップボードにコピーされました!
OpenShift Container Platform で使用するストレージを Red Hat OpenStack Platform (RHOSP) Cinder ボリュームからプロビジョニングする永続ボリューム (PV) を作成できます。
前提条件
- OpenShift Container Platform に PV を作成する前に、PV をオブジェクト定義に定義している。
手順
オブジェクト定義をファイルに保存します。
cinder-persistentvolume.yaml
apiVersion: "v1" kind: "PersistentVolume" metadata: name: "pv0001" spec: capacity: storage: "5Gi" accessModes: - "ReadWriteOnce" cinder: fsType: "ext3" volumeID: "f37a03aa-6212-4c62-a805-9ce139fab180"各項目の説明:
metadata.name- 永続ボリューム要求または Pod によって使用されるボリュームの名前を指定します。
spec.capacity.storage- このボリュームに割り当てられるストレージの量を指定します。
spec.cinder-
Red Hat OpenStack Platform (RHOSP) Cinder ボリュームの
cinderを示します。 spec.cinder.fsType- ボリュームの初回マウント時に作成されるファイルシステムを指定します。
spec.cinder.volumeID使用する Cinder ボリュームを指定します。
重要ボリュームをフォーマットしてプロビジョニングした後には、
fstypeパラメーターの値は変更しないでください。この値を変更すると、データの損失や、Pod の障害につながる可能性があります。
前のステップで保存したオブジェクト定義ファイルを作成します。
$ oc create -f cinder-persistentvolume.yaml
4.4.1.2. 永続ボリュームのフォーマット リンクのコピーリンクがクリップボードにコピーされました!
OpenShift Container Platform は初回の使用前にフォーマットするため、フォーマットされていない Cinder ボリュームを PV として使用できます。
OpenShift Container Platform がボリュームをマウントし、これをコンテナーに渡す前に、システムは PV 定義の fsType パラメーターで指定されたファイルシステムがボリュームに含まれるかどうかをチェックします。デバイスが指定されたファイルシステムでフォーマットされていない場合、デバイスのデータはすべて消去され、デバイスはそのファイルシステムで自動的にフォーマットされます。
4.4.1.3. Cinder ボリュームセキュリティーの設定 リンクのコピーリンクがクリップボードにコピーされました!
お使いのアプリケーションで Cinder PV を使用する場合に、そのデプロイメントリソースのセキュリティーを設定します。
前提条件
-
適切な
fsGroupストラテジーを使用する SCC が作成される必要があります。
手順
サービスアカウントを作成して、そのアカウントを SCC に追加します。
$ oc create serviceaccount <service_account>$ oc adm policy add-scc-to-user <new_scc> -z <service_account> -n <project>アプリケーションのデプロイメントリソースで、サービスアカウント名と
securityContextを指定します。apiVersion: v1 kind: ReplicationController metadata: name: frontend-1 spec: replicas: 1 selector: name: frontend template: metadata: labels: name: frontend spec: containers: - image: openshift/hello-openshift name: helloworld ports: - containerPort: 8080 protocol: TCP restartPolicy: Always serviceAccountName: <service_account> securityContext: fsGroup: 7777各項目の説明:
spec.replicas- 実行する Pod のコピー数を指定します。
spec.selector- 実行する Pod のラベルセレクターを指定します。
spec.template- コントローラーが作成する Pod のテンプレートを指定します。
spec.template.metadata.labels- Pod 上のラベルを指定します。ラベルセレクターからのラベルを組み込む必要があります。
spec.template.metadata.labels.name- パラメーター拡張後の名前の最大長さは 63 文字です。
spec.template.spec.serviceAccountName- 作成したサービスアカウントを指定します。
spec.template.spec.securityContext.fsGroup-
Pod の
fsGroupを指定します。