2.7. ベアメタルでの OpenShift Container Storage クラスターの作成

前提条件

  • ローカルストレージデバイスを使用した OpenShift Container Storage のインストールの要件に記載されるすべての要件を満たしていることを確認します。
  • ベアメタルでローカルストレージデバイスを使用するために、同じストレージタイプおよびサイズが各ノードに割り当てられた 3 つのワーカーノードが必要です (例: 2TB NVMe ハードドライブ)。
  • 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 を作成します。

    OCS ラベルをノードセレクターとして使用する 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/nvme-INTEL_SSDPEKKA128G7_BTPY81260978128A   # <-- modify this line
            - /dev/disk/by-id/nvme-INTEL_SSDPEKKA128G7_BTPY80440W5U128A   # <-- modify this line
            - /dev/disk/by-id/nvme-INTEL_SSDPEKKA128G7_BTPYB85AABDE128A   # <-- modify this line
            - /dev/disk/by-id/nvme-INTEL_SSDPEKKA128G7_BTPY0A60CB81128A   # <-- modify this line
            - /dev/disk/by-id/nvme-INTEL_SSDPEKKA128G7_BTPY0093D45E128A   # <-- modify this line
            - /dev/disk/by-id/nvme-INTEL_SSDPEKKA128G7_BTPYE46F6060128A   # <-- modify this line
  2. ブロック PV の LocalVolume CR を作成します。

    $ oc create -f local-storage-block.yaml
  3. Pod が作成されているかどうかを確認します。

    $ oc -n local-storage get pods
  4. PV が作成されているかどうかを確認します。

    $ oc get pv

    出力例:

    NAME                CAPACITY   ACCESS MODES   RECLAIM POLICY   STATUS      CLAIM   STORAGECLASS   REASON   AGE
    local-pv-150fdc87   2Ti      RWO            Delete           Available           localblock              2m11s
    local-pv-183bfc0a   2Ti      RWO            Delete           Available           localblock              2m11s
    local-pv-b2f5cb25   2Ti      RWO            Delete           Available           localblock              2m21s
  5. 新規 localblock StorageClass を確認します。

    $ oc get sc|egrep -e "localblock|NAME"

    出力例:

    NAME       PROVISIONER                  RECLAIMPOLICY
    localblock kubernetes.io/no-provisioner Delete
    
    VOLUMEBINDINGMODE    ALLOWVOLUMEEXPANSION AGE
    WaitForFirstConsumer false                4d23h
  6. localblock StorageClass と作成された 3 つの PV を使用する StorageCluster CR を作成します。
  7. monDataDirHostPath および localblock StorageClass を使用した StorageCluster CR cluster-service-metal.yaml の例。

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

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

  8. StorageCluster CR を作成します。

    $ oc create -f cluster-service-metal.yaml

    出力例:

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

検証手順

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