2.5. Amazon EC2 ストレージ最適化 i3en.2xlarge インスタンスタイプでの OpenShift Container Storage クラスターの作成
以下の手順を使用して、Amazon EC2(ストレージ最適化 i3en.2xlarge インスタンスタイプ)インフラストラクチャーに OpenShift Container Storage クラスターを作成します。これには、以下が含まれます。
-
LocalVolume
CR の使用による PV の作成 -
新規
StorageClass
の作成
ローカルストレージ Operator を使用した Amazon EC2 ストレージ最適化 i3en.2xlarge インスタンスへの OpenShift Container Storage のインストールはテクノロジープレビュー機能です。テクノロジープレビュー機能は Red Hat の実稼働環境でのサービスレベルアグリーメント (SLA) ではサポートされていないため、Red Hat では実稼働環境での使用を推奨していません。Red Hat は実稼働環境でこれらを使用することを推奨していません。これらの機能は、近々発表予定の製品機能をリリースに先駆けてご提供することにより、お客様は機能性をテストし、開発プロセス中にフィードバックをお寄せいただくことができます。Red Hat OpenShift Container Storage デプロイメントでは、3 つのワーカーノードで実行されるアプリケーションやその他のワークロードを使用せずに、新規クラスターを使用することが想定されます。アプリケーションは追加のワーカーノードで実行する必要があります。
Amazon EC2 ストレージ最適化 i3en.2xlarge インスタンスタイプには、2 つの NVMe (non-volatile memory express) ディスクが含まれます。この手順の例では、このインスタンスタイプと共に提供される 2 つのディスクの使用方法について説明します。
OpenShift Container Storage 永続データには、Amazon EC2 I3 の一時ストレージを使用することは推奨されません。3 つのノードすべてを停止するとデータが損失する可能性があるためです。一時ストレージは、以下のようなシナリオでのみ使用することが推奨されます。
- 特定のデータ処理 (data crunching) のためにデータがある場所からコピーされるクラウドバースト (時間に制限がある) が想定される場合。
- 開発環境またはテスト環境が想定される場合。
Amazon EC2 I3 の一時ストレージを使用している場合は、以下を行うことが推奨されます。
- 3 つのアベイラビリティーゾーンすべてを使用し、すべてのデータを失うリスクを軽減する。
-
ec2:StopInstances
パーミッションを持つユーザーの数を制限し、インスタンスを誤ってシャットダウンすることを回避する。
前提条件
- ローカルストレージデバイスを使用した OpenShift Container Storage のインストールの要件に記載されるすべての要件を満たしていることを確認します。
OpenShift Container Platform ワーカーノードに OpenShift Contaner Storage ラベルを付けられていることを確認します。これは
nodeSelector
として使用されます。$ oc get nodes -l cluster.ocs.openshift.io/openshift-storage -o jsonpath='{range .items[*]}{.metadata.name}{"\n"}'
出力例:
ip-10-0-135-71.us-east-2.compute.internal ip-10-0-145-125.us-east-2.compute.internal ip-10-0-160-91.us-east-2.compute.internal
手順
LocalVolume
カスタムリソース (CR) を使用してストレージノードにローカル永続ボリューム (PV) を作成します。OpenShift Storage Container ラベルをノードセレクターおよび
by-id
デバイス識別子として使用するLocalVolume
CRlocal-storage-block.yaml
の例apiVersion: local.storage.openshift.io/v1 kind: LocalVolume metadata: name: local-block namespace: local-storage labels: app: ocs-storagecluster spec: tolerations: - key: "node.ocs.openshift.io/storage" value: "true" effect: NoSchedule nodeSelector: nodeSelectorTerms: - matchExpressions: - key: cluster.ocs.openshift.io/openshift-storage operator: In values: - '' storageClassDevices: - storageClassName: localblock volumeMode: Block devicePaths: - /dev/disk/by-id/nvme-Amazon_EC2_NVMe_Instance_Storage_AWS10382E5D7441494EC # <-- modify this line - /dev/disk/by-id/nvme-Amazon_EC2_NVMe_Instance_Storage_AWS1F45C01D7E84FE3E9 # <-- modify this line - /dev/disk/by-id/nvme-Amazon_EC2_NVMe_Instance_Storage_AWS136BC945B4ECB9AE4 # <-- modify this line - /dev/disk/by-id/nvme-Amazon_EC2_NVMe_Instance_Storage_AWS10382E5D7441464EP # <-- modify this line - /dev/disk/by-id/nvme-Amazon_EC2_NVMe_Instance_Storage_AWS1F45C01D7E84F43E7 # <-- modify this line - /dev/disk/by-id/nvme-Amazon_EC2_NVMe_Instance_Storage_AWS136BC945B4ECB9AE8 # <-- modify this line
各 Amazon EC2 i3en.2xlarge インスタンスには 2 つのディスクがあり、この例では両方のディスクを使用します。
LocalVolume
CR を作成します。$ oc create -f local-storage-block.yaml
出力例:
localvolume.local.storage.openshift.io/local-block created
Pod が作成されているかどうかを確認します。
$ oc -n local-storage get pods
出力例:
NAME READY STATUS RESTARTS AGE local-block-local-diskmaker-59rmn 1/1 Running 0 15m local-block-local-diskmaker-6n7ct 1/1 Running 0 15m local-block-local-diskmaker-jwtsn 1/1 Running 0 15m local-block-local-provisioner-6ssxc 1/1 Running 0 15m local-block-local-provisioner-swwvx 1/1 Running 0 15m local-block-local-provisioner-zmv5j 1/1 Running 0 15m local-storage-operator-7848bbd595-686dg 1/1 Running 0 15m
PV が作成されているかどうかを確認します。
3 つのワーカーノード上の各ローカルストレージデバイスの新規 PV が表示される必要があります。利用可能なストレージデバイスの検索についてのセクションの例を参照してください。このセクションには、サイズが 2328Gi のワーカーノードごとに利用可能な 2 つのストレージデバイスが示されています。
$ oc get pv
出力例:
NAME CAPACITY ACCESS MODES RECLAIM POLICY STATUS CLAIM STORAGECLASS REASON AGE local-pv-1a46bc79 2328Gi RWO Delete Available localblock 14m local-pv-429d90ee 2328Gi RWO Delete Available localblock 14m local-pv-4d0a62e3 2328Gi RWO Delete Available localblock 14m local-pv-55c05d76 2328Gi RWO Delete Available localblock 14m local-pv-5c7b0990 2328Gi RWO Delete Available localblock 14m local-pv-a6b283b 2328Gi RWO Delete Available localblock 14m
LocalVolume
CR の作成により新規のStorageClass
が作成されているかどうかを確認します。このStorageClass
は、PVC を作成するためにStorageCluster
を作成する間に使用されます。$ oc get sc | grep localblock
出力例:
NAME PROVISIONER RECLAIMPOLICY VOLUMEBINDINGMODE ALLOWVOLUMEEXPANSION AGE localblock kubernetes.io/no-provisioner Delete WaitForFirstConsumer false 3h47m
localblock
StorageClass および作成される PV を使用するStorageCluster
CR を作成します。monDataDirHostPath
およびlocalblock
StorageClass を使用するStorageCluster
CRocs-cluster-service.yaml
の例。apiVersion: ocs.openshift.io/v1 kind: StorageCluster metadata: name: ocs-storagecluster namespace: openshift-storage spec: manageNodes: false resources: mds: limits: cpu: 3 memory: 8Gi requests: cpu: 1 memory: 8Gi noobaa-core: limits: cpu: 2 memory: 8Gi requests: cpu: 1 memory: 8Gi noobaa-db: limits: cpu: 2 memory: 8Gi requests: cpu: 1 memory: 8Gi monDataDirHostPath: /var/lib/rook storageDeviceSets: - count: 2 dataPVCTemplate: spec: accessModes: - ReadWriteOnce resources: requests: storage: 2328Gi storageClassName: localblock volumeMode: Block name: ocs-deviceset placement: {} portable: false replica: 3 resources: {}
重要OSD にノード間で保証されたサイズを確保するには、
storageDeviceSets
のストレージサイズを、ノード上に作成された必要な PV のサイズ以下に指定する必要があります。StorageCluster
CR を作成します。$ oc create -f ocs-cluster-service.yaml
出力例
storagecluster.ocs.openshift.io/ocs-cluster-service created
検証手順
OpenShift Container Storage デプロイメントの検証について参照してください。