2.6. VMware での OpenShift Container Storage クラスターの作成

以下の手順を使用して、VMware インフラストラクチャーにストレージクラスターを作成します。

VMware は、以下の 3 つのタイプのローカルストレージをサポートします。

  • 仮想マシンディスク(VMDK)
  • raw デバイスマッピング(RDM)
  • VMDirectPath I/O

前提条件

  • ローカルストレージデバイスを使用した OpenShift Container Storage のインストールの要件に記載されるすべての要件を満たしていることを確認します。
  • VMware でローカルストレージデバイスを使用するために、各ノードに同じストレージタイプおよびサイズが割り当てられた 3 つのワーカーノードが必要です。
  • VMware の仮想マシンでは、disk.EnableUUID オプションが TRUE に設定されていることを確認してください。仮想マシンを設定するには vCenter アカウントの権限が必要です。詳細は、「 Required vCenter account privileges 」を参照してください。disk.EnableUUID オプションを設定するには、Customize hardware タブで VM OptionsAdvanced オプションを使用します。詳細は、vSphere での Red Hat Enterprise Linux CoreOS(RHCOS)マシンの作成 について参照してください。
  • OpenShift Container Platform ワーカーノードに OpenShift Contaner Storage ラベルを付けられていることを確認します。

    $ oc get nodes -l cluster.ocs.openshift.io/openshift-storage -o jsonpath='{range .items[*]}{.metadata.name}{"\n"}'

各ノードでストレージデバイスを特定するには、利用可能なストレージデバイスの検索について参照してください。

手順

  1. ブロック PV の LocalVolume CR を作成します。

    OpenShift Container Storage ラベルをノードセレクターとして使用する LocalVolume CR local-storage-block.yaml の例:

    apiVersion: local.storage.openshift.io/v1
    kind: LocalVolume
    metadata:
      name: local-block
      namespace: local-storage
      labels:
        app: ocs-storagecluster
    spec:
      nodeSelector:
        nodeSelectorTerms:
        - matchExpressions:
            - key: cluster.ocs.openshift.io/openshift-storage
              operator: In
              values:
              - ""
      storageClassDevices:
        - storageClassName: localblock
          volumeMode: Block
          devicePaths:
            - /dev/disk/by-id/scsi-36000c2991c27c2e5ba7c47d1e4352de2   # <-- modify this line
            - /dev/disk/by-id/scsi-36000c29682ca9e347926406711f3dc4e   # <-- modify this line
            - /dev/disk/by-id/scsi-36000c296aaf03a9b1e4b01d086bc6348   # <-- modify this line
  2. ブロック PV の LocalVolume CR を作成します。

    $ oc create -f local-storage-block.yaml

    出力例:

    localvolume.local.storage.openshift.io/local-block created
  3. Pod が作成されているかどうかを確認します。

    $ oc -n local-storage get pods

    出力例:

    NAME                                      READY   STATUS    RESTARTS   AGE
    local-block-local-diskmaker-5brzv         1/1     Running   0          31s
    local-block-local-diskmaker-8sxcs         1/1     Running   0          31s
    local-block-local-diskmaker-s7s9p         1/1     Running   0          31s
    local-block-local-provisioner-9cbw8       1/1     Running   0          31s
    local-block-local-provisioner-cpddv       1/1     Running   0          31s
    local-block-local-provisioner-f6h7h       1/1     Running   0          31s
    local-storage-operator-75b9776b75-vwdzh   1/1     Running   0          2m47s
  4. 新規の localblock StorageClass を確認します。

    $ oc get sc | grep localblock

    出力例:

    NAME            PROVISIONER                    RECLAIMPOLICY
    VOLUMEBINDINGMODE ALLOWVOLUMEEXPANSION     AGE
    localblock      kubernetes.io/no-provisioner   Delete
    WaitForFirstConsumer  false                3h47m
  5. Available のステータスで作成されている PV を確認します。

    $ oc get pv

    出力例:

    NAME                CAPACITY   ACCESS MODES   RECLAIM POLICY   STATUS      CLAIM   STORAGECLASS   REASON   AGE
    local-pv-150fdc87   2TiB      RWO            Delete           Available           localblock              2m11s
    local-pv-183bfc0a   2TiB      RWO            Delete           Available           localblock              2m11s
    local-pv-b2f5cb25   2TiB      RWO            Delete           Available           localblock              2m21s

    この例では、3 つの PV が OSD ストレージに使用されています。

  6. monDataDirHostPath および localblock StorageClass を使用する StorageCluster CR ocs-cluster-service-VMware.yaml を作成します。

    apiVersion: ocs.openshift.io/v1
    kind: StorageCluster
    metadata:
      name: ocs-storagecluster
      namespace: openshift-storage
    spec:
      manageNodes: false
      monDataDirHostPath: /var/lib/rook
      storageDeviceSets:
      - count: 1
        dataPVCTemplate:
          spec:
            accessModes:
            - ReadWriteOnce
            resources:
              requests:
                storage: 2Ti
            storageClassName: localblock
            volumeMode: Block
        name: ocs-deviceset
        placement: {}
        portable: false
        replica: 3
        resources: {}
    重要

    OSD にノード間で保証されたサイズを確保するには、storageDeviceSets のストレージサイズを、ノード上に作成された必要な PV のサイズ以下に指定する必要があります。

  7. StorageCluster CR を作成します。

    $ oc create -f ocs-cluster-service-VMware.yaml

    出力例:

    storagecluster.ocs.openshift.io/ocs-storagecluster created

検証手順

OpenShift Container Storage デプロイメントの検証について参照してください。