外部モードでの OpenShift Container Storage のデプロイ

Red Hat OpenShift Container Storage 4.5

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

Red Hat Storage Documentation Team

概要

Red Hat OpenShift Container Storage 4.5 をインストールし、外部 Red Hat Ceph Storage クラスターを使用する方法については、本書をお読みください。

第1章 外部モードでのデプロイの概要

Red Hat OpenShift Container Storage は、外部でホストされる Red Hat Ceph Storage クラスターをストレージプロバイダーとして使用できます。このデプロイメントタイプは、ベアメタルおよびユーザーによってプロビジョニングされる VMWare 環境についてサポートされます。詳細は、『Planning your deployment』を参照してください。

以下の手順に従って、OpenShift Container Storage を外部モードでデプロイします。

  1. Red Hat Enterprise Linux ホストを使用する場合は、コンテナーでのファイルシステムアクセスを有効にします

    Red Hat Enterprise Linux CoreOS (RHCOS) ホストを使用する場合は、この手順を省略します。

  2. OpenShift Container Storage Operator をインストールします
  3. OpenShift Container Storage Cluster Service を作成します

第2章 Red Hat Enterprise Linux ベースのノード上のコンテナーでのファイルシステムアクセスの有効化

ユーザーによってプロビジョニングされるインフラストラクチャー (UPI) の Red Hat Enterprise Linux ベースに OpenShift Container Platform をデプロイしても、基礎となる Ceph ファイルシステムへのコンテナーアクセスは自動的に提供されません。

注記

このプロセスは、Red Hat Enterprise Linux CoreOS をベースとするホストには不要です。

手順

クラスター内の各ノードで以下の手順を実行します。

  1. Red Hat Enterprise Linux ベースのノードにログインし、ターミナルを開きます。
  2. ノードが rhel-7-server-extras-rpms リポジトリーにアクセスできることを確認します。

    # subscription-manager repos --list-enabled | grep rhel-7-server

    出力に rhel-7-server-rpmsrhel-7-server-extras-rpms の両方が表示されない場合や出力がない場合は、以下のコマンドを実行して各リポジトリーを有効にします。

    # subscription-manager repos --enable=rhel-7-server-rpms
    # subscription-manager repos --enable=rhel-7-server-extras-rpms
  3. 必要なパッケージをインストールします。

    # yum install -y policycoreutils container-selinux
  4. SELinux での Ceph ファイルシステムのコンテナーの使用を永続的に有効にします。

    # setsebool -P container_use_cephfs on

第3章 Red Hat OpenShift Container Storage Operator のインストール

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

前提条件

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

OpenShift Container Storage のクラスター全体でのデフォルトノードセレクターを上書きする必要がある場合は、コマンドラインインターフェースで以下のコマンドを使用し、 openshift-storage namespace の空のノードセレクターを指定できます。

$ oc annotate namespace openshift-storage openshift.io/node-selector=

手順

  1. OpenShift Web コンソールの左側のペインで、Operators → OperatorHub をクリックします。

    図3.1 Operator Hub の Operator 一覧

    OpenShift Web コンソールの Operator Hub の Operator 一覧のスクリーンショット。
  2. OpenShift Container Storage をクリックします。

    Filter by keyword テキストボックスまたはフィルター一覧を使用して、Operator の一覧から OpenShift Container Storage を検索できます。

  3. OpenShift Container Storage Operator ページで、Install をクリックします。

    図3.2 Install Operator ページ

    Screenshot of Install Operator page.
  4. Install Operator ページで、以下のオプションが選択されていることを確認します。

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

    図3.3 Installed Operators ダッシュボード

    インストールされた Operator のスクリーンショット。

検証手順

  • OpenShift Container Storage Operator の Status が Installed Operators ダッシュボードで Succeeded と表示されることを確認します。

第4章 外部モードでの OpenShift Container Storage Cluster Service の作成

OpenShift Container Storage Operator を VMware vSphere およびベアメタルプラットフォームの両方のユーザーによってプロビジョニングされたインフラストラクチャーにインストールした後に、新規の OpenShift Container Storage クラスターサービスを作成する必要があります。

前提条件

手順

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

    図4.1 OpenShift Container Storage Operator ページ

    Screenshot of OpenShift Container Storage operator dashboard.
  2. Installed Operators ページで、インストールされた OpenShift Container Storage Operator の Provided APIs 列で Storage Cluster リンクをクリックします。

    図4.2 Storage Cluster タブ

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

    図4.3 Create Storage Cluster ページ

    Screenshot of Create Storage Cluster form where you can select mode of deployment.
  4. Mode を External に選択します。デフォルトでは、Internal はデプロイメントモードとして選択されます。

    図4.4 Create Storage Cluster 形式の外部クラスターへの接続

    Screenshot shows connect to external cluster section after you select mode as external where you can download the python script and then upload the RHCS json file.
  5. Connect to external cluster セクションで、Download Script リンクをクリックして、Ceph クラスターの詳細を抽出するために python スクリプトをダウンロードします。
  6. Red Hat Ceph Storage (RHCS) クラスターの詳細を抽出するには、RHCS 管理者に問い合わせた上で Red Hat Ceph Storage クライアントノードでダウンロードした python スクリプトを実行します。

    1. RHCS クライアントノードで以下のコマンドを実行し、利用可能な引数の一覧を表示します。

      # python3 ceph-external-cluster-details-exporter.py --help
      注記

      RHCS クライアントノードにアクセスできない場合は、MON コンテナー内(コンテナー化されたデプロイメント)または MON ノード(rpm デプロイメント)からスクリプトを実行することもできます。

    2. RHCS クラスターから外部クラスターの詳細を取得するには、以下のコマンドを実行します。

      # python3 ceph-external-cluster-details-exporter.py --rbd-data-pool-name <rbd block pool name> [optional arguments]

      以下は例になります。

      # python3 ceph-external-cluster-details-exporter.py --rbd-data-pool-name ceph-rbd --rgw-endpoint xxx.xxx.xxx.xxx:xxxx --run-as-user client.ocs

      上記の例は、

      • --rbd-data-pool-name は、OpenShift Container Storage で Block Storage を提供するために使用される必須のパラメーターです。
      • --rgw-endpoint はオプションです。OpenShift Container Storage の Ceph Rados Gateway でオブジェクトストレージをプロビジョニングする場合に、このパラメーターを指定します。
      • -- run-as-user は、スクリプトで作成される Ceph ユーザーの名前を指定するために使用されるオプションのパラメーターです。このパラメーターを指定しないと、デフォルトのユーザー名 client.healthchecker が作成されます。新規ユーザーのパーミッションは以下のように設定されます。

        • caps: [mon] allow r, allow command quorum_status
        • caps: [osd] allow rwx pool=RGW_POOL_PREFIX.rgw.meta, allow r pool=.rgw.root, allow rw pool=RGW_POOL_PREFIX.rgw.control, allow x pool=RGW_POOL_PREFIX.rgw.buckets.index

          python スクリプトを使用して生成された JSON 出力の例:

          [{"name": "rook-ceph-mon-endpoints", "kind": "ConfigMap", "data": {"data": "ceph-mon-node=xxx.xxx.xxx.xxx:xxxx", "maxMonId": "0", "mapping": "{}"}}, {"name": "rook-ceph-mon", "kind": "Secret", "data": {"admin-secret": "<admin-secret>", "cluster-name": "openshift-storage", "fsid": "<fs-id>", "mon-secret": "<mon-secret>"}}, {"name": "rook-ceph-operator-creds", "kind": "Secret", "data": {"userID": "client.healthchecker", "userKey": "<user-key>"}}, {"name": "rook-csi-rbd-node", "kind": "Secret", "data": {"userID": "csi-rbd-node", "userKey": "<user-key>"}}, {"name": "rook-csi-rbd-provisioner", "kind": "Secret", "data": {"userID": "csi-rbd-provisioner", "userKey": "<user-key>"}}, {"name": "rook-csi-cephfs-node", "kind": "Secret", "data": {"adminID": "csi-cephfs-node", "adminKey": "<admin-key>"}}, {"name": "rook-csi-cephfs-provisioner", "kind": "Secret", "data": {"adminID": "csi-cephfs-provisioner", "adminKey": "<admin-key>"}}, {"name": "ceph-rbd", "kind": "StorageClass", "data": {"pool": "ceph-rbd"}}, {"name": "cephfs", "kind": "StorageClass", "data": {"fsName": "cephfs", "pool": "cephfs_data"}}, {"name": "ceph-rgw", "kind": "StorageClass", "data": {"endpoint": "xxx.xxx.xxx.xxx:xxxx"}}]

    3. JSON 出力を .json 拡張のあるファイルに保存します。

      注記

      OpenShift Container Storage がシームレスに機能するには、JSON ファイルを使用してアップロードされるパラメーター (RGW エンドポイント、CephFS の詳細、RBD プールなど) が、ストレージクラスターの作成後も RHCS 外部クラスターで変更されないままであることを確認します。

  7. External cluster metadata → Browse をクリックして、json ファイルを選択し、アップロードします。json ファイルの内容が入力され、テキストボックスに表示されます。

    図4.5 JSON ファイルの内容

    Screenshot shows the content of the credentials file after it is uploaded
  8. Create をクリックします。

    Create ボタンは、.json ファイルのアップロード後にのみ有効になります。

検証手順

  • OpenShift Container Storage Cluster Service にステータスが Ready と表示されることを確認します。

    図4.6 ストレージクラスターサービスを表示する Storage Cluster タブ

    Screenshot of Storage Cluster tab showing storage cluster service.
  • OpenShift Container Storage、Pod および StorageClass が正常にインストールされていることを確認するには、外部モードの OpenShift Container Storage インストールの確認について参照してください。

第5章 外部モードの OpenShift Container Storage インストールの確認

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

5.1. Pod が実行中の状態にあることの確認

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

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

    注記

    OpenShift Container Storage のクラスター全体でのデフォルトノードセレクターを上書きする必要がある場合は、コマンドラインインターフェースで以下の手順を実行できます。

    1. openshift-storage namespace の空のノードセレクターを指定します。

      $ oc annotate namespace openshift-storage openshift.io/node-selector=
    2. DaemonSets によって生成される元の Pod を削除します。

      oc delete pod -l app=csi-cephfsplugin -n openshift-storage
      oc delete pod -l app=csi-rbdplugin -n openshift-storage
  3. 以下の Pod が実行中であるを確認します。

    表5.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)

    CSI

    • cephfs

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

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

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

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

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

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

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

    図5.2 Persistent Storage Overview ダッシュボードの Details カード

    Screenshot of Details card in persistent storage dashboard for external mode

5.3. Multicloud Object Gateway が正常であることを確認します。

オブジェクトサービスダッシュボードを使用して、OpenShift Container Storage クラスターの正常性を確認できます。詳細は、『OpenShift Container Storage のモニタリング』を参照してください。

  • OpenShift Web コンソールの左側のペインから Home → Overview をクリックし、Object Service タブをクリックします。
  • Status カード で、以下のように Multicloud Object Gateway (MCG) ストレージに緑色のチェックマークが表示されていることを確認します。

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

    Object Service ダッシュボードの Health カードのスクリーンショット
  • Details カード で、MCG 情報が以下のように適切に表示されることを確認します。

    図5.4 Object Service Overview ダッシュボードの Details カード

    Object Service ダッシュボードの Details カードのスクリーンショット

5.4. ストレージクラスが作成され、一覧表示されることの確認

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

    • ocs-external-storagecluster-ceph-rbd
    • ocs-external-storagecluster-ceph-rgw
    • ocs-external-storagecluster-cephfs
    • openshift-storage.noobaa.io
注記
  • MDS が外部クラスターにデプロイされていない場合、ocs-external-storagecluster-cephfs ストレージクラスは作成されません。
  • RGW が外部クラスターにデプロイされていない場合、ocs-external-storagecluster-ceph-rgw ストレージクラスは作成されません。

MDS および RGW についての詳細は、Red Hat Ceph Storage のドキュメントを参照してください。

5.5. Ceph クラスターが接続されていることの確認

以下のコマンドを実行して、OpenShift Container Storage クラスターが Ceph クラスターに接続されているかどうかを確認します。

$ oc get cephcluster -n openshift-storage
NAME                                      DATADIRHOSTPATH     MONCOUNT    AGE      PHASE       MESSAGE                         HEALTH
ocs-external-storagecluster-cephcluster                                   31m15s   Connected   Cluster connected successfully  HEALTH_OK

5.6. ストレージクラスターの準備が整っていることを確認します。

以下のコマンドを実行して、ストレージクラスターが準備状態にあり、External オプションが true に設定されていることを確認します。

$ oc get storagecluster -n openshift-storage
NAME                        AGE      PHASE EXTERNAL  CREATED AT              VERSION
ocs-external-storagecluster 31m15s   Ready true      2020-07-29T20:43:04Z    4.5.0

第6章 OpenShift Container Platform のアンインストール

6.1. 外部モードでの OpenShift Container Storage のアンインストール

このセクションの手順を使用して、ユーザーインターフェースから Uninstall オプションを使用せずに OpenShift Container Storage をアンインストールします。OpenShift Container Storage をアンインストールしても、外部クラスターから RBD プールを削除したり、外部の RedHat Ceph Storage クラスターをアンインストールしたりすることはできません。

前提条件

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

手順

  1. OpenShift Container Storage ベースのストレージクラスプロビジョナーを使用する PVC および OBC をクエリーします。

    以下は例になります。

    $ oc get pvc -o=jsonpath='{range .items[?(@.spec.storageClassName=="ocs-external-storagecluster-ceph-rbd")]}{"Name: "}{@.metadata.name}{" Namespace: "}{@.metadata.namespace}{" Labels: "}{@.metadata.labels}{"\n"}{end}' --all-namespaces|awk '! ( /Namespace: openshift-storage/ && /app:noobaa/ )' | grep -v noobaa-default-backing-store-noobaa-pvc
    $ oc get pvc -o=jsonpath='{range .items[?(@.spec.storageClassName=="ocs-external-storagecluster-cephfs")]}{"Name: "}{@.metadata.name}{" Namespace: "}{@.metadata.namespace}{"\n"}{end}' --all-namespaces
    $ oc get obc -o=jsonpath='{range .items[?(@.spec.storageClassName=="ocs-external-storagecluster-ceph-rgw")]}{"Name: "}{@.metadata.name}{" Namespace: "}{@.metadata.namespace}{"\n"}{end}' --all-namespaces
    $ oc get obc -o=jsonpath='{range .items[?(@.spec.storageClassName=="openshift-storage.noobaa.io")]}{"Name: "}{@.metadata.name}{" Namespace: "}{@.metadata.namespace}{"\n"}{end}' --all-namespaces
  2. 以下の手順に従って、直前の手順に記載されている PVC および OBC が削除されていることを確認します。

    モニタリングスタック、クラスターロギング Operator、またはイメージレジストリーの設定の一部として PVC を作成した場合は、必要に応じて以下のセクションで説明されているクリーンアップ手順を実行する必要があります。

    • 「OpenShift Container Storage からのモニタリングスタックの削除」
    • 「OpenShift Container Storage からの OpenShift Container Platform レジストリーの削除」
    • 「OpenShift Container Storage からのクラスターロギング Operator の削除」

      残りの PVC または OBC のそれぞれに、以下の手順を実行します。

      1. PVC または OBC を使用する Pod を判別します。
      2. DeploymentStatefulSetDaemonSetJob、またはカスタムコントローラーなどのコントロール側の API オブジェクトを特定します。

        各オブジェクトには、OwnerReference として知られるメタデータフィールドがあります。これは、関連付けられたオブジェクトの一覧です。controller フィールドが true に設定される OwnerReference が、 ReplicaSetStatefulSetDaemonSet などのコントロール側のオブジェクトを参照します。

      3. オブジェクトが OpenShift Container Storage によって提供される PVC または OBC を使用していないことを確認します。オブジェクトを削除するか、ストレージを置き換える必要があります。プロジェクトオーナーに、オブジェクトを安全に削除または変更できることを確認するよう依頼します。

        注記

        noobaa Pod は無視できます。

      4. OBC を削除します。

        $ oc delete obc <obc name> -n <project name>
      5. 作成したカスタムバケットクラスを削除します。

        $ oc get bucketclass -A | grep -v noobaa-default-bucket-class
        $ oc delete bucketclass <bucketclass name> -n <project-name>
      6. カスタム Multi Cloud Gateway バッキングストアを作成している場合は、それらを削除します。

        1. バッキングストアの一覧を表示し、これらをメモします。

          for bs in $(oc get backingstore -o name -n openshift-storage | grep -v noobaa-default-backing-store); do echo "Found backingstore $bs"; echo "Its has the following pods running :"; echo "$(oc get pods -o name -n openshift-storage | grep $(echo ${bs} | cut -f2 -d/))"; done
        2. 上記の各バッキングストアを削除し、対応する Pod および PVC が削除されていることを確認します。

          for bs in $(oc get backingstore -o name -n openshift-storage | grep -v noobaa-default-backing-store); do echo "Deleting Backingstore $bs"; oc delete -n openshift-storage $bs; done
        3. 上上記のバッキングストアのいずれかが pv-pool をベースとする場合、対応する Pod および PVC も削除してください。

          $ oc get pods  -n openshift-storage | grep noobaa-pod | grep -v noobaa-default-backing-store-noobaa-pod
          $ oc get pvc -n openshift-storage --no-headers | grep -v noobaa-db | grep -v noobaa-default-backing-store-noobaa-pvc
      7. 手順 1 に記載されている残りの PVC を削除します。

        $ oc delete pvc <pvc name> -n <project-name>
  3. StorageCluster オブジェクトを削除し、関連付けられたリソースが削除されるのを待機します。

    $ oc delete -n openshift-storage storagecluster --all --wait=true
  4. namespace を削除し、削除が完了するまで待機します。openshift-storage がアクティブなプロジェクトである場合、別のプロジェクトに切り替える必要があります。

    1. openshift-storage がアクティブな namespace の場合に別の namespace に切り替えます。

      以下は例になります。

      $ oc project default
    2. openshift-storage namespace を削除します。

      $ oc delete project openshift-storage --wait=true --timeout=5m
    3. 約 5 分間待機し、プロジェクトが正常に削除されたかどうかを確認します。

      $ oc get project  openshift-storage

      出力:

      Error from server (NotFound): namespaces "openshift-storage" not found
      注記

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

  5. openshift-storage.noobaa.io ストレージクラスを削除します。

    $ oc delete storageclass  openshift-storage.noobaa.io --wait=true --timeout=5m
  6. すべての PV が削除されていることを確認します。Released 状態のままの PV がある場合は、これを削除します。

    # oc get pv|egrep 'ocs-external-storagecluster-ceph-rbd|ocs-external-storagecluster-cephfs'
    # oc  delete pv <pv name>
  7. 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 --wait=true --timeout=5m
  8. OpenShift Container Platform Web コンソールで、OpenShift Container Storage が完全にアンインストールされていることを確認するには、以下を実行します。

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

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

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

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

前提条件

  • PVC は OpenShift Container Platform モニタリングスタックを使用できるように設定されます。

    詳細は、「モニタリングスタックの設定」を参照してください。

手順

  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-external-storagecluster-ceph-rbd   8d
    persistentvolumeclaim/my-alertmanager-claim-alertmanager-main-1   Bound    pvc-0d5a9825-15a5-11ea-baa0-026d231574aa   40Gi       RWO            ocs-external-storagecluster-ceph-rbd   8d
    persistentvolumeclaim/my-alertmanager-claim-alertmanager-main-2   Bound    pvc-0d6413dc-15a5-11ea-baa0-026d231574aa   40Gi       RWO            ocs-external-storagecluster-ceph-rbd   8d
    persistentvolumeclaim/my-prometheus-claim-prometheus-k8s-0        Bound    pvc-0b7c19b0-15a5-11ea-baa0-026d231574aa   40Gi       RWO            ocs-external-storagecluster-ceph-rbd   8d
    persistentvolumeclaim/my-prometheus-claim-prometheus-k8s-1        Bound    pvc-0b8aed3f-15a5-11ea-baa0-026d231574aa   40Gi       RWO            ocs-external-storagecluster-ceph-rbd   8d
  2. モニタリング configmap を編集します。

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

    Before editing

    .
    .
    .
    apiVersion: v1
    data:
      config.yaml: |
        alertmanagerMain:
          volumeClaimTemplate:
            metadata:
              name: my-alertmanager-claim
            spec:
              resources:
                requests:
                  storage: 40Gi
              storageClassName: ocs-external-storagecluster-ceph-rbd
        prometheusK8s:
          volumeClaimTemplate:
            metadata:
              name: my-prometheus-claim
            spec:
              resources:
                requests:
                  storage: 40Gi
              storageClassName: ocs-external-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
    
    
    .
    .
    .

    After editing

    .
    .
    .
    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 を使用する Pod を一覧表示します。

    この例では、PVC を使用していた alertmanagerMain および prometheusK8s Pod は Terminating 状態にあります。これらの Pod が OpenShift Container Storage PVC を使用しなくなった後に PVC を削除できます。

    $ oc get pod,pvc -n openshift-monitoring
    NAME                                               READY   STATUS      RESTARTS AGE
    pod/alertmanager-main-0                            3/3     Terminating   0      10h
    pod/alertmanager-main-1                            3/3     Terminating   0      10h
    pod/alertmanager-main-2                            3/3     Terminating   0      10h
    pod/cluster-monitoring-operator-84cd9df668-zhjfn   1/1     Running       0      18h
    pod/grafana-5db6fd97f8-pmtbf                       2/2     Running       0      10h
    pod/kube-state-metrics-895899678-z2r9q             3/3     Running       0      10h
    pod/node-exporter-4njxv                            2/2     Running       0      18h
    pod/node-exporter-b8ckz                            2/2     Running       0      11h
    pod/node-exporter-c2vp5                            2/2     Running       0      18h
    pod/node-exporter-cq65n                            2/2     Running       0      18h
    pod/node-exporter-f5sm7                            2/2     Running       0      11h
    pod/node-exporter-f852c                            2/2     Running       0      18h
    pod/node-exporter-l9zn7                            2/2     Running       0      11h
    pod/node-exporter-ngbs8                            2/2     Running       0      18h
    pod/node-exporter-rv4v9                            2/2     Running       0      18h
    pod/openshift-state-metrics-77d5f699d8-69q5x       3/3     Running       0      10h
    pod/prometheus-adapter-765465b56-4tbxx             1/1     Running       0      10h
    pod/prometheus-adapter-765465b56-s2qg2             1/1     Running       0      10h
    pod/prometheus-k8s-0                               6/6     Terminating   1      9m47s
    pod/prometheus-k8s-1                               6/6     Terminating   1      9m47s
    pod/prometheus-operator-cbfd89f9-ldnwc             1/1     Running       0      43m
    pod/telemeter-client-7b5ddb4489-2xfpz              3/3     Running       0      10h
    
    NAME                                                      STATUS  VOLUME                                     CAPACITY   ACCESS MODES   STORAGECLASS                  AGE
    persistentvolumeclaim/ocs-alertmanager-claim-alertmanager-main-0   Bound    pvc-2eb79797-1fed-11ea-93e1-0a88476a6a64   40Gi       RWO            ocs-external-storagecluster-ceph-rbd   19h
    persistentvolumeclaim/ocs-alertmanager-claim-alertmanager-main-1   Bound    pvc-2ebeee54-1fed-11ea-93e1-0a88476a6a64   40Gi       RWO            ocs-external-storagecluster-ceph-rbd   19h
    persistentvolumeclaim/ocs-alertmanager-claim-alertmanager-main-2   Bound    pvc-2ec6a9cf-1fed-11ea-93e1-0a88476a6a64   40Gi       RWO            ocs-external-storagecluster-ceph-rbd   19h
    persistentvolumeclaim/ocs-prometheus-claim-prometheus-k8s-0        Bound    pvc-3162a80c-1fed-11ea-93e1-0a88476a6a64   40Gi       RWO            ocs-external-storagecluster-ceph-rbd   19h
    persistentvolumeclaim/ocs-prometheus-claim-prometheus-k8s-1        Bound    pvc-316e99e2-1fed-11ea-93e1-0a88476a6a64   40Gi       RWO            ocs-external-storagecluster-ceph-rbd   19h
  5. 関連する PVC を削除します。ストレージクラスを使用するすべての PVC を削除してください。

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

6.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

6.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