2.7. Amazon EC2 (ストレージ最適化: i3en.2xlarge インスタンスタイプ) での OpenShift Container Storage クラスターの作成
以下の手順を使用して、Amazon EC2(ストレージ最適化: i3en.2xlarge インスタンスタイプ)インフラストラクチャーに OpenShift Container Storage クラスターを作成します。以下が実行されます。
-
LocalVolume
CR を使用して PV を作成する -
新しい
StorageClass
を作成する
Amazon EC2 (ストレージ最適化: i3en.2xlarge インスタンスタイプ) には、2 つの NVMe (non-volatile memory express) ディスクが含まれます。この手順の例では、このインスタンスタイプと共に提供される 2 つのディスクの使用方法について説明します。
AmazonEC2 I3 の一時ストレージを使用する場合は、以下を行います。
- 3 つのアベイラビリティーゾーンを使用し、すべてのデータを失うリスクを軽減する。
- ec2:StopInstances パーミッションを持つユーザーの数を制限し、インスタンスを誤ってシャットダウンすることを回避する。
OpenShift Container Storage の永続ストレージに Amazon EC2 I3 の一時ストレージを使用することは推奨されません。3 つのノードをすべて停止するとデータ損失が発生する可能性があるためです。
Amazon EC2 I3 の一時ストレージは、以下のようなシナリオでのみ使用することが推奨されます。
- 特定のデータ処理 (data crunching) のためにデータがある場所からコピーされるクラウドバースト (時間に制限がある) が想定される場合。
- 開発環境またはテスト環境が想定される場合。
ローカルストレージ Operator を使用した Amazon EC2 ストレージ最適化 i3en.2xlarge インスタンスの OpenShift Container Storage のインストール機能はテクノロジープレビュー機能です。テクノロジープレビュー機能は Red Hat の実稼働環境でのサービスレベルアグリーメント (SLA) ではサポートされていないため、Red Hat では実稼働環境での使用を推奨していません。Red Hat は実稼働環境でこれらを使用することを推奨していません。これらの機能は、近々発表予定の製品機能をリリースに先駆けてご提供することにより、お客様は機能性をテストし、開発プロセス中にフィードバックをお寄せいただくことができます。
前提条件
- ローカルストレージデバイスを使用した 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 I3 インスタンスには 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 が表示される必要があります。ワークノードごとに利用可能な 2 つのストレージデバイス (各ノードに 2.3 TiB のサイズが設定される) について説明している、利用可能なストレージデバイスの検索についてのセクションの例を参照してください。
$ 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
は、以下の手順でStorageCluster
PVC を提供するために使用されます。$ oc get sc | grep localblock
出力例:
NAME PROVISIONER RECLAIMPOLICY VOLUMEBINDINGMODE ALLOWVOLUMEEXPANSION AGE localblock kubernetes.io/no-provisioner Delete WaitForFirstConsumer false 15m
ローカルストレージ Operator で作成される PV を消費するために
localblock
StorageClass を使用する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 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: limits: cpu: 2 memory: 5Gi requests: cpu: 1 memory: 5Gi
重要OSD でノード全体に Guaranteed サイズが保証されるようにするには、
storageDeviceSets
のストレージサイズを、ノードで作成される PV のサイズ以下に指定する必要があります。StorageCluster
CR を作成します。$ oc create -f ocs-cluster-service.yaml
出力例
storagecluster.ocs.openshift.io/ocs-cluster-service created
検証手順
OpenShift Container Storage インストールの検証について参照してください。