IBM Z を使用した OpenShift Container Storage のデプロイおよび管理

Red Hat OpenShift Container Storage 4.6

IBM Z 環境のインストールおよび設定方法

概要

Red Hat OpenShift Container Storage 4.6 をインストールし、IBM Z インフラストラクチャーでローカルストレージを使用する方法については、本書をお読みください。
注記
While this document refers only to IBM Z, all information in it also applies to LinuxONE.
重要
IBM Z インフラストラクチャーでの OpenShift Container Storage のデプロイおよび管理機能はテクノロジープレビュー機能です。テクノロジープレビュー機能は Red Hat の実稼働環境でのサービスレベルアグリーメント (SLA) ではサポートされていないため、Red Hat では実稼働環境での使用を推奨していません。Red Hat は実稼働環境でこれらを使用することを推奨していません。これらの機能は、近々発表予定の製品機能をリリースに先駆けてご提供することにより、お客様は機能性をテストし、開発プロセス中にフィードバックをお寄せいただくことができます。

はじめに

Red Hat OpenShift Container Storage 4.6 は、接続環境または非接続環境での既存の Red Hat OpenShift Container Platform (RHOCP) IBM Z クラスターへのデプロイメントをサポートし、プロキシー環境に対する追加設定なしのサポートを提供します。

注記

IBM Z では、内部の Openshift Container Storage クラスターのみがサポートされます。デプロイメントの要件についての詳細は、デプロイメントのプランニング を参照してください。

OpenShift Container Storage をデプロイするには、お使いの環境に適切なデプロイメントプロセスを実行します。

第1章 ローカルストレージデバイスを使用したデプロイメント

ローカルストレージデバイスを使用して OpenShift Container Storage を OpenShift Container Platform にデプロイすると、内部クラスターリソースを作成するオプションが提供されます。このデプロイメント方法に従って、ローカルストレージを使用して OpenShift Container Platform アプリケーションの永続ボリュームをサポートするようにします。

このセクションを使用して、OpenShift Container Platform がすでにインストールされている IBM Z インフラストラクチャーに OpenShift Container Storage をインストールします。

ローカルストレージデバイスを使用した OpenShift Container Storage をデプロイするには、以下を実行します。

1.1. ローカルストレージデバイスを使用した OpenShift Container Storage のインストール要件

  • OpenShift Container Platform 4.6 以上のバージョンにアップグレードしてから OpenShift Container Storage 4.6 をデプロイする必要があります。詳細は、Updating OpenShift Container Platform clusters ガイドを参照してください。
  • ローカルストレージ Operator が Red Hat OpenShift Container Storage で完全にサポートされるために、ローカルストレージ Operator のバージョンは Red Hat OpenShift Container Platform バージョンと一致する必要があります。ローカルストレージ Operator は、Red Hat OpenShift Container Platform のアップグレード時にアップグレードされません。
  • クラスターに、それぞれローカルに接続されたストレージデバイスを持つ OpenShift Container Platform ワーカーノードを 3 つ以上設定する必要があります。

    • 3 つのノードのそれぞれには、OpenShift Container Storage で使用できる raw ブロックデバイスが少なくとも 1 つ必要です。
    • 使用するデバイスは空である必要があります。つまり、ディスクには永続ボリューム (PV)、ボリュームグループ (VG)、または論理ボリューム (LV) がない状態でなければなりません。
  • 以前のバージョンから OpenShift Container Storage 4.6 にアップグレードした場合、アップグレード後の手順に従って LocalVolumeDiscovery オブジェクトを作成していることを確認します。詳細は、更新後の設定の変更 について参照してください。
  • 以前のバージョンの OpenShift Container Storage からアップグレードした場合は、更新後の設定の変更 で説明されているように、LocalVolumeSet オブジェクトを作成し、デバイスの自動プロビジョニングを有効にします。
  • ノードの最小要件については、プランニングガイドの リソース要件 セクションを参照してください。

1.2. Red Hat OpenShift Container Storage Operator のインストール

Red Hat OpenShift Container Storage は、Red Hat OpenShift Container Platform Operator Hub を使用してインストールできます。ハードウェアおよびソフトウェアの要件に関する詳細は、 デプロイメントのプランニング を参照してください。

前提条件

  • OpenShift Container Platform (RHOCP) クラスターにログインしている必要があります。
  • RHOCP クラスターにワーカーノードが少なくとも 3 つ必要です。
注記
  • OpenShift Container Storage のクラスター全体でのデフォルトノードセレクターを上書きする必要がある場合は、コマンドラインインターフェイスで以下のコマンドを使用し、openshift-storage namespace の空のノードセレクターを指定できます。

    $ oc annotate namespace openshift-storage openshift.io/node-selector=
  • ノードに Red Hat OpenShift Container Storage リソースのみがスケジュールされるように、そのノードに infra のテイントを設定します。これにより、サブスクリプションコストを節約できます。詳細は、ストレージリソースの管理および割り当てガイドの Red Hat OpenShift Container Storage の専用ワーカーノードを使用する方法 の章を参照してください。

手順

  1. Operators → OperatorHub をクリックします。
  2. Filter by keyword テキストボックスまたはフィルター一覧を使用して、Operator の一覧から OpenShift Container Storage を検索できます。
  3. OpenShift Container Storage をクリックします。
  4. OpenShift Container Storage Operator ページで、Install をクリックします。
  5. Install Operator ページで、以下の必須オプションがデフォルトで選択されていることを確認します。

    1. Channel を stable-4.6として更新します。
    2. Installation Mode オプションに A specific namespace on the cluster を選択します。
    3. Installed Namespace に Operator recommended namespace openshift-storage を選択します。namespace openshift-storage が存在しない場合、これは Operator のインストール時に作成されます。
  6. Enable operator recommended cluster monitoring on this namespace が選択されていることを確認します。この設定はクラスターのモニターリングに必要です。
  7. 承認ストラテジーはデフォルトで Automatic に設定されます。

    図1.1 Install Operator ページ

    Screenshot of Install Operator page.
  8. Install をクリックします。

検証手順

  • OpenShift Container Storage Operator に、インストールが正常に実行されたことを示す緑色のチェックマークが表示されていることを確認します。
  • View Installed Operators in namespace openshift-storage リンクをクリックし、OpenShift Container Storage Operator が Installed Operators ダッシュボードで StatusSucceeded として表示していることを確認します。

1.3. ローカルストレージ Operator のインストール

以下の手順を使用して、ローカルストレージデバイスに OpenShift Container Storage クラスターを作成する前に、Operator Hub からローカルストレージ Operator をインストールします。

手順

  1. OpenShift Web コンソールにログインします。
  2. Operators → OperatorHub をクリックします。
  3. Operator の一覧から Local Storage Operator を検索し、これをクリックします。
  4. Install をクリックします。

    図1.2 Install Operator ページ

    Screenshot of Install Operator page.
  5. Install Operator ページで、以下のオプションを設定します。

    1. Channel を stable-4.6として更新します。
    2. Installation Mode オプションに A specific namespace on the cluster を選択します。
    3. Installed Namespace に Operator recommended namespace openshift-local-storage を選択します。
    4. Approval Strategy に Automatic を選択します。
  6. Install をクリックします。
  7. Local Storage Operator のステータスが Succeeded と表示されていることを確認します。

1.4. 利用可能なストレージデバイスの検索

以下の手順を使用して、IBM Z 用に PV を作成する前に、OpenShift Container Storage ラベル cluster.ocs.openshift.io/openshift-storage='' でラベルを付けた 3 つ以上のワーカーノードのそれぞれのデバイス名を特定します。

手順

  1. OpenShift Container Storage ラベルの付いたワーカーノードの名前の一覧を表示し、確認します。

    $ oc get nodes -n openshift-storage

    出力例:

    NAME          STATUS   ROLES    AGE     VERSION
    bmworker01    Ready    worker   6h45m   v1.16.2
    bmworker02    Ready    worker   6h45m   v1.16.2
    bmworker03    Ready    worker   6h45m   v1.16.2
  2. OpenShift Container Storage リソースに使用される各ワーカーノードにログインし、利用可能な各 raw ブロックデバイスの一意の by-id デバイス名を見つけます。

    $ oc debug node/<Nodename>

    出力例:

    $ oc debug node/bmworker01
    Starting pod/bmworker01-debug ...
    To use host binaries, run `chroot /host`
    Pod IP: 10.0.135.71
    If you don't see a command prompt, try pressing enter.
    sh-4.2# chroot /host
    sh-4.4# lsblk
    NAME                         MAJ:MIN RM   SIZE RO TYPE MOUNTPOINT
    xvda                         202:0    0   120G  0 disk
    |-xvda1                      202:1    0   384M  0 part /boot
    |-xvda2                      202:2    0   127M  0 part /boot/efi
    |-xvda3                      202:3    0     1M  0 part
    `-xvda4                      202:4    0 119.5G  0 part
      `-coreos-luks-root-nocrypt 253:0    0 119.5G  0 dm   /sysroot
    nvme0n1                      259:0    0   931G  0 disk

    この例では、bmworker01 について利用可能なローカルデバイスは nvme0n1 です。

  3. 手順 2 で選択した各デバイスの一意の ID を特定します。

    sh-4.4#  ls -l /dev/disk/by-id/ | grep nvme0n1
    lrwxrwxrwx. 1 root root 13 Mar 17 16:24 nvme-INTEL_SSDPE2KX010T7_PHLF733402LM1P0GGN -> ../../nvme0n1

    上記の例では、ローカルデバイス nvme0n1 の ID は以下になります。

    nvme-INTEL_SSDPE2KX010T7_PHLF733402LM1P0GGN
  4. 上記の手順を繰り返し、OpenShift Container Storage で使用されるストレージデバイスを持つその他のすべてのノードのデバイス ID を特定します。詳細は、ナレッジベースアーティクル を参照してください。

1.5. IBM Z での OpenShift Container Storage クラスターの作成

以下の手順を使用して、IBM Z にストレージクラスターを作成します。

前提条件

  • ローカルストレージデバイスを使用した 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. LocalVolume カスタムリソース (CR) を使用してストレージノードにローカル永続ボリューム (PV) を作成します。

    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/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
  2. ブロック PV の LocalVolume CR を作成します。

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

    出力例:

    NAME                                    READY   STATUS  RESTARTS AGE
    local-block-local-diskmaker-cmfql       1/1     Running 0        31s
    local-block-local-diskmaker-g6fzr       1/1     Running 0        31s
    local-block-local-diskmaker-jkqxt       1/1     Running 0        31s
    local-block-local-provisioner-jgqcc     1/1     Running 0        31s
    local-block-local-provisioner-mx49d     1/1     Running 0        31s
    local-block-local-provisioner-qbcvp     1/1     Running 0        31s
    local-storage-operator-54bc7566c6-ddbrt 1/1     Running 0        12m
  4. PV が作成されているかどうかを確認します。

    $ oc get pv

    出力例:

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

    $ oc get sc | grep localblock

    出力例:

    NAME            PROVISIONER                    RECLAIMPOLICY
    VOLUMEBINDINGMODE ALLOWVOLUMEEXPANSION     AGE
    localblock      kubernetes.io/no-provisioner   Delete
    WaitForFirstConsumer  false                2m10s
  6. localblock Storage Class ストレージクラスを使用する OpenShift Container Storage Cluster Service を作成します。

    1. OpenShift Web コンソールにログインします。
    2. OpenShift Web コンソールの左側のペインで Installed Operators をクリックし、インストールされた Operator を表示します。

      図1.3 OpenShift Container Storage Operator ページ

      Screenshot of OpenShift Container Storage operator dashboard.
    3. OpenShift Container Storage インストール Operator をクリックします。
    4. Operator Details ページで、Storage Cluster リンクをクリックします。

      図1.4 Storage Cluster タブ

      Screenshot of Storage Cluster tab on OpenShift Container Storage Operator dashboard.
    5. Create Storage Cluster をクリックします。

      Screenshot of Create Cluster Service page
  7. Select ModeInternal-Attached devices を選択します。
  8. 以下のいずれかのシナリオに基づいてストレージクラスターを作成する手順を実行します。

    ローカルストレージ Operator がインストールされておらず、ストレージクラスは作成されていない
    1. ローカルストレージ Operator をインストールすることを求めるプロンプトが出されます。Install をクリックし、ローカルストレージ Operator で説明されているように Operator をインストールします。
    2. 次の手順で説明されているように、ウィザードからストレージクラスの作成に進みます。
    ローカルストレージ Operator がインストールされているが、ストレージクラスは作成されていない

    ウィザードで以下の手順を実行します。

    ディスクの検出

    図1.5 Discovery Disks ウィザードページ

    Screenshot of discovering disks in select nodes.
    1. 以下のいずれかを選択します。

      • All nodes: すべてのノードでディスクを検出します。
      • Select nodes: 一覧表示されるノードからノードのサブセットを選択します。

        クラスターで特定のワーカーノードを見つけるには、Name または Label に基づいてノードをフィルターできます。Name を使用するとノード名で検索でき、Label を使用すると事前に定義されたラベルを選択して検索できます。

        高可用性を確保するために、ワーカーノードは 3 つの異なる物理ノード、ラック、障害ドメインに分散することが推奨されます。

        注記

        OpenShift Container Storage のラックラベルがデータセンターの物理ラックに合わせて調整されていることを確認し、障害ドメインのレベルで二重ノードに障害が発生しないようにします。

        選択したノードが集約された 30 CPU および 72 GiB の RAM の OpenShift Container Storage クラスターの要件と一致しない場合は、最小クラスターがデプロイされます。ノードの最小要件については、プランニングガイドの リソース要件 セクションを参照してください。

        注記

        選択したノードにテイントのマークが付けられており、そのノードがウィザードで検出されない場合は、回避策として Red Hat ナレッジベースソリューション に記載されている手順に従ってください。

    2. Next をクリックします。
    ストレージクラスの作成

    図1.6 Create Storage Class ウィザードページ

    Screenshot of entering the storage class details.
    1. ボリュームセット名を入力します。
    2. ストレージクラス名を入力します。デフォルトで、ボリュームセット名がストレージクラス名について表示されます。

      ノードに反映されるまでに数秒待機する必要がある場合があります。

    3. 検出されたノードからノードを選択するには、以下のいずれかを選択できます。

      • All nodes: 利用可能なディスクを検出したすべてのノードを選択します。
      • Select nodes: 利用可能なディスクを検出したノードのサブセットを選択します。
    4. (オプション) ドーナツ チャートを使用して選択されたノードでディスクの選択した容量を表示できます。また、ノードおよびディスクの一覧を表示するチャートの Nodes および Disks リンクをクリックできます。選択したノードおよびディスクの詳細を表示できます。

      Screenshot of list of nodes displayed from the donut chart.
      Screenshot of list of disks displayed from the donut chart.
    5. Disk type を選択します。
    6. Advanced セクションでは、以下のオプションを設定できます。

      ディスクモード

      デフォルトではブロックが選択されます。

      ディスクサイズ

      Max および Min にそれぞれ含める必要のあるデバイスの最小および最大サイズ。

      最大ディスク制限

      これは、ノードで作成可能な永続ボリューム (PV) の最大数を示します。このフィールドが空のままの場合、PV は一致するノードで利用可能なすべてのディスクに作成されます。

    7. Next をクリックします。
    8. メッセージアラートで Yes をクリックし、ストレージクラスの作成を確認します。

      ローカルボリュームセットおよびストレージクラスの作成後に、この手順に戻ることはできません。

    ローカルストレージ Operator がインストールされており、ストレージクラスが作成されている
    ストレージクラスターの作成

    図1.7 Create Storage Cluster ウィザードページ

    Screenshot of storage cluster creation.
    1. 必要なストレージクラスを選択します。

      選択したストレージクラスに対応するストレージノードが追加されるまでに数分待機する必要がある場合があります。

    2. (オプション) Encryption セクションで、トグルを Enabled に設定して、クラスターでデータ暗号化を有効にします。
    3. ストレージクラスに対応するノードは、ドロップダウン一覧で選択したストレージクラスに基づいて表示されます。
    4. Create をクリックします。

      Create ボタンは、3 つのノードを選択した場合にのみ有効になります。3 つのボリュームからなる新規ストレージクラスターは、1 ワーカーノードごとに 1 つのボリュームを設定して作成されます。デフォルト設定では、レプリケーション係数 3 を使用します。

      初期クラスターの容量を拡張するには、Scaling Storage ガイドを参照してください。

検証手順

Verifying your OpenShift Container Storage installation を参照してください。

第2章 内部接続デバイスモードの OpenShift Container Storage デプロイメントの確認

このセクションを使用して、OpenShift Container Storage が正常にデプロイされていることを確認します。

2.1. Pod の状態の確認

OpenShift Container Storage が正常にデプロイされているかどうかを判別するために、Pod の状態が Running であることを確認できます。

手順

  1. OpenShift Web コンソールの左側のペインから Workloads → Pods をクリックします。
  2. Project ドロップダウンリストから openshift-storage を選択します。

    各コンポーネントについて予想される Pod 数や、これがノード数によってどのように異なるかについての詳細は、表2.1「OpenShift Container Storage クラスターに対応する Pod」 を参照してください。

  3. Running および Completed タブをクリックして、以下の Pod が実行中および完了状態にあることを確認します。

    表2.1 OpenShift Container Storage クラスターに対応する Pod

    コンポーネント対応する Pod

    OpenShift Container Storage Operator

    ocs-operator-*

    (任意のワーカーノードに 1 Pod)

    Rook-ceph Operator

    rook-ceph-operator-*

    (任意のワーカーノードに 1 Pod)

    Multicloud Object Gateway

    • noobaa-operator-* (任意のワーカーノードに 1 Pod)
    • noobaa-core-* (任意のストレージノードに 1 Pod)
    • nooba-db-* (任意のストレージノードに 1 Pod)
    • noobaa-endpoint-* (任意のストレージノードに 1 Pod)

    MON

    rook-ceph-mon-*

    (ストレージノードに分散する 3 Pod)

    MGR

    rook-ceph-mgr-*

    (任意のストレージノードに 1 Pod)

    MDS

    rook-ceph-mds-ocs-storagecluster-cephfilesystem-*

    (ストレージノードに分散する 2 Pod)

    RGW

    rook-ceph-rgw-ocs-storagecluster-cephobjectstore-* (ストレージノードに分散する 2 Pod)

    CSI

    • cephfs

      • csi-cephfsplugin-* (各ワーカーノードに 1 Pod)
      • csi-cephfsplugin-provisioner-* (ストレージノードに分散する 2 Pod)
    • rbd

      • csi-rbdplugin-* (各ワーカーノードに 1 Pod)
      • csi-rbdplugin-provisioner-* (ストレージノードに分散する 2 Pod)

    rook-ceph-drain-canary

    rook-ceph-drain-canary-*

    (各ストレージノードに 1 Pod)

    rook-ceph-crashcollector

    rook-ceph-crashcollector-*

    (各ストレージノードに 1 Pod)

    OSD

    • rook-ceph-osd-* (各デバイス用に 1 Pod)
    • rook-ceph-osd-prepare-ocs-deviceset-* (各デバイス用に 1 Pod)

2.2. OpenShift Container Storage クラスターが正常であることの確認

  • OpenShift Web コンソールの左側のペインから Home → Overview をクリックし、Persistent Storage タブをクリックします。
  • Status カード で、以下のイメージのように OCS Cluster および Data Resiliency に緑色のチェックマークが表示されていることを確認します。

    図2.1 Persistent Storage Overview ダッシュボードの Health status カード

    Screenshot of Health card in persistent storage dashboard
  • Details カード で、以下のようにクラスター情報が表示されていることを確認します。

    サービス名
    OpenShift Container Storage
    クラスター名
    ocs-storagecluster
    プロバイダー
    なし
    モード
    内部
    バージョン
    ocs-operator-4.6.0

永続ストレージダッシュボードを使用して OpenShift Container Storage クラスターの正常性に関する詳細は、OpenShift Container Storage のモニターリング を参照してください。

2.3. Multicloud Object Gateway が正常であることの確認

  • OpenShift Web コンソールの左側のペインから Home → Overview をクリックし、Object Service タブをクリックします。
  • Status card で、Object ServiceData Resiliency の両方が Ready 状態 (緑のチェックマーク) にあることを確認します。

    図2.2 Object Service Overview ダッシュボードの Health status カード

    Screenshot of Health card in object service dashboard
  • Details カード で、MCG 情報が以下のように表示されることを確認します。

    サービス名
    OpenShift Container Storage
    システム名
    Multicloud Object Gateway
    プロバイダー
    なし
    バージョン
    ocs-operator-4.6.0

オブジェクトサービスダッシュボードを使用した OpenShift Container Storage クラスターの正常性については、OpenShift Container Storage のモニターリング を参照してください。

2.4. OpenShift Container Storage 固有のストレージクラスが存在することの確認

ストレージクラスがクラスターに存在することを確認するには、以下を実行します。

  • OpenShift Web コンソールの左側のペインから Storage → Storage Classes をクリックします。
  • 以下のストレージクラスが OpenShift Container Storage クラスターの作成時に作成されることを確認します。

    • ocs-storagecluster-ceph-rbd
    • ocs-storagecluster-cephfs
    • openshift-storage.noobaa.io
    • ocs-storagecluster-ceph-rgw

第3章 内部接続デバイスモードの OpenShift Container Storage のアンインストール

3.1. 内部接続デバイスモードの OpenShift Container Storage のアンインストール

このセクションの手順に従って OpenShift Container Storage をアンインストールします。

アノテーションのアンインストール

Storage Cluster のアノテーションは、アンインストールプロセスの動作を変更するために使用されます。アンインストールの動作を定義するために、ストレージクラスターに以下の 2 つのアノテーションが導入されました。

  • uninstall.ocs.openshift.io/cleanup-policy: delete
  • uninstall.ocs.openshift.io/mode: graceful

以下の表は、これらのアノテーションで使用できる各種値に関する情報を示しています。

表3.1 uninstall.ocs.openshift.io でアノテーションの説明をアンインストールする

Annotationデフォルト動作

cleanup-policy

delete

はい

Rook は物理ドライブおよび DataDirHostPath をクリーンアップします。

cleanup-policy

Retain

いいえ

Rook は物理ドライブおよび DataDirHostPath をクリーンアップ しません

mode

graceful

はい

Rook および NooBaa は PVC および OBC が管理者/ユーザーによって削除されるまでアンインストールプロセスを一時停止します。

mode

forced

いいえ

Rook および NooBaa は、Rook および NooBaa を使用してプロビジョニングされた PVC/OBC がそれぞれ存在している場合でもアンインストールを続行します。

以下のコマンドを使用してアノテーションの値を編集し、クリーンアップポリシーまたはアンインストールモードを変更できます。

$ oc annotate storagecluster ocs-storagecluster uninstall.ocs.openshift.io/cleanup-policy="retain" --overwrite
storagecluster.ocs.openshift.io/ocs-storagecluster annotated
$ oc annotate storagecluster ocs-storagecluster uninstall.ocs.openshift.io/mode="forced" --overwrite
storagecluster.ocs.openshift.io/ocs-storagecluster annotated

前提条件

  • OpenShift Container Storage クラスターの状態が正常であることを確認します。リソースまたはノードの不足により一部の Pod が正常に終了されないと、アンインストールプロセスに失敗する可能性があります。クラスターが状態が正常でない場合は、OpenShift Container Storage をアンインストールする前に Red Hat カスタマーサポートにお問い合わせください。
  • アプリケーションが OpenShift Container Storage によって提供されるストレージクラスを使用して永続ボリューム要求 (PVC) またはオブジェクトバケット要求 (OBC) を使用していないことを確認します。
  • カスタムリソース (カスタムストレージクラス、cephblockpools など) が管理者によって作成された場合、それらを消費したリソースを削除した後に管理者によって削除される必要があります。

手順

  1. OpenShift Container Storage を使用しているボリュームスナップショットを削除します。

    1. すべての namespace からボリュームスナップショットを一覧表示します。

      $ oc get volumesnapshot --all-namespaces
    2. 直前のコマンドの出力から、OpenShift Container Storage を使用しているボリュームスナップショットを特定し、削除します。

      $ oc delete volumesnapshot <VOLUME-SNAPSHOT-NAME> -n <NAMESPACE>
  2. OpenShift Container Storage を使用している PVC および OBC を削除します。

    デフォルトのアンインストールモード (graceful) では、アンインストーラーは OpenShift Container Storage を使用するすべての PVC および OBC が削除されるまで待機します。

    PVC を事前に削除せずに Storage Cluster を削除する場合は、アンインストールモードのアノテーションを forced に設定し、この手順を省略できます。これを実行すると、孤立した PVC および OBC がシステムに作成されます。

    1. OpenShift Container Storage を使用して、OpenShift Container Platform モニターリングスタック PVC を削除します。

      「OpenShift Container Storage からのモニターリングスタックの削除」 を参照

    2. OpenShift Container Storage を使用して、OpenShift Container Platform レジストリー PVC を削除します。

      「OpenShift Container Storage からの OpenShift Container Platform レジストリーの削除」 を参照

    3. OpenShift Container Storage を使用して、OpenShift Container Platform ロギング PVC を削除します。

      「OpenShift Container Storage からのクラスターロギング Operator の削除」 を参照

    4. OpenShift Container Storage を使用してプロビジョニングした PVC および OBC を削除します。

      • 以下に、OpenShift Container Storage を使用してプロビジョニングされる PVC および OBC を特定するサンプルスクリプトを示します。このスクリプトは、OpenShift Container Storage によって内部で使用される PVC を無視します。

        #!/bin/bash
        
        RBD_PROVISIONER="openshift-storage.rbd.csi.ceph.com"
        CEPHFS_PROVISIONER="openshift-storage.cephfs.csi.ceph.com"
        NOOBAA_PROVISIONER="openshift-storage.noobaa.io/obc"
        RGW_PROVISIONER="openshift-storage.ceph.rook.io/bucket"
        
        NOOBAA_DB_PVC="noobaa-db"
        NOOBAA_BACKINGSTORE_PVC="noobaa-default-backing-store-noobaa-pvc"
        
        # Find all the OCS StorageClasses
        OCS_STORAGECLASSES=$(oc get storageclasses | grep -e "$RBD_PROVISIONER" -e "$CEPHFS_PROVISIONER" -e "$NOOBAA_PROVISIONER" -e "$RGW_PROVISIONER" | awk '{print $1}')
        
        # List PVCs in each of the StorageClasses
        for SC in $OCS_STORAGECLASSES
        do
                echo "======================================================================"
                echo "$SC StorageClass PVCs and OBCs"
                echo "======================================================================"
                oc get pvc  --all-namespaces --no-headers 2>/dev/null | grep $SC | grep -v -e "$NOOBAA_DB_PVC" -e "$NOOBAA_BACKINGSTORE_PVC"
                oc get obc  --all-namespaces --no-headers 2>/dev/null | grep $SC
                echo
        done
        注記

        クラウドプラットフォームの RGW_PROVISIONER を省略します。

      • OBC を削除します。

        $ oc delete obc <obc name> -n <project name>
      • PVC を削除します。

        $ oc delete pvc <pvc name> -n <project-name>
        注記

        クラスターに作成されているカスタムバッキングストア、バケットクラスなどを削除していることを確認します。

  3. Storage Cluster オブジェクトを削除し、関連付けられたリソースが削除されるのを待機します。

    $ oc delete -n openshift-storage storagecluster --all --wait=true
  4. uninstall.ocs.openshift.io/cleanup-policydelete (default) に設定されている場合にクリーンアップ Pod の有無を確認し、それらのステータスが Completed していることを確認します。

    $ oc get pods -n openshift-storage | grep -i cleanup
    NAME                                READY   STATUS      RESTARTS   AGE
    cluster-cleanup-job-<xx>        	0/1     Completed   0          8m35s
    cluster-cleanup-job-<yy>     		0/1     Completed   0          8m35s
    cluster-cleanup-job-<zz>     		0/1     Completed   0          8m35s
  5. /var/lib/rook ディレクトリーが空であることを確認します。このディレクトリーは空になるのは、uninstall.ocs.openshift.io/cleanup-policy アノテーションが delete (デフォルト) に設定されている場合に限られます。

    $ for i in $(oc get node -l cluster.ocs.openshift.io/openshift-storage= -o jsonpath='{ .items[*].metadata.name }'); do oc debug node/${i} -- chroot /host  ls -l /var/lib/rook; done
  6. 暗号化がインストール時に有効にされている場合は、すべての OpenShift Container Storage ノードの OSD デバイスから dm-crypt で管理される device-mapper マッピングを削除します。

    1. デバッグ Pod を作成し、ストレージノードのホストに対して chroot を作成します。

      $ oc debug node <node name>
      $ chroot /host
    2. デバイス名を取得し、OpenShift Container Storage デバイスについてメモします。

      $ dmsetup ls
      ocs-deviceset-0-data-0-57snx-block-dmcrypt (253:1)
    3. マップ済みデバイスを削除します。

      $ cryptsetup luksClose --debug --verbose ocs-deviceset-0-data-0-57snx-block-dmcrypt

      権限が十分にないため、コマンドがスタックした場合には、以下のコマンドを実行します。

      • CTRL+Z を押して上記のコマンドを終了します。
      • スタックした cryptsetup プロセスの PID を検索します。

        $ ps

        出力例:

        PID     TTY    TIME     CMD
        778825   ?     00:00:00 cryptsetup

        PID 番号を書き留めて強制終了します。この例では、PID778825 です。

      • kill コマンドを使用してプロセスを終了します。

        $ kill -9 <PID>
      • デバイス名が削除されていることを確認します。

        $ dmsetup ls
  7. namespace を削除し、削除が完了するまで待機します。openshift-storage がアクティブなプロジェクトである場合は、別のプロジェクトに切り替える必要があります。

    以下に例を示します。

    $ oc project default
    $ oc delete project openshift-storage --wait=true --timeout=5m

    以下のコマンドが NotFound エラーを返すと、プロジェクトが削除されます。

    $ oc get project openshift-storage
    注記

    OpenShift Container Storage のアンインストール時に、namespace が完全に削除されず、Terminating 状態のままである場合は、Troubleshooting and deleting remaining resources during Uninstall の記事に記載の手順を実行して namespace の終了をブロックしているオブジェクトを特定します。

  8. ストレージノードのラベルを解除します。

    $ oc label nodes  --all cluster.ocs.openshift.io/openshift-storage-
    $ oc label nodes  --all topology.rook.io/rack-
  9. ノードにテイントのマークが付けられている場合に OpenShift Container Storage テイントを削除します。

    $ oc adm taint nodes --all node.ocs.openshift.io/storage-
  10. OpenShift Container Storage を使用してプロビジョニングした PV がすべて削除されていることを確認します。Released 状態のままの PV がある場合は、これを削除します。

    $ oc get pv
    $ oc delete pv <pv name>
  11. Multicloud Object Gateway storageclass を削除します。

    $ oc delete storageclass openshift-storage.noobaa.io --wait=true --timeout=5m
  12. CustomResourceDefinitions を削除します。

    $ oc delete crd backingstores.noobaa.io bucketclasses.noobaa.io cephblockpools.ceph.rook.io cephclusters.ceph.rook.io cephfilesystems.ceph.rook.io cephnfses.ceph.rook.io cephobjectstores.ceph.rook.io cephobjectstoreusers.ceph.rook.io noobaas.noobaa.io ocsinitializations.ocs.openshift.io  storageclusterinitializations.ocs.openshift.io storageclusters.ocs.openshift.io cephclients.ceph.rook.io cephobjectrealms.ceph.rook.io cephobjectzonegroups.ceph.rook.io cephobjectzones.ceph.rook.io cephrbdmirrors.ceph.rook.io --wait=true --timeout=5m
  13. OpenShift Container Platform Web コンソールで、OpenShift Container Storage が完全にアンインストールされていることを確認するには、以下を実行します。

    1. Home → Overview をクリックし、ダッシュボードにアクセスします。
    2. Persistent Storage および Object Service タブが Cluster タブの横に表示されなくなることを確認します。

3.1.1. ローカルストレージ Operator の設定の削除

ローカルストレージデバイスを使用して OpenShift Container Storage をデプロイした場合にのみ、本セクションの手順を使用します。

注記

OpenShift Container Storage デプロイメントで localvolume リソースのみを使用する場合は、直接、手順 8 に移動します。

手順

  1. LocalVolumeSet および OpenShift Container Storage で使用される対応する StorageClassName を特定します。
  2. LocalVolumeSet を提供する StorageClass に変数 SC を設定します。

    $ export SC="<StorageClassName>"
  3. LocalVolumeSet を削除します。

    $ oc delete localvolumesets.local.storage.openshift.io <name-of-volumeset> -n openshift-local-storage
  4. 指定された StorageClassName のローカルストレージ PV を削除します。

    $ oc get pv | grep $SC | awk '{print $1}'| xargs oc delete pv
  5. StorageClassName を削除します。

    $ oc delete sc $SC
  6. LocalVolumeSet によって作成されるシンボリックリンクを削除します。

    [[ ! -z $SC ]] && for i in $(oc get node -l cluster.ocs.openshift.io/openshift-storage= -o jsonpath='{ .items[*].metadata.name }'); do oc debug node/${i} -- chroot /host rm -rfv /mnt/local-storage/${SC}/; done
  7. LocalVolumeDiscovery を削除します。

    $ oc delete localvolumediscovery.local.storage.openshift.io/auto-discover-devices -n openshift-local-storage
  8. LocalVolume リソースを削除します (ある場合)。

    以下の手順を使用して、現行または直前の OpenShift Container Storage バージョンで PV のプロビジョニングに使用した LocalVolume リソースを削除します。また、これらのリソースがクラスターの他のテナントで使用されていないことを確認します。

    ローカルボリュームごとに、以下を実行します。

    1. LocalVolume および OpenShift Container Storage で使用される対応する StorageClassName を特定します。
    2. 変数 LV を LocalVolume の名前に設定し、変数 SC を StorageClass の名前に設定します。

      以下に例を示します。

      $ LV=local-block
      $ SC=localblock
    3. ローカルボリュームリソースを削除します。

      $ oc delete localvolume -n local-storage --wait=true $LV
    4. 残りの PV および StorageClass が存在する場合はこれらを削除します。

      $ oc delete pv -l storage.openshift.com/local-volume-owner-name=${LV} --wait --timeout=5m
      $ oc delete storageclass $SC --wait --timeout=5m
    5. そのリソースのストレージノードからアーティファクトをクリーンアップします。

      $ [[ ! -z $SC ]] && for i in $(oc get node -l cluster.ocs.openshift.io/openshift-storage= -o jsonpath='{ .items[*].metadata.name }'); do oc debug node/${i} -- chroot /host rm -rfv /mnt/local-storage/${SC}/; done

      出力例:

      Starting pod/node-xxx-debug ...
      To use host binaries, run `chroot /host`
      removed '/mnt/local-storage/localblock/nvme2n1'
      removed directory '/mnt/local-storage/localblock'
      
      Removing debug pod ...
      Starting pod/node-yyy-debug ...
      To use host binaries, run `chroot /host`
      removed '/mnt/local-storage/localblock/nvme2n1'
      removed directory '/mnt/local-storage/localblock'
      
      Removing debug pod ...
      Starting pod/node-zzz-debug ...
      To use host binaries, run `chroot /host`
      removed '/mnt/local-storage/localblock/nvme2n1'
      removed directory '/mnt/local-storage/localblock'
      
      Removing debug pod ...

3.2. OpenShift Container Storage からのモニターリングスタックの削除

このセクションでは、モニターリングスタックを OpenShift Container Storage からクリーンアップします。

モニターリングスタックの設定の一部として作成される PVC は openshift-monitoring namespace に置かれます。

前提条件

手順

  1. openshift-monitoring namespace で現在実行されている Pod および PVC を一覧表示します。

    $ oc get pod,pvc -n openshift-monitoring
    NAME                           READY   STATUS    RESTARTS   AGE
    pod/alertmanager-main-0         3/3     Running   0          8d
    pod/alertmanager-main-1         3/3     Running   0          8d
    pod/alertmanager-main-2         3/3     Running   0          8d
    pod/cluster-monitoring-
    operator-84457656d-pkrxm        1/1     Running   0          8d
    pod/grafana-79ccf6689f-2ll28    2/2     Running   0          8d
    pod/kube-state-metrics-
    7d86fb966-rvd9w                 3/3     Running   0          8d
    pod/node-exporter-25894         2/2     Running   0          8d
    pod/node-exporter-4dsd7         2/2     Running   0          8d
    pod/node-exporter-6p4zc         2/2     Running   0          8d
    pod/node-exporter-jbjvg         2/2     Running   0          8d
    pod/node-exporter-jj4t5         2/2     Running   0          6d18h
    pod/node-exporter-k856s         2/2     Running   0          6d18h
    pod/node-exporter-rf8gn         2/2     Running   0          8d
    pod/node-exporter-rmb5m         2/2     Running   0          6d18h
    pod/node-exporter-zj7kx         2/2     Running   0          8d
    pod/openshift-state-metrics-
    59dbd4f654-4clng                3/3     Running   0          8d
    pod/prometheus-adapter-
    5df5865596-k8dzn                1/1     Running   0          7d23h
    pod/prometheus-adapter-
    5df5865596-n2gj9                1/1     Running   0          7d23h
    pod/prometheus-k8s-0            6/6     Running   1          8d
    pod/prometheus-k8s-1            6/6     Running   1          8d
    pod/prometheus-operator-
    55cfb858c9-c4zd9                1/1     Running   0          6d21h
    pod/telemeter-client-
    78fc8fc97d-2rgfp                3/3     Running   0          8d
    
    NAME                                                              STATUS   VOLUME                                     CAPACITY   ACCESS MODES   STORAGECLASS                  AGE
    persistentvolumeclaim/my-alertmanager-claim-alertmanager-main-0   Bound    pvc-0d519c4f-15a5-11ea-baa0-026d231574aa   40Gi       RWO            ocs-storagecluster-ceph-rbd   8d
    persistentvolumeclaim/my-alertmanager-claim-alertmanager-main-1   Bound    pvc-0d5a9825-15a5-11ea-baa0-026d231574aa   40Gi       RWO            ocs-storagecluster-ceph-rbd   8d
    persistentvolumeclaim/my-alertmanager-claim-alertmanager-main-2   Bound    pvc-0d6413dc-15a5-11ea-baa0-026d231574aa   40Gi       RWO            ocs-storagecluster-ceph-rbd   8d
    persistentvolumeclaim/my-prometheus-claim-prometheus-k8s-0        Bound    pvc-0b7c19b0-15a5-11ea-baa0-026d231574aa   40Gi       RWO            ocs-storagecluster-ceph-rbd   8d
    persistentvolumeclaim/my-prometheus-claim-prometheus-k8s-1        Bound    pvc-0b8aed3f-15a5-11ea-baa0-026d231574aa   40Gi       RWO            ocs-storagecluster-ceph-rbd   8d
  2. モニタリング configmap を編集します。

    $ oc -n openshift-monitoring edit configmap cluster-monitoring-config
  3. 以下の例が示すように、OpenShift Container Storage ストレージクラスを参照する config セクションを削除し、これを保存します。

    編集前

    .
    .
    .
    apiVersion: v1
    data:
      config.yaml: |
        alertmanagerMain:
          volumeClaimTemplate:
            metadata:
              name: my-alertmanager-claim
            spec:
              resources:
                requests:
                  storage: 40Gi
              storageClassName: ocs-storagecluster-ceph-rbd
        prometheusK8s:
          volumeClaimTemplate:
            metadata:
              name: my-prometheus-claim
            spec:
              resources:
                requests:
                  storage: 40Gi
              storageClassName: ocs-storagecluster-ceph-rbd
    kind: ConfigMap
    metadata:
      creationTimestamp: "2019-12-02T07:47:29Z"
      name: cluster-monitoring-config
      namespace: openshift-monitoring
      resourceVersion: "22110"
      selfLink: /api/v1/namespaces/openshift-monitoring/configmaps/cluster-monitoring-config
      uid: fd6d988b-14d7-11ea-84ff-066035b9efa8
    .
    .
    .

    編集後

    .
    .
    .
    apiVersion: v1
    data:
      config.yaml: |
    kind: ConfigMap
    metadata:
      creationTimestamp: "2019-11-21T13:07:05Z"
      name: cluster-monitoring-config
      namespace: openshift-monitoring
      resourceVersion: "404352"
      selfLink: /api/v1/namespaces/openshift-monitoring/configmaps/cluster-monitoring-config
      uid: d12c796a-0c5f-11ea-9832-063cd735b81c
    .
    .
    .

    この例では、alertmanagerMain および prometheusK8s モニターリングコンポーネントは OpenShift Container Storage PVC を使用しています。

  4. 関連する PVC を削除します。ストレージクラスを使用するすべての PVC を削除してください。

    $ oc delete -n openshift-monitoring pvc <pvc-name> --wait=true --timeout=5m

3.3. OpenShift Container Storage からの OpenShift Container Platform レジストリーの削除

このセクションを使用して、OpenShift Container Storage から OpenShift Container Platform レジストリーをクリーンアップします。代替ストレージを設定する必要がある場合は、イメージレジストリー を参照してください。

OpenShift Container Platform レジストリーの設定の一部として作成される PVC は openshift-image-registry namespace に置かれます。

前提条件

  • イメージレジストリーは OpenShift Container Storage PVC を使用するように設定されている必要があります。

手順

  1. configs.imageregistry.operator.openshift.io オブジェクトを編集し、storage セクションのコンテンツを削除します。

    $ oc edit configs.imageregistry.operator.openshift.io

    編集前

    .
    .
    .
    storage:
      pvc:
        claim: registry-cephfs-rwx-pvc
    .
    .
    .

    編集後

    .
    .
    .
    storage:
      emptyDir: {}
    .
    .
    .

    この例では、PVC は registry-cephfs-rwx-pvc と呼ばれ、これは安全に削除できます。

  2. PVC を削除します。

    $ oc delete pvc <pvc-name> -n openshift-image-registry --wait=true --timeout=5m

3.4. OpenShift Container Storage からのクラスターロギング Operator の削除

このセクションでは、クラスターロギング Operator を OpenShift Container Storage からクリーンアップします。

クラスターロギング Operator の設定の一部として作成される PVC は openshift-logging namespace にあります。

前提条件

  • クラスターロギングインスタンスは、OpenShift Container Storage PVC を使用するように設定されている必要があります。

手順

  1. namespace の ClusterLogging インスタンスを削除します。

    $ oc delete clusterlogging instance -n openshift-logging --wait=true --timeout=5m

    openshift-logging namespace の PVC は安全に削除できます。

  2. PVC を削除します。

    $ oc delete pvc <pvc-name> -n openshift-logging --wait=true --timeout=5m

第4章 ストレージノードのスケーリング

OpenShift Container Storage のストレージ容量をスケーリングするには、以下のいずれかを実行できます。

  • ストレージノードのスケールアップ: 既存の OpenShift Container Storage ワーカーノードに対してストレージ容量を追加します。
  • ストレージノードのスケールアウト: ストレージ容量を含む新規ワーカーノードを追加します。

4.1. ストレージノードのスケーリングの要件

ストレージノードをスケーリングする前に、以下のセクションを参照して、特定の Red Hat OpenShift Container Storage インスタンスのノード要件を把握してください。

警告

常にストレージ容量が十分にあることを確認してください。

ストレージが完全に一杯になると、容量を追加したり、ストレージからコンテンツを削除したり、コンテンツを移動して領域を解放することはできません。完全なストレージを復元することは非常に困難です。

容量アラートは、クラスターストレージ容量が合計容量の 75% (ほぼ一杯) および 85% (一杯) になると発行されます。容量についての警告に常に迅速に対応し、ストレージを定期的に確認して、ストレージ領域が不足しないようにします。

ストレージ領域が不足する場合は、Red Hat カスタマーポータルにお問い合わせください。

4.2. IBM Z の OpenShift Container Storage ノードへの容量の追加によるストレージのスケールアップ

以下の手順を使用して、設定された Red Hat OpenShift Container Storage ワーカーノードにストレージ容量を追加し、パフォーマンスを強化します。

前提条件

  • 実行中の OpenShift Container Storage Platform
  • OpenShift Web コンソールの管理者権限
  • デプロイメント時にプロビジョニングされたストレージクラス以外のストレージクラスを使用してスケーリングするには、最初に追加のストレージクラスを定義します。詳細は、ストレージクラスの作成 を参照してください。

手順

  1. zFCP ディスクを使用してハードウェアリソースを追加します。

    1. 以下のコマンドを使用してすべてのディスクを一覧表示します。

      $ lszdev

      出力例:

      TYPE         ID                                              ON   PERS  NAMES
      zfcp-host    0.0.8204                                        yes  yes
      zfcp-lun     0.0.8204:0x102107630b1b5060:0x4001402900000000  yes  no    sda sg0
      zfcp-lun     0.0.8204:0x500407630c0b50a4:0x3002b03000000000  yes  yes   sdb sg1
      qeth         0.0.bdd0:0.0.bdd1:0.0.bdd2                      yes  no    encbdd0
      generic-ccw  0.0.0009                                        yes  no

      SCSI ディスクは、ID セクションの <device-id>:<wwpn>:<lun-id> 構造で zfcp-lun として表されます。最初のディスクはオペレーティングシステムに使用されます。新規ディスクのデバイス ID は同じである可能性があります。

    2. 以下のコマンドで新規 SCSI ディスクを追加します。

      $ chzdev -e 0.0.8204:0x400506630b1b50a4:0x3001301a00000000
      注記

      新規ディスクのデバイス ID は、置き換えるディスクと同じである必要があります。新規ディスクは、WWPN および LUN ID で識別されます。

    3. すべての FCP デバイスを一覧表示して、新規ディスクが設定されていることを確認します。

      $ lszdev zfcp-lun
      TYPE         ID                                              ON   PERS  NAMES
      zfcp-lun     0.0.8204:0x102107630b1b5060:0x4001402900000000 yes  no    sda sg0
      zfcp-lun     0.0.8204:0x500507630b1b50a4:0x4001302a00000000  yes  yes   sdb sg1
      zfcp-lun     0.0.8204:0x400506630b1b50a4:0x3001301a00000000  yes  yes   sdc sg2
  2. OpenShift Web コンソールに移動します。
  3. 左側のナビゲーションバーの Operators をクリックします。
  4. Installed Operators を選択します。
  5. ウィンドウで、OpenShift Container Storage Operator をクリックします。

    ocs installed operators
  6. 上部のナビゲーションバーで、右にスクロールし、Storage Cluster タブをクリックします。

    ocs Storage Cluster overview
  7. 表示される一覧の横にある (⋮) をクリックして、オプションメニューを拡張します。
  8. オプションメニューから Add Capacity を選択します。

    ocs add capacity dialog menu

    Raw Capacity フィールドには、ストレージクラスの作成時に設定されるサイズが表示されます。OpenShift Container Storage はレプリカ数 3 を使用するため、消費されるストレージの合計量はこの量の 3 倍になります。

  9. Add をクリックし、クラスターの状態が Ready になるまで待機します。

検証手順

  1. OverviewPersistent Storage タブに移動してから、Capacity breakdown カードをチェックします。

    ocs add capacity expansion verification capacity card aws
  2. 容量は選択に応じて増大することに注意してください。
重要

ノードまたは OSD を削除して削減するかどうかに関わらず、クラスターの削減は現時点でサポートされていません。

4.3. 新規ノードの追加によるストレージ容量のスケールアウト

ストレージ容量をスケールアウトするには、以下を実行する必要があります。

  • 既存のワーカーノードがサポートされる最大 OSD (初期設定で選択される容量の 3 OSD の増分) で実行されている場合には、ストレージの容量を増やすために新規ノードを追加します。
  • 新規ノードが正常に追加されたことを確認します。
  • ノードが追加された後にストレージ容量をスケールアップします。

4.3.1. IBM Z へのノードの追加

前提条件

  • OpenShift Container Platform (RHOCP) クラスターにログインしている必要があります。

手順

  1. ComputeMachine Sets に移動します。
  2. ノードを追加する必要のあるマシンセットで、Edit Machine Count を選択します。
  3. ノード数を追加し、Save をクリックします。
  4. ComputeNodes をクリックし、新規ノードが Ready 状態にあることを確認します。
  5. OpenShift Container Storage ラベルを新規ノードに適用します。

    1. 新規ノードについて、Action menu (⋮)Edit Labels をクリックします。
    2. cluster.ocs.openshift.io/openshift-storage を追加し、Save をクリックします。
注記

異なるゾーンのそれぞれに 3 つのノードを追加することが推奨されます。3 つのノードを追加して、それらすべてのノードに対してこの手順を実行する必要があります。

検証手順

4.3.2. 新規ノードの追加の確認

  1. 以下のコマンドを実行して、出力で新規ノードが表示されていることを確認します。

    $ oc get nodes --show-labels | grep cluster.ocs.openshift.io/openshift-storage= |cut -d' ' -f1
  2. WorkloadsPods をクリックし、新規ノード上の少なくとも以下の Pod が Running 状態にあることを確認します。

    • csi-cephfsplugin-*
    • csi-rbdplugin-*

4.3.3. ストレージ容量のスケールアップ

新規ノードを OpenShift Container Storage に追加した後に、容量の追加によるストレージのスケールアップ に説明されているようにストレージ容量をスケールアップする必要があります。

第5章 ストレージノードの置き換え

以下のいずれかの手順を選択して、ストレージノードを置き換えることができます。

5.1. IBM Z での動作するノードの置き換え

以下の手順に従って、IBM Z で動作するノードを置き換えます。

手順

  1. OpenShift Web コンソールにログインします。
  2. ComputeNodes をクリックします。
  3. 置き換える必要のあるノードを特定します。その マシン名 をメモします。
  4. 以下のコマンドを実行して、ノードにスケジュール対象外 (unschedulable) のマークを付けます。

    $ oc adm cordon <node_name>
  5. 以下のコマンドを使用してノードをドレイン (解放) します。

    $ oc adm drain <node_name> --force --delete-local-data --ignore-daemonsets
    重要

    このアクティビティーには少なくとも 5-10 分以上かかる場合があります。この期間に生成される Ceph のエラーは一時的なもので、新規ノードにラベルが付けられ、これが機能すると自動的に解決されます。

  6. ComputeMachines をクリックします。必要なマシンを検索します。
  7. 必要なマシンの横にある Action menu (⋮)Delete Machine をクリックします。
  8. Delete をクリックしてマシンの削除を確認します。新しいマシンが自動的に作成されます。
  9. 新規マシンが起動し、Running 状態に移行するまで待機します。

    重要

    このアクティビティーには少なくとも 5-10 分以上かかる場合があります。

  10. ComputeNodes をクリックし、新規ノードが Ready 状態にあることを確認します。
  11. 以下のいずれかを使用して、OpenShift Container Storage ラベルを新規ノードに適用します。

    ユーザーインターフェイスを使用する場合
    1. 新規ノードについて、Action Menu (⋮)Edit Labels をクリックします。
    2. cluster.ocs.openshift.io/openshift-storage を追加し、Save をクリックします。
    コマンドラインインターフェイスの使用
    • 以下のコマンドを実行して、OpenS+hift Container Storage ラベルを新規ノードに適用します。

      $ oc label node <new_node_name> cluster.ocs.openshift.io/openshift-storage=""

検証手順

  1. 以下のコマンドを実行して、出力で新規ノードが表示されていることを確認します。

    $ oc get nodes --show-labels | grep cluster.ocs.openshift.io/openshift-storage= |cut -d' ' -f1
  2. WorkloadsPods をクリックし、新規ノード上の少なくとも以下の Pod が Running 状態にあることを確認します。

    • csi-cephfsplugin-*
    • csi-rbdplugin-*
  3. 他の必要なすべての OpenShift Container Storage Pod が Running 状態にあることを確認します。
  4. 新規 OSD Pod が交換後のノードで実行されていることを確認します。

    $ oc get pods -o wide -n openshift-storage| egrep -i new-node-name | egrep osd
  5. (オプション) クラスターでデータの暗号化が有効な場合には、新規 OSD デバイスが暗号化されていることを確認します。

    1. デバッグ Pod を作成し、ホストの chroot 環境を開きます。

      $ oc debug node new-node-name
      $ chroot /host
    2. デバイスが暗号化されていることを確認します。

      $ dmsetup ls | grep ocs-deviceset
      ocs-deviceset-0-data-0-57snx-block-dmcrypt (253:1)
      $ lsblk | grep ocs-deviceset
      `-ocs-deviceset-0-data-0-57snx-block-dmcrypt 253:1    0   512G  0 crypt
  6. 検証手順が失敗した場合は、Red Hat サポートにお問い合わせください

5.2. IBM Z での障害のあるノードの置き換え

以下の手順に従って、OpenShift Container Storage の IBM Z で動作しない障害のあるノードを置き換えます。

手順

  1. OpenShift Web コンソールにログインし、ComputeNodes をクリックします。
  2. 障害のあるノードを特定し、その Machine Name をクリックします。
  3. ActionsEdit Annotations をクリックし、Add More をクリックします。
  4. machine.openshift.io/exclude-node-draining を追加し、Save をクリックします。
  5. ActionsDelete Machine をクリックしてから、Delete をクリックします。
  6. 新しいマシンが自動的に作成されます。新規マシンが起動するのを待機します。

    重要

    このアクティビティーには少なくとも 5-10 分以上かかる場合があります。この期間に生成される Ceph のエラーは一時的なもので、新規ノードにラベルが付けられ、これが機能すると自動的に解決されます。

  7. ComputeNodes をクリックし、新規ノードが Ready 状態にあることを確認します。
  8. 以下のいずれかを使用して、OpenShift Container Storage ラベルを新規ノードに適用します。

    Web ユーザーインターフェイスの使用
    1. 新規ノードについて、Action Menu (⋮)Edit Labels をクリックします。
    2. cluster.ocs.openshift.io/openshift-storage を追加し、Save をクリックします。
    コマンドラインインターフェイスの使用
    • 以下のコマンドを実行して、OpenS+hift Container Storage ラベルを新規ノードに適用します。

      $ oc label node <new_node_name> cluster.ocs.openshift.io/openshift-storage=""
  9. 以下のコマンドを実行して、出力で新規ノードが表示されていることを確認します。

    $ oc get nodes --show-labels | grep cluster.ocs.openshift.io/openshift-storage= | cut -d' ' -f1
  10. WorkloadsPods をクリックし、新規ノード上の少なくとも以下の Pod が Running 状態にあることを確認します。

    • csi-cephfsplugin-*
    • csi-rbdplugin-*
  11. 他の必要なすべての OpenShift Container Storage Pod が Running 状態にあることを確認します。
  12. 新規 OSD Pod が交換後のノードで実行されていることを確認します。

    $ oc get pods -o wide -n openshift-storage| egrep -i new-node-name | egrep osd
  13. (オプション) クラスターでデータの暗号化が有効な場合には、新規 OSD デバイスが暗号化されていることを確認します。

    1. デバッグ Pod を作成し、ホストの chroot 環境を開きます。

      $ oc debug node new-node-name
      $ chroot /host
    2. デバイスが暗号化されていることを確認します。

      $ dmsetup ls | grep ocs-deviceset
      ocs-deviceset-0-data-0-57snx-block-dmcrypt (253:1)
      $ lsblk | grep ocs-deviceset
      `-ocs-deviceset-0-data-0-57snx-block-dmcrypt 253:1    0   512G  0 crypt
  14. 検証手順が失敗した場合は、Red Hat サポートにお問い合わせください

第6章 ストレージデバイスの置き換え

6.1. IBM Z で動作するストレージデバイスまたは障害のあるストレージデバイスの置き換え

IBM Z の動作するストレージデバイスまたは障害のあるストレージデバイスを、新規 SCSI ディスクに置き換えることができます。

IBM Z は、外部ディスクストレージからの永続ストレージとして SCSI FCP ディスク論理ユニット (SCSI ディスク) に対応します。SCSI ディスクは、FCP デバイス番号、2 つのターゲットのワールドワイドポート名 (WWPN1 および WWPN2) と、論理ユニット番号 (LUN) を使用して識別できます。詳細は、次を参照してください。https://www.ibm.com/support/knowledgecenter/SSB27U_6.4.0/com.ibm.zvm.v640.hcpa5/scsiover.html

手順

  1. 以下のコマンドを使用してすべてのディスクを一覧表示します。

    $ lszdev

    出力例:

    TYPE         ID
    zfcp-host    0.0.8204                                        yes  yes
    zfcp-lun     0.0.8204:0x102107630b1b5060:0x4001402900000000 yes  no    sda sg0
    zfcp-lun     0.0.8204:0x500407630c0b50a4:0x3002b03000000000  yes  yes   sdb sg1
    qeth         0.0.bdd0:0.0.bdd1:0.0.bdd2                      yes  no    encbdd0
    generic-ccw  0.0.0009                                        yes  no

    SCSI ディスクは、ID セクションの <device-id>:<wwpn>:<lun-id> 構造で zfcp-lun として表されます。最初のディスクはオペレーティングシステムに使用されます。1 つのストレージデバイスに障害が発生した場合は、これを新しいディスクに置き換えることができます。

  2. ディスクを削除します。

    ディスクで以下のコマンドを実行し、scsi-id を、置き換えるディスクの SCSI ディスク識別子に置き換えます。

    $ chzdev -d scsi-id

    たとえば、以下のコマンドはデバイス ID 0.0.8204、WWPN 0x500507630a0b50a4、および LUN 0x4002403000000000 のディスクを 1 つ削除します。

    $ chzdev -d 0.0.8204:0x500407630c0b50a4:0x3002b03000000000
  3. 以下のコマンドを使用して新規 SCSI ディスクを追加します。

    $ chzdev -e 0.0.8204:0x500507630b1b50a4:0x4001302a00000000
    注記

    新規ディスクのデバイス ID は、置き換えるディスクと同じである必要があります。新規ディスクは、WWPN および LUN ID で識別されます。

  4. すべての FCP デバイスを一覧表示して、新規ディスクが設定されていることを確認します。

    $ lszdev zfcp-lun
    TYPE         ID                                              ON   PERS  NAMES
    zfcp-lun     0.0.8204:0x102107630b1b5060:0x4001402900000000 yes  no    sda sg0
    zfcp-lun     0.0.8204:0x500507630b1b50a4:0x4001302a00000000  yes  yes   sdb sg1