2.3.3. ユーザーによってプロビジョニングされるインフラストラクチャーでの障害のある Amazon EC2 ノードの置き換え


OpenShift Container Storage の Amazon EC2 I3 の一時ストレージにより、インスタンスの電源がオフにされる場合にデータが失われる可能性があります。以下の手順を使用して、Amazon EC2 インフラストラクチャーでのインスタンスの電源オフからのリカバリーを行います。

重要

Amazon EC2 I3 インフラストラクチャーのストレージノードの置き換えはテクノロジープレビュー機能です。テクノロジープレビュー機能は、Red Hat の実稼働環境のサービスレベルアグリーメント (SLA) ではサポートされていないため、Red Hat では実稼働環境での使用を推奨していません。Red Hat は実稼働環境でこれらを使用することを推奨していません。これらの機能は、近々発表予定の製品機能をリリースに先駆けてご提供することにより、お客様は機能性をテストし、開発プロセス中にフィードバックをお寄せいただくことができます。

前提条件

  • Red Hat では、交換前のノードと同様のインフラストラクチャーおよびリソースで、交換後のノードを設定することを推奨します。
  • OpenShift Container Platform (RHOCP) クラスターにログインしている必要があります。

手順

  1. ノードを特定し、置き換えるノードのラベルを取得します。

    $ oc get nodes --show-labels | grep <node_name>
    Copy to Clipboard Toggle word wrap
  2. 置き換えるノードで実行されている mon (ある場合) および OSD を特定します。

    $ oc get pods -n openshift-storage -o wide | grep -i <node_name>
    Copy to Clipboard Toggle word wrap
  3. 先の手順で特定された Pod のデプロイメントをスケールダウンします。

    以下に例を示します。

    $ oc scale deployment rook-ceph-mon-c --replicas=0 -n openshift-storage
    $ oc scale deployment rook-ceph-osd-0 --replicas=0 -n openshift-storage
    $ oc scale deployment --selector=app=rook-ceph-crashcollector,node_name=<node_name>  --replicas=0 -n openshift-storage
    Copy to Clipboard Toggle word wrap
  4. ノードにスケジュール対象外 (unschedulable) のマークを付けます。

    $ oc adm cordon <node_name>
    Copy to Clipboard Toggle word wrap
  5. Terminating 状態の Pod を削除します。

    $ oc get pods -A -o wide | grep -i <node_name> |  awk '{if ($4 == "Terminating") system ("oc -n " $1 " delete pods " $2  " --grace-period=0 " " --force ")}'
    Copy to Clipboard Toggle word wrap
  6. ノードをドレイン (解放) します。

    $ oc adm drain <node_name> --force --delete-local-data --ignore-daemonsets
    Copy to Clipboard Toggle word wrap
  7. ノードを削除します。

    $ oc delete node <node_name>
    Copy to Clipboard Toggle word wrap
  8. 必要なインフラストラクチャーで新規 Amazon EC2 I3 マシンインスタンスを作成します。サポートされるインフラストラクチャーおよびプラットフォーム について参照してください。
  9. 新規 Amazon EC2 I3 マシンインスタンスを使用して新規 OpenShift Container Platform ノードを作成します。
  10. Pending 状態の OpenShift Container Platform に関連する証明書署名要求 (CSR) の有無を確認します。

    $ oc get csr
    Copy to Clipboard Toggle word wrap
  11. 新規ノードに必要なすべての OpenShift Container Platform CSR を承認します。

    $ oc adm certificate approve <Certificate_Name>
    Copy to Clipboard Toggle word wrap
  12. OpenShift Web コンソールで Compute Nodes をクリックします。新規ノードが Ready 状態にあるかどうかを確認します。
  13. 以下のいずれかを使用して、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=""
    Copy to Clipboard Toggle word wrap
  14. OpenShift ローカルストレージ Operator がインストールされている namespace を特定し、これを local_storage_project 変数に割り当てます。

    $ local_storage_project=$(oc get csv --all-namespaces | awk '{print $1}' | grep local)
    Copy to Clipboard Toggle word wrap

    以下に例を示します。

    $ local_storage_project=$(oc get csv --all-namespaces | awk '{print $1}' | grep local)
    echo $local_storage_project
    openshift-local-storage
    Copy to Clipboard Toggle word wrap
  15. 新規ワーカーノードで利用可能なローカルストレージデバイスを OpenShift Container Storage StorageCluster に追加します。

    1. 新規ディスクエントリーを LocalVolume CR に追加します。

      LocalVolume CR を編集します。障害のあるデバイス /dev/disk/by-id/{id} を削除またはコメントアウトし、新規の /dev/disk/by-id/{id} を追加します。

      $ oc get -n $local_storage_project localvolume
      Copy to Clipboard Toggle word wrap

      出力例:

      NAME          AGE
      local-block   25h
      Copy to Clipboard Toggle word wrap
      $ oc edit -n $local_storage_project localvolume local-block
      Copy to Clipboard Toggle word wrap

      出力例:

      [...]
          storageClassDevices:
          - devicePaths:
            - /dev/disk/by-id/nvme-Amazon_EC2_NVMe_Instance_Storage_AWS10382E5D7441494EC
            - /dev/disk/by-id/nvme-Amazon_EC2_NVMe_Instance_Storage_AWS1F45C01D7E84FE3E9
            - /dev/disk/by-id/nvme-Amazon_EC2_NVMe_Instance_Storage_AWS136BC945B4ECB9AE4
            - /dev/disk/by-id/nvme-Amazon_EC2_NVMe_Instance_Storage_AWS10382E5D7441464EP
        #   - /dev/disk/by-id/nvme-Amazon_EC2_NVMe_Instance_Storage_AWS1F45C01D7E84F43E7
        #   - /dev/disk/by-id/nvme-Amazon_EC2_NVMe_Instance_Storage_AWS136BC945B4ECB9AE8
            - /dev/disk/by-id/nvme-Amazon_EC2_NVMe_Instance_Storage_AWS6F45C01D7E84FE3E9
            - /dev/disk/by-id/nvme-Amazon_EC2_NVMe_Instance_Storage_AWS636BC945B4ECB9AE4
            storageClassName: localblock
            volumeMode: Block
      [...]
      Copy to Clipboard Toggle word wrap

      CR の編集後に変更を保存するようにしてください。

      この CR に by-id を使用する 2 つの新規デバイスが追加されていることを確認できます。

      • nvme-Amazon_EC2_NVMe_Instance_Storage_AWS6F45C01D7E84FE3E9
      • nvme-Amazon_EC2_NVMe_Instance_Storage_AWS636BC945B4ECB9AE4
    2. localblock と共に PV を表示します。

      $ oc get pv | grep localblock
      Copy to Clipboard Toggle word wrap

      出力例:

      local-pv-3646185e   2328Gi  RWO     Delete      Available                                               localblock  9s
      local-pv-3933e86    2328Gi  RWO     Delete      Bound       openshift-storage/ocs-deviceset-2-1-v9jp4   localblock  5h1m
      local-pv-8176b2bf   2328Gi  RWO     Delete      Bound       openshift-storage/ocs-deviceset-0-0-nvs68   localblock  5h1m
      local-pv-ab7cabb3   2328Gi  RWO     Delete      Available                                               localblock  9s
      local-pv-ac52e8a    2328Gi  RWO     Delete      Bound       openshift-storage/ocs-deviceset-1-0-knrgr   localblock  5h1m
      local-pv-b7e6fd37   2328Gi  RWO     Delete      Bound       openshift-storage/ocs-deviceset-2-0-rdm7m   localblock  5h1m
      local-pv-cb454338   2328Gi  RWO     Delete      Bound       openshift-storage/ocs-deviceset-0-1-h9hfm   localblock  5h1m
      local-pv-da5e3175   2328Gi  RWO     Delete      Bound       openshift-storage/ocs-deviceset-1-1-g97lq   localblock  5h
      ...
      Copy to Clipboard Toggle word wrap
  16. 障害のあるノードに関連付けられたストレージリソースを削除します。

    1. 置き換える OSD に関連付けられた DeviceSet を特定します。

      $ osd_id_to_remove=0
      $ oc get -n openshift-storage -o yaml deployment rook-ceph-osd-${osd_id_to_remove} | grep ceph.rook.io/pvc
      Copy to Clipboard Toggle word wrap

      ここで、osd_id_to_removerook-ceph-osd 接頭辞の直後にくる Pod 名の整数です。この例では、デプロイメント名は rook-ceph-osd-0 です。

      出力例:

      ceph.rook.io/pvc: ocs-deviceset-0-0-nvs68
      ceph.rook.io/pvc: ocs-deviceset-0-0-nvs68
      Copy to Clipboard Toggle word wrap
    2. PVC に関連付けられた PV を特定します。

      $ oc get -n openshift-storage pvc ocs-deviceset-<x>-<y>-<pvc-suffix>
      Copy to Clipboard Toggle word wrap

      ここで、xy、および pvc-suffix は、前の手順で識別された DeviceSet の値です。

      出力例:

      NAME                      STATUS        VOLUME        CAPACITY   ACCESS MODES   STORAGECLASS   AGE
      ocs-deviceset-0-0-nvs68   Bound   local-pv-8176b2bf   2328Gi      RWO            localblock     4h49m
      Copy to Clipboard Toggle word wrap

      この例では、関連付けられた PV は local-pv-8176b2bf です。

    3. openshift-storage プロジェクトに変更します。

      $ oc project openshift-storage
      Copy to Clipboard Toggle word wrap
    4. 失敗した OSD をクラスターから削除します。必要に応じて、複数の障害のある OSD を指定することができます。

      $ oc process -n openshift-storage ocs-osd-removal -p FAILED_OSD_IDS=${osd_ids_to_remove} | oc create -f -
      Copy to Clipboard Toggle word wrap
    5. ocs-osd-removal-job Pod のステータスをチェックして、OSD が正常に削除されることを確認します。Completed のステータスで、OSD の削除ジョブが正常に完了したことを確認します。

      # oc get pod -l job-name=ocs-osd-removal-job -n openshift-storage
      Copy to Clipboard Toggle word wrap
      注記

      ocs-osd-removal-job が失敗し、Pod が予想される Completed の状態にない場合、追加のデバッグのために Pod ログを確認します。以下に例を示します。

      # oc logs -l job-name=ocs-osd-removal-job -n openshift-storage
      Copy to Clipboard Toggle word wrap
    6. 先のステップで特定された PV を削除します。この例では、物理ボリューム名は local-pv-8176b2bf です。

      $ oc delete pv local-pv-8176b2bf
      Copy to Clipboard Toggle word wrap

      出力例:

      persistentvolume "local-pv-8176b2bf" deleted
      Copy to Clipboard Toggle word wrap
  17. 先の手順で特定された crashcollector Pod デプロイメントを削除します。

    $ oc delete deployment --selector=app=rook-ceph-crashcollector,node_name=<old_node_name> -n openshift-storage
    Copy to Clipboard Toggle word wrap
  18. ocs-osd-removal-job を削除します。

    # oc delete -n openshift-storage job ocs-osd-removal-job
    Copy to Clipboard Toggle word wrap

    出力例:

    job.batch "ocs-osd-removal-job" deleted
    Copy to Clipboard Toggle word wrap

検証手順

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

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

    • csi-cephfsplugin-*
    • csi-rbdplugin-*
  3. 他の必要なすべての OpenShift Container Storage Pod が Running 状態にあることを確認します。

    また、増分の mon が新規に作成されており、Running 状態にあることを確認します。

    $ oc get pod -n openshift-storage | grep mon
    Copy to Clipboard Toggle word wrap

    出力例:

    rook-ceph-mon-a-64556f7659-c2ngc    1/1     Running     0   5h1m
    rook-ceph-mon-b-7c8b74dc4d-tt6hd    1/1     Running     0   5h1m
    rook-ceph-mon-d-57fb8c657-wg5f2     1/1     Running     0   27m
    Copy to Clipboard Toggle word wrap

    OSD と mon が Running 状態になるまで数分かかる場合があります。

  4. 新規 OSD Pod が交換後のノードで実行されていることを確認します。

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

    1. 直前の手順で特定された新規ノードごとに、以下を実行します。

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

        $ oc debug node/<node name>
        $ chroot /host
        Copy to Clipboard Toggle word wrap
      2. lsblk を実行し、ocs-deviceset 名の横にある crypt キーワードを確認します。

        $ lsblk
        Copy to Clipboard Toggle word wrap
  6. 検証手順が失敗した場合は、Red Hat サポートにお問い合わせください
トップに戻る
Red Hat logoGithubredditYoutubeTwitter

詳細情報

試用、購入および販売

コミュニティー

Red Hat ドキュメントについて

Red Hat をお使いのお客様が、信頼できるコンテンツが含まれている製品やサービスを活用することで、イノベーションを行い、目標を達成できるようにします。 最新の更新を見る.

多様性を受け入れるオープンソースの強化

Red Hat では、コード、ドキュメント、Web プロパティーにおける配慮に欠ける用語の置き換えに取り組んでいます。このような変更は、段階的に実施される予定です。詳細情報: Red Hat ブログ.

会社概要

Red Hat は、企業がコアとなるデータセンターからネットワークエッジに至るまで、各種プラットフォームや環境全体で作業を簡素化できるように、強化されたソリューションを提供しています。

Theme

© 2025 Red Hat