ノードの置き換え


Red Hat OpenShift Data Foundation 4.13

OpenShift Data Foundation クラスターのノードを安全に置き換える手順

Red Hat Storage Documentation Team

概要

このドキュメントでは、Red Hat OpenShift Data Foundation クラスターのノードを安全に置き換える方法を説明します。

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

Red Hat では、コード、ドキュメント、Web プロパティーにおける配慮に欠ける用語の置き換えに取り組んでいます。まずは、マスター (master)、スレーブ (slave)、ブラックリスト (blacklist)、ホワイトリスト (whitelist) の 4 つの用語の置き換えから始めます。この取り組みは膨大な作業を要するため、用語の置き換えは、今後の複数のリリースにわたって段階的に実施されます。詳細は、Red Hat CTO である Chris Wright のメッセージ をご覧ください。

Red Hat ドキュメントへのフィードバック (英語のみ)

Red Hat ドキュメントに対するご意見をお聞かせください。ドキュメントの改善点があれば、ぜひお知らせください。

フィードバックを送信するには、Bugzilla チケットを作成します。

  1. Bugzilla の Web サイトに移動します。
  2. Component セクションで、documentation を選択します。
  3. Description フィールドに、ドキュメントの改善に向けたご提案を記入してください。ドキュメントの該当部分へのリンクも記載してください。
  4. Submit Bug をクリックします。

はじめに

OpenShift Data Foundation では、動作ノードに対しては事前対応として、以下のデプロイメントで障害のあるノードに対しては事後対応として、ノードを交換できます。

  • Amazon Web Services (AWS)

    • ユーザーによってプロビジョニングされるインフラストラクチャー
    • インストーラーでプロビジョニングされるインフラストラクチャー
  • VMware

    • ユーザーによってプロビジョニングされるインフラストラクチャー
    • Installer-provisioned infrastructure
  • Red Hat Virtualization の場合:

    • Installer-provisioned infrastructure
  • Microsoft Azure

    • インストーラーでプロビジョニングされるインフラストラクチャー
  • ローカルストレージデバイスの場合

    • ベアメタル
    • VMware
    • Red Hat Virtualization
    • IBM Power
  • 外部モードでストレージノードを置き換える場合は、Red Hat Ceph Storage のドキュメント を参照してください。

第1章 動的デバイスを使用してデプロイされた OpenShift Data Foundation

1.1. AWS にデプロイされた OpenShift Data Foundation

1.1.1. ユーザーによってプロビジョニングされるインフラストラクチャーで動作する AWS ノードの置き換え

前提条件

  • 置き換えるノードが、置き換えるノードと同様のインフラストラクチャーとリソースで設定されていることを確認する必要がある。
  • OpenShift Container Platform クラスターにログインしている。
注記

ユーザーがプロビジョニングしたインフラストラクチャー上の AWS ノードを交換する場合は、新しいノードを元のノードと同じ AWS ゾーンに作成する必要があります。

手順

  1. 置き換える必要のあるノードを特定します。
  2. ノードにスケジュール対象外 (unschedulable) のマークを付けます。

    $ oc adm cordon <node_name>
    Copy to Clipboard
    <node_name>
    置き換える必要のあるノードの名前を指定します。
  3. ノードをドレイン (解放) します。

    $ oc adm drain <node_name> --force --delete-emptydir-data=true --ignore-daemonsets
    Copy to Clipboard
    重要

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

  4. ノードを削除します。

    $ oc delete nodes <node_name>
    Copy to Clipboard
  5. 必要なインフラストラクチャーを使用して、新しい Amazon Web Service (AWS) マシンインスタンスを作成します。プラットフォーム要件 を参照してください。
  6. 新規 AWS マシンインスタンスを使用して新規 OpenShift Container Platform ノードを作成します。
  7. Pending 状態の OpenShift Container Platform に関連する証明書署名要求 (CSR) の有無を確認します。

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

    $ oc adm certificate approve <certificate_name>
    Copy to Clipboard
    <certificate_name>
    CSR の名前を指定します。
  9. ComputeNodes をクリックします。新しいノードが Ready 状態にあることを確認します。
  10. 以下のいずれかを使用して、OpenShift Data Foundation ラベルを新規ノードに適用します。

    ユーザーインターフェイスから
    1. 新規ノードで、Action Menu (⋮)Edit Labels をクリックします。
    2. cluster.ocs.openshift.io/openshift-storage を追加し、Save をクリックします。
    コマンドラインインターフェイスの使用
    • OpenShift Data Foundation ラベルを新規ノードに適用します。
    $ oc label node <new_node_name> cluster.ocs.openshift.io/openshift-storage=""
    Copy to Clipboard
    <new_node_name>
    新しいノードの名前を指定します。

検証手順

  1. 新しいノードが出力に存在することを確認します。

    $ oc get nodes --show-labels | grep cluster.ocs.openshift.io/openshift-storage= |cut -d' ' -f1
    Copy to Clipboard
  2. WorkloadsPods をクリックします。新しいノードの少なくとも次の Pod が Running 状態になっていることを確認します。

    • csi-cephfsplugin-*
    • csi-rbdplugin-*
  3. 他の必要なすべての OpenShift Data Foundation Pod が Running 状態にあることを確認します。
  4. 新しいオブジェクトストレージデバイス (OSD) Pod が置き換えるノードで実行されていることを確認します。

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

    直前の手順で特定された新しい各ノードに以下を実行します。

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

      $ oc debug node/<node_name>
      Copy to Clipboard
      $ chroot /host
      Copy to Clipboard
    2. 使用可能なブロックデバイスのリストを表示します。

      $ lsblk
      Copy to Clipboard

      1 つ以上の ocs-deviceset 名の横にある crypt キーワードを確認します。

  6. 検証手順が失敗した場合は、Red Hat サポートにお問い合わせください

1.1.2. インストーラーでプロビジョニングされるインフラストラクチャーで動作する AWS ノードの置き換え

手順

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

    $ oc adm cordon <node_name>
    Copy to Clipboard
    <node_name>
    置き換える必要のあるノードの名前を指定します。
  4. ノードをドレイン (解放) します。

    $ oc adm drain <node_name> --force --delete-emptydir-data=true --ignore-daemonsets
    Copy to Clipboard
    重要

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

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

    重要

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

  9. ComputeNodes をクリックします。新しいノードが Ready 状態にあることを確認します。
  10. OpenShift Data Foundation ラベルを新規ノードに適用します。

    ユーザーインターフェイスから
    1. 新規ノードで、Action Menu (⋮)Edit Labels をクリックします。
    2. cluster.ocs.openshift.io/openshift-storage を追加し、Save をクリックします。
    コマンドラインインターフェイスの使用
    • OpenShift Data Foundation ラベルを新規ノードに適用します。
    $ oc label node <new_node_name> cluster.ocs.openshift.io/openshift-storage=""
    Copy to Clipboard
    <new_node_name>
    新しいノードの名前を指定します。

検証手順

  1. 新しいノードが出力に存在することを確認します。

    $ oc get nodes --show-labels | grep cluster.ocs.openshift.io/openshift-storage= |cut -d' ' -f1
    Copy to Clipboard
  2. WorkloadsPods をクリックします。新しいノードの少なくとも次の Pod が Running 状態になっていることを確認します。

    • csi-cephfsplugin-*
    • csi-rbdplugin-*
  3. 他の必要なすべての OpenShift Data Foundation Pod が Running 状態にあることを確認します。
  4. 新しいオブジェクトストレージデバイス (OSD) Pod が置き換えるノードで実行されていることを確認します。

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

    直前の手順で特定された新しい各ノードに以下を実行します。

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

      $ oc debug node/<node_name>
      Copy to Clipboard
      $ chroot /host
      Copy to Clipboard
    2. 使用可能なブロックデバイスのリストを表示します。

      $ lsblk
      Copy to Clipboard

      1 つ以上の ocs-deviceset 名の横にある crypt キーワードを確認します。

  6. 検証手順が失敗した場合は、Red Hat サポートにお問い合わせください

1.1.3. ユーザーによってプロビジョニングされるインフラストラクチャーでの失敗した AWS ノードの置き換え

前提条件

  • 置き換えるノードが、置き換えるノードと同様のインフラストラクチャーとリソースで設定されていることを確認する必要がある。
  • OpenShift Container Platform クラスターにログインしている。

手順

  1. 置き換える必要のあるノードの Amazon Web Service (AWS) マシンインスタンスを特定します。
  2. AWS にログインし、特定した AWS マシンインスタンスを終了します。
  3. 必要なインフラストラクチャーで新規 AWS マシンインスタンスを作成します。プラットフォーム要件 を参照してください。
  4. 新規 AWS マシンインスタンスを使用して新規 OpenShift Container Platform ノードを作成します。
  5. Pending 状態の OpenShift Container Platform に関連する証明書署名要求 (CSR) の有無を確認します。

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

    $ oc adm certificate approve <certificate_name>
    Copy to Clipboard
    <certificate_name>
    CSR の名前を指定します。
  7. ComputeNodes をクリックします。新しいノードが Ready 状態にあることを確認します。
  8. 以下のいずれかを使用して、OpenShift Data Foundation ラベルを新規ノードに適用します。

    ユーザーインターフェイスから
    1. 新規ノードで、Action Menu (⋮)Edit Labels をクリックします。
    2. cluster.ocs.openshift.io/openshift-storage を追加し、Save をクリックします。
    コマンドラインインターフェイスの使用
    • 以下のコマンドを実行して、OpenShift Data Foundation ラベルを新規ノードに適用します。
    $ oc label node <new_node_name> cluster.ocs.openshift.io/openshift-storage=""
    Copy to Clipboard
    <new_node_name>
    新しいノードの名前を指定します。

検証手順

  1. 新しいノードが出力に存在することを確認します。

    $ oc get nodes --show-labels | grep cluster.ocs.openshift.io/openshift-storage= |cut -d' ' -f1
    Copy to Clipboard
  2. WorkloadsPods をクリックします。新しいノードの少なくとも次の Pod が Running 状態になっていることを確認します。

    • csi-cephfsplugin-*
    • csi-rbdplugin-*
  3. 他の必要なすべての OpenShift Data Foundation Pod が Running 状態にあることを確認します。
  4. 新しいオブジェクトストレージデバイス (OSD) Pod が置き換えるノードで実行されていることを確認します。

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

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

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

      $ oc debug node/<node_name>
      Copy to Clipboard
      $ chroot /host
      Copy to Clipboard
    2. 使用可能なブロックデバイスのリストを表示します。

      $ lsblk
      Copy to Clipboard

      1 つ以上の ocs-deviceset 名の横にある crypt キーワードを確認します。

  6. 検証手順が失敗した場合は、Red Hat サポートにお問い合わせください

1.1.4. インストーラーでプロビジョニングされるインフラストラクチャーでの失敗した AWS ノードの置き換え

手順

  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 Data Foundation ラベルを新規ノードに適用します。

    ユーザーインターフェイスから
    1. 新規ノードで、Action Menu (⋮)Edit Labels をクリックします。
    2. cluster.ocs.openshift.io/openshift-storage を追加し、Save をクリックします。
    コマンドラインインターフェイスの使用
    • OpenShift Data Foundation ラベルを新規ノードに適用します。
    $ oc label node <new_node_name> cluster.ocs.openshift.io/openshift-storage=""
    Copy to Clipboard
    <new_node_name>
    新しいノードの名前を指定します。
  9. オプション: 失敗した Amazon Web Service (AWS) インスタンスが自動的に削除されない場合は、AWS コンソールからインスタンスを終了します。

検証手順

  1. 新しいノードが出力に存在することを確認します。

    $ oc get nodes --show-labels | grep cluster.ocs.openshift.io/openshift-storage= |cut -d' ' -f1
    Copy to Clipboard
  2. WorkloadsPods をクリックします。新しいノードの少なくとも次の Pod が Running 状態になっていることを確認します。

    • csi-cephfsplugin-*
    • csi-rbdplugin-*
  3. 他の必要なすべての OpenShift Data Foundation Pod が Running 状態にあることを確認します。
  4. 新しいオブジェクトストレージデバイス (OSD) Pod が置き換えるノードで実行されていることを確認します。

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

    直前の手順で特定された新しい各ノードに以下を実行します。

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

      $ oc debug node/<node_name>
      Copy to Clipboard
      $ chroot /host
      Copy to Clipboard
    2. 使用可能なブロックデバイスのリストを表示します。

      $ lsblk
      Copy to Clipboard

      1 つ以上の ocs-deviceset 名の横にある crypt キーワードを確認します。

  6. 検証手順が失敗した場合は、Red Hat サポートにお問い合わせください

1.2. VMware にデプロイされた OpenShift Data Foundation

1.2.1. ユーザーによってプロビジョニングされるインフラストラクチャーで動作する VMware ノードの置き換え

前提条件

  • 置き換えるノードが、置き換えるノードと同様のインフラストラクチャーとリソースで設定されていることを確認する必要がある。
  • OpenShift Container Platform クラスターにログインしている。

手順

  1. 置き換える必要のあるノードとその仮想マシン (VM) を特定します。
  2. ノードにスケジュール対象外 (unschedulable) のマークを付けます。

    $ oc adm cordon <node_name>
    Copy to Clipboard
    <node_name>
    置き換える必要のあるノードの名前を指定します。
  3. ノードをドレイン (解放) します。

    $ oc adm drain <node_name> --force --delete-emptydir-data=true --ignore-daemonsets
    Copy to Clipboard
    重要

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

  4. ノードを削除します。

    $ oc delete nodes <node_name>
    Copy to Clipboard
  5. VMware vSphere にログインし、特定した VM を終了します。

    重要

    VM はインベントリーからのみ削除し、ディスクからは削除しないでください。

  6. 必要なインフラストラクチャーを使用して、VMware vSphere 上に新しい VM を作成します。プラットフォーム要件 を参照してください。
  7. 新規の仮想マシンを使用して新規 OpenShift Container Platform ワーカーノードを作成します。
  8. Pending 状態の OpenShift Container Platform に関連する証明書署名要求 (CSR) の有無を確認します。

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

    $ oc adm certificate approve <certificate_name>
    Copy to Clipboard
    <certificate_name>
    CSR の名前を指定します。
  10. ComputeNodes をクリックします。新しいノードが Ready 状態にあることを確認します。
  11. 以下のいずれかを使用して、OpenShift Data Foundation ラベルを新規ノードに適用します。

    ユーザーインターフェイスから
    1. 新規ノードで、Action Menu (⋮)Edit Labels をクリックします。
    2. cluster.ocs.openshift.io/openshift-storage を追加し、Save をクリックします。
    コマンドラインインターフェイスの使用
    • OpenShift Data Foundation ラベルを新規ノードに適用します。
    $ oc label node <new_node_name> cluster.ocs.openshift.io/openshift-storage=""
    Copy to Clipboard
    <new_node_name>
    新しいノードの名前を指定します。

検証手順

  1. 新しいノードが出力に存在することを確認します。

    $ oc get nodes --show-labels | grep cluster.ocs.openshift.io/openshift-storage= |cut -d' ' -f1
    Copy to Clipboard
  2. WorkloadsPods をクリックします。新しいノードの少なくとも次の Pod が Running 状態になっていることを確認します。

    • csi-cephfsplugin-*
    • csi-rbdplugin-*
  3. 他の必要なすべての OpenShift Data Foundation Pod が Running 状態にあることを確認します。
  4. 新しいオブジェクトストレージデバイス (OSD) Pod が置き換えるノードで実行されていることを確認します。

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

    直前の手順で特定された新しい各ノードに以下を実行します。

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

      $ oc debug node/<node_name>
      Copy to Clipboard
      $ chroot /host
      Copy to Clipboard
    2. 使用可能なブロックデバイスのリストを表示します。

      $ lsblk
      Copy to Clipboard

      1 つ以上の ocs-deviceset 名の横にある crypt キーワードを確認します。

  6. 検証手順が失敗した場合は、Red Hat サポートにお問い合わせください

1.2.2. インストーラーでプロビジョニングされるインフラストラクチャーで動作する VMware ノードの置き換え

手順

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

    $ oc adm cordon <node_name>
    Copy to Clipboard
    <node_name>
    置き換える必要のあるノードの名前を指定します。
  4. ノードをドレイン (解放) します。

    $ oc adm drain <node_name> --force --delete-emptydir-data=true --ignore-daemonsets
    Copy to Clipboard
    重要

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

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

    重要

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

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

    ユーザーインターフェイスから
    1. 新規ノードで、Action Menu (⋮)Edit Labels をクリックします。
    2. cluster.ocs.openshift.io/openshift-storage を追加し、Save をクリックします。
    コマンドラインインターフェイスの使用
    • OpenShift Data Foundation ラベルを新規ノードに適用します。
    $ oc label node <new_node_name> cluster.ocs.openshift.io/openshift-storage=""
    Copy to Clipboard
    <new_node_name>
    新しいノードの名前を指定します。

検証手順

  1. 新しいノードが出力に存在することを確認します。

    $ oc get nodes --show-labels | grep cluster.ocs.openshift.io/openshift-storage= |cut -d' ' -f1
    Copy to Clipboard
  2. WorkloadsPods をクリックします。新しいノードの少なくとも次の Pod が Running 状態になっていることを確認します。

    • csi-cephfsplugin-*
    • csi-rbdplugin-*
  3. 他の必要なすべての OpenShift Data Foundation Pod が Running 状態にあることを確認します。
  4. 新しいオブジェクトストレージデバイス (OSD) Pod が置き換えるノードで実行されていることを確認します。

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

    直前の手順で特定された新しい各ノードに以下を実行します。

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

      $ oc debug node/<node_name>
      Copy to Clipboard
      $ chroot /host
      Copy to Clipboard
    2. 使用可能なブロックデバイスのリストを表示します。

      $ lsblk
      Copy to Clipboard

      1 つ以上の ocs-deviceset 名の横にある crypt キーワードを確認します。

  6. 検証手順が失敗した場合は、Red Hat サポートにお問い合わせください

1.2.3. ユーザーによってプロビジョニングされるインフラストラクチャーでの失敗した VMware ノードの置き換え

前提条件

  • 置き換えるノードが、置き換えるノードと同様のインフラストラクチャーとリソースで設定されていることを確認する必要がある。
  • OpenShift Container Platform クラスターにログインしている。

手順

  1. 置き換える必要のあるノードとその仮想マシン (VM) を特定します。
  2. ノードを削除します。

    $ oc delete nodes <node_name>
    Copy to Clipboard
    <node_name>
    置き換える必要のあるノードの名前を指定します。
  3. VMware vSphere にログインし、特定した VM を終了します。

    重要

    VM はインベントリーからのみ削除し、ディスクからは削除しないでください。

  4. 必要なインフラストラクチャーを使用して、VMware vSphere 上に新しい VM を作成します。プラットフォーム要件 を参照してください。
  5. 新規の仮想マシンを使用して新規 OpenShift Container Platform ワーカーノードを作成します。
  6. Pending 状態の OpenShift Container Platform に関連する証明書署名要求 (CSR) の有無を確認します。

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

    $ oc adm certificate approve <certificate_name>
    Copy to Clipboard
    <certificate_name>
    CSR の名前を指定します。
  8. ComputeNodes をクリックします。新しいノードが Ready 状態にあることを確認します。
  9. 以下のいずれかを使用して、OpenShift Data Foundation ラベルを新規ノードに適用します。

    ユーザーインターフェイスから
    1. 新規ノードで、Action Menu (⋮)Edit Labels をクリックします。
    2. cluster.ocs.openshift.io/openshift-storage を追加し、Save をクリックします。
    コマンドラインインターフェイスの使用
    • OpenShift Data Foundation ラベルを新規ノードに適用します。
    $ oc label node <new_node_name> cluster.ocs.openshift.io/openshift-storage=""
    Copy to Clipboard
    <new_node_name>
    新しいノードの名前を指定します。

検証手順

  1. 新しいノードが出力に存在することを確認します。

    $ oc get nodes --show-labels | grep cluster.ocs.openshift.io/openshift-storage= |cut -d' ' -f1
    Copy to Clipboard
  2. WorkloadsPods をクリックします。新しいノードの少なくとも次の Pod が Running 状態になっていることを確認します。

    • csi-cephfsplugin-*
    • csi-rbdplugin-*
  3. 他の必要なすべての OpenShift Data Foundation Pod が Running 状態にあることを確認します。
  4. 新しいオブジェクトストレージデバイス (OSD) Pod が置き換えるノードで実行されていることを確認します。

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

    直前の手順で特定された新しい各ノードに以下を実行します。

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

      $ oc debug node/<node_name>
      Copy to Clipboard
      $ chroot /host
      Copy to Clipboard
    2. 使用可能なブロックデバイスのリストを表示します。

      $ lsblk
      Copy to Clipboard

      1 つ以上の ocs-deviceset 名の横にある crypt キーワードを確認します。

  6. 検証手順が失敗した場合は、Red Hat サポートにお問い合わせください

1.2.4. インストーラーでプロビジョニングされるインフラストラクチャーでの失敗した VMware ノードの置き換え

手順

  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 Data Foundation ラベルを新規ノードに適用します。

    ユーザーインターフェイスから
    1. 新規ノードで、Action Menu (⋮)Edit Labels をクリックします。
    2. cluster.ocs.openshift.io/openshift-storage を追加し、Save をクリックします。
    コマンドラインインターフェイスの使用
    • OpenShift Data Foundation ラベルを新規ノードに適用します。
    $ oc label node <new_node_name> cluster.ocs.openshift.io/openshift-storage=""
    Copy to Clipboard
    <new_node_name>
    新しいノードの名前を指定します。
  9. オプション: 障害が発生した仮想マシン (VM) が自動的に削除されない場合は、VMware vSphere から VM を終了します。

検証手順

  1. 新しいノードが出力に存在することを確認します。

    $ oc get nodes --show-labels | grep cluster.ocs.openshift.io/openshift-storage= |cut -d' ' -f1
    Copy to Clipboard
  2. WorkloadsPods をクリックします。新しいノードの少なくとも次の Pod が Running 状態になっていることを確認します。

    • csi-cephfsplugin-*
    • csi-rbdplugin-*
  3. 他の必要なすべての OpenShift Data Foundation Pod が Running 状態にあることを確認します。
  4. 新しいオブジェクトストレージデバイス (OSD) Pod が置き換えるノードで実行されていることを確認します。

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

    直前の手順で特定された新しい各ノードに以下を実行します。

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

      $ oc debug node/<node_name>
      Copy to Clipboard
      $ chroot /host
      Copy to Clipboard
    2. 使用可能なブロックデバイスのリストを表示します。

      $ lsblk
      Copy to Clipboard

      1 つ以上の ocs-deviceset 名の横にある crypt キーワードを確認します。

  6. 検証手順が失敗した場合は、Red Hat サポートにお問い合わせください

1.3. Red Hat Virtualization にデプロイされた OpenShift Data Foundation

1.3.1. インストーラーでプロビジョニングされるインフラストラクチャーで動作する Red Hat Virtualization ノードの置き換え

手順

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

    $ oc adm cordon <node_name>
    Copy to Clipboard
    <node_name>
    置き換える必要のあるノードの名前を指定します。
  4. ノードをドレイン (解放) します。

    $ oc adm drain <node_name> --force --delete-emptydir-data=true --ignore-daemonsets
    Copy to Clipboard
    重要

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

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

    重要

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

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

    ユーザーインターフェイスから
    1. 新規ノードで、Action Menu (⋮) → Edit Labels をクリックします。
    2. cluster.ocs.openshift.io/openshift-storage を追加し、Save をクリックします。
    コマンドラインインターフェイスの使用
    • OpenShift Data Foundation ラベルを新規ノードに適用します。
    $ oc label node <new_node_name> cluster.ocs.openshift.io/openshift-storage=""
    Copy to Clipboard
    <new_node_name>
    新しいノードの名前を指定します。

検証手順

  1. 新しいノードが出力に存在することを確認します。

    $ oc get nodes --show-labels | grep cluster.ocs.openshift.io/openshift-storage= |cut -d' ' -f1
    Copy to Clipboard
  2. WorkloadsPods をクリックします。新しいノードの少なくとも次の Pod が Running 状態になっていることを確認します。

    • csi-cephfsplugin-*
    • csi-rbdplugin-*
  3. 他の必要なすべての OpenShift Data Foundation Pod が Running 状態にあることを確認します。
  4. 新しいオブジェクトストレージデバイス (OSD) Pod が置き換えるノードで実行されていることを確認します。

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

    直前の手順で特定された新しい各ノードに以下を実行します。

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

      $ oc debug node/<node_name>
      Copy to Clipboard
      $ chroot /host
      Copy to Clipboard
    2. 使用可能なブロックデバイスのリストを表示します。

      $ lsblk
      Copy to Clipboard

      1 つ以上の ocs-deviceset 名の横にある crypt キーワードを確認します。

  6. 検証手順が失敗した場合は、Red Hat サポートにお問い合わせください

1.3.2. インストーラーでプロビジョニングされるインフラストラクチャーで障害のある Red Hat Virtualization ノードの置き換え

手順

  1. OpenShift Web コンソール にログインし、Compute → Nodes をクリックします。
  2. 障害のあるノードを特定します。その マシン名 をメモします。
  3. 仮想マシン (VM) インスタンスを削除するときに、ディスクが削除されていないことを確認してください。

    • Red Hat Virtualization 管理ポータル にログインし、障害が発生した VM からモニター Pod とオブジェクトストレージデバイス (OSD) に関連付けられている仮想ディスクを削除します。

      重要

      1 つ以上のディスクを取り外すときは、Remove Permanently オプションを選択しないでください。

  4. OpenShift Web コンソール で、Compute → Machines をクリックします。必要なマシンを検索します。
  5. Actions → Edit Annotations をクリックし、Add More をクリックします。
  6. machine.openshift.io/exclude-node-draining を追加し、Save をクリックします。
  7. Actions → Delete Machine をクリックしてから、Delete をクリックします。

    新しいマシンが自動的に作成されます。新しいマシンが起動するのを待ちます。

    重要

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

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

    ユーザーインターフェイスから
    1. 新規ノードで、Action Menu (⋮) → Edit Labels をクリックします。
    2. cluster.ocs.openshift.io/openshift-storage を追加し、Save をクリックします。
    コマンドラインインターフェイスの使用
    • OpenShift Data Foundation ラベルを新規ノードに適用します。
    $ oc label node <new_node_name> cluster.ocs.openshift.io/openshift-storage=""
    Copy to Clipboard
    <new_node_name>
    新しいノードの名前を指定します。
  10. オプション: 失敗した仮想マシンが自動的に削除されない場合は、Red Hat Virtualization 管理ポータルから仮想マシンを削除します。

検証手順

  1. 新しいノードが出力に存在することを確認します。

    $ oc get nodes --show-labels | grep cluster.ocs.openshift.io/openshift-storage= |cut -d' ' -f1
    Copy to Clipboard
  2. WorkloadsPods をクリックします。新しいノードの少なくとも次の Pod が Running 状態になっていることを確認します。

    • csi-cephfsplugin-*
    • csi-rbdplugin-*
  3. 他の必要なすべての OpenShift Data Foundation Pod が Running 状態にあることを確認します。
  4. 新しいオブジェクトストレージデバイス (OSD) Pod が置き換えるノードで実行されていることを確認します。

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

    直前の手順で特定された新しい各ノードに以下を実行します。

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

      $ oc debug node/<node_name>
      Copy to Clipboard
      $ chroot /host
      Copy to Clipboard
    2. 使用可能なブロックデバイスのリストを表示します。

      $ lsblk
      Copy to Clipboard

      1 つ以上の ocs-deviceset 名の横にある crypt キーワードを確認します。

  6. 検証手順が失敗した場合は、Red Hat サポートにお問い合わせください

1.4. Microsoft Azure にデプロイされた OpenShift Data Foundation

1.4.1. Azure のインストーラーでプロビジョニングされるインフラストラクチャーで動作するノードの置き換え

手順

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

    $ oc adm cordon <node_name>
    Copy to Clipboard
    <node_name>
    置き換える必要のあるノードの名前を指定します。
  4. ノードをドレイン (解放) します。

    $ oc adm drain <node_name> --force --delete-emptydir-data=true --ignore-daemonsets
    Copy to Clipboard
    重要

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

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

    重要

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

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

    ユーザーインターフェイスから
    1. 新規ノードで、Action Menu (⋮)Edit Labels をクリックします。
    2. cluster.ocs.openshift.io/openshift-storage を追加し、Save をクリックします。
    コマンドラインインターフェイスの使用
    • 以下のコマンドを実行して、OpenShift Data Foundation ラベルを新規ノードに適用します。
    $ oc label node <new_node_name> cluster.ocs.openshift.io/openshift-storage=""
    Copy to Clipboard
    <new_node_name>
    新しいノードの名前を指定します。

検証手順

  1. 新しいノードが出力に存在することを確認します。

    $ oc get nodes --show-labels | grep cluster.ocs.openshift.io/openshift-storage= |cut -d' ' -f1
    Copy to Clipboard
  2. WorkloadsPods をクリックします。新しいノードの少なくとも次の Pod が Running 状態になっていることを確認します。

    • csi-cephfsplugin-*
    • csi-rbdplugin-*
  3. 他の必要なすべての OpenShift Data Foundation Pod が Running 状態にあることを確認します。
  4. 新しいオブジェクトストレージデバイス (OSD) Pod が置き換えるノードで実行されていることを確認します。

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

    直前の手順で特定された新しい各ノードに以下を実行します。

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

      $ oc debug node/<node_name>
      Copy to Clipboard
      $ chroot /host
      Copy to Clipboard
    2. 使用可能なブロックデバイスのリストを表示します。

      $ lsblk
      Copy to Clipboard

      1 つ以上の ocs-deviceset 名の横にある crypt キーワードを確認します。

  6. 検証手順が失敗した場合は、Red Hat サポートにお問い合わせください

1.4.2. Azure のインストーラーでプロビジョニングされるインフラストラクチャーでの失敗したノードの置き換え

手順

  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 Data Foundation ラベルを新規ノードに適用します。

    ユーザーインターフェイスから
    1. 新規ノードで、Action Menu (⋮)Edit Labels をクリックします。
    2. cluster.ocs.openshift.io/openshift-storage を追加し、Save をクリックします。
    コマンドラインインターフェイスの使用
    • OpenShift Data Foundation ラベルを新規ノードに適用します。
    $ oc label node <new_node_name> cluster.ocs.openshift.io/openshift-storage=""
    Copy to Clipboard
    <new_node_name>
    新しいノードの名前を指定します。
  9. オプション: 失敗した Azure インスタンスが自動的に削除されない場合、インスタンスを Azure コンソールで終了します。

検証手順

  1. 新しいノードが出力に存在することを確認します。

    $ oc get nodes --show-labels | grep cluster.ocs.openshift.io/openshift-storage= |cut -d' ' -f1
    Copy to Clipboard
  2. WorkloadsPods をクリックします。新しいノードの少なくとも次の Pod が Running 状態になっていることを確認します。

    • csi-cephfsplugin-*
    • csi-rbdplugin-*
  3. 他の必要なすべての OpenShift Data Foundation Pod が Running 状態にあることを確認します。
  4. 新しいオブジェクトストレージデバイス (OSD) Pod が置き換えるノードで実行されていることを確認します。

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

    直前の手順で特定された新しい各ノードに以下を実行します。

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

      $ oc debug node/<node_name>
      Copy to Clipboard
      $ chroot /host
      Copy to Clipboard
    2. 使用可能なブロックデバイスのリストを表示します。

      $ lsblk
      Copy to Clipboard

      1 つ以上の ocs-deviceset 名の横にある crypt キーワードを確認します。

  6. 検証手順が失敗した場合は、Red Hat サポートにお問い合わせください

第2章 ローカルストレージデバイスを使用してデプロイされた OpenShift Data Foundation

2.1. ベアメタルインフラストラクチャーでのストレージノードの置き換え

2.1.1. ユーザーによってプロビジョニングされるインフラストラクチャーで動作するノードの置き換え

前提条件

  • 置き換えるノードが、置き換えるノードと同様のインフラストラクチャー、リソース、およびディスクで設定されていることを確認する必要がある。
  • OpenShift Container Platform クラスターにログインしている。

手順

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

    $ oc get nodes --show-labels | grep <node_name>
    Copy to Clipboard
    <node_name>
    置き換える必要のあるノードの名前を指定します。
  2. モニター Pod (存在する場合)、および置き換える必要のあるノードで実行されている OSD を特定します。

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

    以下に例を示します。

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

    $ oc adm cordon <node_name>
    Copy to Clipboard
  5. ノードをドレイン (解放) します。

    $ oc adm drain <node_name> --force --delete-emptydir-data=true --ignore-daemonsets
    Copy to Clipboard
  6. ノードを削除します。

    $ oc delete node <node_name>
    Copy to Clipboard
  7. 必要なインフラストラクチャーで新規のベアメタルマシンを取得します。ベアメタルへのインストール を参照します。

    重要

    OpenShift Data Foundation を 3 ノードの OpenShift のコンパクトなベアメタルクラスターにインストールした場合にマスターノードを置き換える方法については、OpenShift Container Platform ドキュメントのBackup and Restoreガイドを参照してください。

  8. 新規ベアメタルマシンを使用して新規 OpenShift Container Platform ノードを作成します。
  9. Pending 状態の OpenShift Container Platform に関連する証明書署名要求 (CSR) の有無を確認します。

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

    $ oc adm certificate approve <certificate_name>
    Copy to Clipboard
    <certificate_name>
    CSR の名前を指定します。
  11. OpenShift Web コンソールで Compute → Nodes をクリックします。新しいノードが Ready 状態にあることを確認します。
  12. 以下のいずれかを使用して、OpenShift Data Foundation ラベルを新規ノードに適用します。

    ユーザーインターフェイスから
    1. 新規ノードで、Action Menu (⋮) → Edit Labels をクリックします。
    2. cluster.ocs.openshift.io/openshift-storage を追加し、Save をクリックします。
    コマンドラインインターフェイスの使用
    • OpenShift Data Foundation ラベルを新規ノードに適用します。
    $ oc label node <new_node_name> cluster.ocs.openshift.io/openshift-storage=""
    Copy to Clipboard
    <new_node_name>
    新しいノードの名前を指定します。
  13. OpenShift ローカルストレージ Operator がインストールされている namespace を特定し、これを local_storage_project 変数に割り当てます。

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

    以下に例を示します。

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

    出力例:

    openshift-local-storage
    Copy to Clipboard
  14. 新規ワーカーノードを localVolumeDiscovery および localVolumeSet に追加します。

    1. localVolumeDiscovery 定義を更新し、新規ノードを追加して失敗したノードを削除します。

      # oc edit -n $local_storage_project localvolumediscovery auto-discover-devices
      Copy to Clipboard

      出力例:

      [...]
         nodeSelector:
          nodeSelectorTerms:
            - matchExpressions:
                - key: kubernetes.io/hostname
                  operator: In
                  values:
                  - server1.example.com
                  - server2.example.com
                  #- server3.example.com
                  - newnode.example.com
      [...]
      Copy to Clipboard

      エディターを終了する前に必ず保存します。

      この例では、server3.example.com が削除され、newnode.example.com が新しいノードになります。

    2. 編集する localVolumeSet を決定します。

      # oc get -n $local_storage_project localvolumeset
      Copy to Clipboard

      出力例:

      NAME          AGE
      localblock   25h
      Copy to Clipboard
    3. localVolumeSet 定義を更新して、新規ノードを追加し、障害が発生したノードを削除します。

      # oc edit -n $local_storage_project localvolumeset localblock
      Copy to Clipboard

      出力例:

      [...]
         nodeSelector:
          nodeSelectorTerms:
            - matchExpressions:
                - key: kubernetes.io/hostname
                  operator: In
                  values:
                  - server1.example.com
                  - server2.example.com
                  #- server3.example.com
                  - newnode.example.com
      [...]
      Copy to Clipboard

      エディターを終了する前に必ず保存します。

      この例では、server3.example.com が削除され、newnode.example.com が新しいノードになります。

  15. 新しい localblock 永続ボリューム (PV) が使用可能であることを確認します。

    $oc get pv | grep localblock | grep Available
    Copy to Clipboard

    出力例:

    local-pv-551d950     512Gi    RWO    Delete  Available
    localblock     26s
    Copy to Clipboard
  16. openshift-storage プロジェクトに移動します。

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

    $ oc process -n openshift-storage ocs-osd-removal \
    -p FAILED_OSD_IDS=<failed_osd_id> -p FORCE_OSD_REMOVAL=true | oc create -f -
    Copy to Clipboard
    <failed_osd_id>

    rook-ceph-osd 接頭辞の直後の Pod 名の整数です。

    コマンドにコンマ区切りの OSD ID を追加して、複数の OSD を削除できます (例: FAILED_OSD_IDS=0,1,2)

    OSD が 3 つしかないクラスター、または OSD が削除された後にデータの 3 つのレプリカすべてを復元するにはスペースが不十分なクラスターでは、FORCE_OSD_REMOVAL 値を true に変更する必要があります。

  18. ocs-osd-removal-job Pod のステータスをチェックして、OSD が正常に削除されたことを確認します。

    Completed のステータスで、OSD の削除ジョブが正常に完了したことを確認します。

    # oc get pod -l job-name=ocs-osd-removal-job -n openshift-storage
    Copy to Clipboard
  19. OSD の取り外しが完了したことを確認します。

    $ oc logs -l job-name=ocs-osd-removal-job -n openshift-storage --tail=-1 | egrep -i 'completed removal'
    Copy to Clipboard

    出力例:

    2022-05-10 06:50:04.501511 I | cephosd: completed removal of OSD 0
    Copy to Clipboard
    重要

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

    以下に例を示します。

    # oc logs -l job-name=ocs-osd-removal-job -n openshift-storage --tail=-1
    Copy to Clipboard
  20. 永続ボリューム要求 (PVC) に関連付けられた永続ボリューム (PV) を特定します。

    # oc get pv -L kubernetes.io/hostname | grep localblock | grep Released
    Copy to Clipboard

    出力例:

    local-pv-d6bf175b  1490Gi  RWO  Delete  Released  openshift-storage/ocs-deviceset-0-data-0-6c5pw  localblock  2d22h  compute-1
    Copy to Clipboard

    Released 状態の PV がある場合は、これを削除します。

    # oc delete pv <persistent_volume>
    Copy to Clipboard

    以下に例を示します。

    # oc delete pv local-pv-d6bf175b
    Copy to Clipboard

    出力例:

    persistentvolume "local-pv-d9c5cbd6" deleted
    Copy to Clipboard
  21. crashcollector Pod デプロイメントを特定します。

    $ oc get deployment --selector=app=rook-ceph-crashcollector,node_name=<failed_node_name> -n openshift-storage
    Copy to Clipboard

    既存の crashcollector Pod デプロイメントがある場合は、これを削除します。

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

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

    出力例:

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

検証手順

  1. 新しいノードが出力に存在することを確認します。

    $ oc get nodes --show-labels | grep cluster.ocs.openshift.io/openshift-storage= |cut -d' ' -f1
    Copy to Clipboard
  2. Workloads → Pods をクリックします。新しいノードの少なくとも次の Pod が Running 状態になっていることを確認します。

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

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

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

    出力例:

    rook-ceph-mon-a-cd575c89b-b6k66         2/2     Running
    0          38m
    rook-ceph-mon-b-6776bc469b-tzzt8        2/2     Running
    0          38m
    rook-ceph-mon-d-5ff5d488b5-7v8xh        2/2     Running
    0          4m8s
    Copy to Clipboard

    OSD とモニター Pod が Running 状態になるまでに数分かかる場合があります。

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

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

    直前の手順で特定された新しい各ノードに以下を実行します。

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

      $ oc debug node/<node_name>
      Copy to Clipboard
      $ chroot /host
      Copy to Clipboard
    2. 使用可能なブロックデバイスのリストを表示します。

      $ lsblk
      Copy to Clipboard

      1 つ以上の ocs-deviceset 名の横にある crypt キーワードを確認します。

  6. 検証手順が失敗した場合は、Red Hat サポートにお問い合わせください

2.1.2. ユーザーによってプロビジョニングされるインフラストラクチャーでの失敗したノードの置き換え

前提条件

  • 置き換えるノードが、置き換えるノードと同様のインフラストラクチャー、リソース、およびディスクで設定されていることを確認する必要がある。
  • OpenShift Container Platform クラスターにログインしている。

手順

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

    $ oc get nodes --show-labels | grep <node_name>
    Copy to Clipboard
    <node_name>
    置き換える必要のあるノードの名前を指定します。
  2. モニター Pod (存在する場合)、および置き換える必要のあるノードで実行されている OSD を特定します。

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

    以下に例を示します。

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

    $ oc adm cordon <node_name>
    Copy to Clipboard
  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
  6. ノードをドレイン (解放) します。

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

    $ oc delete node <node_name>
    Copy to Clipboard
  8. 必要なインフラストラクチャーで新規のベアメタルマシンを取得します。ベアメタルへのインストール を参照します。

    重要

    OpenShift Data Foundation を 3 ノードの OpenShift のコンパクトなベアメタルクラスターにインストールした場合にマスターノードを置き換える方法については、OpenShift Container Platform ドキュメントのBackup and Restoreガイドを参照してください。

  9. 新規ベアメタルマシンを使用して新規 OpenShift Container Platform ノードを作成します。
  10. Pending 状態の OpenShift Container Platform に関連する証明書署名要求 (CSR) の有無を確認します。

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

    $ oc adm certificate approve <certificate_name>
    Copy to Clipboard
    <certificate_name>
    CSR の名前を指定します。
  12. OpenShift Web コンソールで Compute → Nodes をクリックします。新しいノードが Ready 状態にあることを確認します。
  13. 以下のいずれかを使用して、OpenShift Data Foundation ラベルを新規ノードに適用します。

    ユーザーインターフェイスから
    1. 新規ノードで、Action Menu (⋮) → Edit Labels をクリックします。
    2. cluster.ocs.openshift.io/openshift-storage を追加し、Save をクリックします。
    コマンドラインインターフェイスの使用
    • OpenShift Data Foundation ラベルを新規ノードに適用します。
    $ oc label node <new_node_name> cluster.ocs.openshift.io/openshift-storage=""
    Copy to Clipboard
    <new_node_name>
    新しいノードの名前を指定します。
  14. OpenShift ローカルストレージ Operator がインストールされている namespace を特定し、これを local_storage_project 変数に割り当てます。

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

    以下に例を示します。

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

    出力例:

    openshift-local-storage
    Copy to Clipboard
  15. 新規ワーカーノードを localVolumeDiscovery および localVolumeSet に追加します。

    1. localVolumeDiscovery 定義を更新し、新規ノードを追加して失敗したノードを削除します。

      # oc edit -n $local_storage_project localvolumediscovery auto-discover-devices
      Copy to Clipboard

      出力例:

      [...]
         nodeSelector:
          nodeSelectorTerms:
            - matchExpressions:
                - key: kubernetes.io/hostname
                  operator: In
                  values:
                  - server1.example.com
                  - server2.example.com
                  #- server3.example.com
                  - newnode.example.com
      [...]
      Copy to Clipboard

      エディターを終了する前に必ず保存します。

      この例では、server3.example.com が削除され、newnode.example.com が新しいノードになります。

    2. 編集する localVolumeSet を決定します。

      # oc get -n $local_storage_project localvolumeset
      Copy to Clipboard

      出力例:

      NAME          AGE
      localblock   25h
      Copy to Clipboard
    3. localVolumeSet 定義を更新して、新規ノードを追加し、障害が発生したノードを削除します。

      # oc edit -n $local_storage_project localvolumeset localblock
      Copy to Clipboard

      出力例:

      [...]
         nodeSelector:
          nodeSelectorTerms:
            - matchExpressions:
                - key: kubernetes.io/hostname
                  operator: In
                  values:
                  - server1.example.com
                  - server2.example.com
                  #- server3.example.com
                  - newnode.example.com
      [...]
      Copy to Clipboard

      エディターを終了する前に必ず保存します。

      この例では、server3.example.com が削除され、newnode.example.com が新しいノードになります。

  16. 新しい localblock 永続ボリューム (PV) が使用可能であることを確認します。

    $oc get pv | grep localblock | grep Available
    Copy to Clipboard

    出力例:

    local-pv-551d950     512Gi    RWO    Delete  Available
    localblock     26s
    Copy to Clipboard
  17. openshift-storage プロジェクトに移動します。

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

    $ oc process -n openshift-storage ocs-osd-removal \
    -p FAILED_OSD_IDS=<failed_osd_id> -p FORCE_OSD_REMOVAL=true | oc create -f -
    Copy to Clipboard
    <failed_osd_id>

    rook-ceph-osd 接頭辞の直後の Pod 名の整数です。

    コマンドにコンマ区切りの OSD ID を追加して、複数の OSD を削除できます (例: FAILED_OSD_IDS=0,1,2)

    OSD が 3 つしかないクラスター、または OSD が削除された後にデータの 3 つのレプリカすべてを復元するにはスペースが不十分なクラスターでは、FORCE_OSD_REMOVAL 値を true に変更する必要があります。

  19. ocs-osd-removal-job Pod のステータスをチェックして、OSD が正常に削除されたことを確認します。

    Completed のステータスで、OSD の削除ジョブが正常に完了したことを確認します。

    # oc get pod -l job-name=ocs-osd-removal-job -n openshift-storage
    Copy to Clipboard
  20. OSD の取り外しが完了したことを確認します。

    $ oc logs -l job-name=ocs-osd-removal-job -n openshift-storage --tail=-1 | egrep -i 'completed removal'
    Copy to Clipboard

    出力例:

    2022-05-10 06:50:04.501511 I | cephosd: completed removal of OSD 0
    Copy to Clipboard
    重要

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

    以下に例を示します。

    # oc logs -l job-name=ocs-osd-removal-job -n openshift-storage --tail=-1
    Copy to Clipboard
  21. 永続ボリューム要求 (PVC) に関連付けられた永続ボリューム (PV) を特定します。

    # oc get pv -L kubernetes.io/hostname | grep localblock | grep Released
    Copy to Clipboard

    出力例:

    local-pv-d6bf175b  1490Gi  RWO  Delete  Released  openshift-storage/ocs-deviceset-0-data-0-6c5pw  localblock  2d22h  compute-1
    Copy to Clipboard

    Released 状態の PV がある場合は、これを削除します。

    # oc delete pv <persistent_volume>
    Copy to Clipboard

    以下に例を示します。

    # oc delete pv local-pv-d6bf175b
    Copy to Clipboard

    出力例:

    persistentvolume "local-pv-d9c5cbd6" deleted
    Copy to Clipboard
  22. crashcollector Pod デプロイメントを特定します。

    $ oc get deployment --selector=app=rook-ceph-crashcollector,node_name=<failed_node_name> -n openshift-storage
    Copy to Clipboard

    既存の crashcollector Pod デプロイメントがある場合は、これを削除します。

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

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

    出力例:

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

検証手順

  1. 新しいノードが出力に存在することを確認します。

    $ oc get nodes --show-labels | grep cluster.ocs.openshift.io/openshift-storage= |cut -d' ' -f1
    Copy to Clipboard
  2. Workloads → Pods をクリックします。新しいノードの少なくとも次の Pod が Running 状態になっていることを確認します。

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

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

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

    出力例:

    rook-ceph-mon-a-cd575c89b-b6k66         2/2     Running
    0          38m
    rook-ceph-mon-b-6776bc469b-tzzt8        2/2     Running
    0          38m
    rook-ceph-mon-d-5ff5d488b5-7v8xh        2/2     Running
    0          4m8s
    Copy to Clipboard

    OSD とモニター Pod が Running 状態になるまでに数分かかる場合があります。

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

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

    直前の手順で特定された新しい各ノードに以下を実行します。

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

      $ oc debug node/<node_name>
      Copy to Clipboard
      $ chroot /host
      Copy to Clipboard
    2. 使用可能なブロックデバイスのリストを表示します。

      $ lsblk
      Copy to Clipboard

      1 つ以上の ocs-deviceset 名の横にある crypt キーワードを確認します。

  6. 検証手順が失敗した場合は、Red Hat サポートにお問い合わせください

2.2. IBM Z または IBM® LinuxONE インフラストラクチャーでのストレージノードの置き換え

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

2.2.1. IBM Z または IBM® LinuxONE インフラストラクチャーでの動作するノードの置き換え

以下の手順に従って、IBM Z または IBM® LinuxONE インフラストラクチャーで動作するノードを置き換えます。

手順

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

    $ oc get nodes --show-labels | grep <node_name>
    Copy to Clipboard
  2. 置き換えるノードで実行されている mon(ある場合) およびオブジェクトストレージデバイス (OSD) Pod を特定します。

    $ oc get pods -n openshift-storage -o wide | grep -i <node_name>
    Copy to Clipboard
  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
  4. ノードにスケジュール対象外 (unschedulable) のマークを付けます。

    $ oc adm cordon <node_name>
    Copy to Clipboard
  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
  6. ノードをドレイン (解放) します。

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

    $ oc delete node <node_name>
    Copy to Clipboard
  8. 新しい IBM Z ストレージノードを交換品として入手します。
  9. Pending 状態の OpenShift Data Foundation に関連する証明書署名要求 (CSR) の有無を確認します。

    $ oc get csr
    Copy to Clipboard
  10. 新規ノードに必要なすべての OpenShift Data Foundation CSR を承認します。

    $ oc adm certificate approve <Certificate_Name>
    Copy to Clipboard
  11. OpenShift Web コンソールで ComputeNodes をクリックし、新規ノードが Ready 状態にあることを確認します。
  12. 以下のいずれかを使用して、openshift-storage ラベルを新しいノードに適用します。

    ユーザーインターフェイスを使用する場合
    1. 新規ノードで、Action Menu (⋮)Edit Labels をクリックします。
    2. cluster.ocs.openshift.io/openshift-storage を追加し、Save をクリックします。
    コマンドラインインターフェイスの使用
    • 以下のコマンドを実行して、OpenShift Data Foundation ラベルを新規ノードに適用します。
    $ oc label node <new_node_name> cluster.ocs.openshift.io/openshift-storage=""
    Copy to Clipboard
  13. 新規ワーカーノードを localVolumeDiscovery および localVolumeSet に追加します。

    1. localVolumeDiscovery 定義を更新し、新規ノードを追加して失敗したノードを削除します。

      # oc edit -n local-storage-project localvolumediscovery auto-discover-devices
      [...]
         nodeSelector:
          nodeSelectorTerms:
            - matchExpressions:
                - key: kubernetes.io/hostname
                  operator: In
                  values:
                  - server1.example.com
                  - server2.example.com
                  #- server3.example.com
                  - newnode.example.com
      [...]
      Copy to Clipboard

      エディターを終了する前に必ず保存します。

      上記の例では、server3.example.com が削除され、newnode.example.com が新規ノードになります。

    2. 編集する localVolumeSet を決定します。

      以下のコマンドの local-storage-project は、ローカルストレージプロジェクトの名前に置き換えます。OpenShift Data Foundation 4.6 以降では、デフォルトのプロジェクト名は openshift-local-storage です。以前のバージョンでは、デフォルトで local-storage を使用します。

      # oc get -n local-storage-project localvolumeset
      NAME          AGE
      localblock   25h
      Copy to Clipboard
    3. localVolumeSet 定義を更新して、新規ノードを追加し、障害が発生したノードを削除します。

      # oc edit -n local-storage-project localvolumeset localblock
      [...]
         nodeSelector:
          nodeSelectorTerms:
            - matchExpressions:
                - key: kubernetes.io/hostname
                  operator: In
                  values:
                  - server1.example.com
                  - server2.example.com
                  #- server3.example.com
                  - newnode.example.com
      [...]
      Copy to Clipboard

      エディターを終了する前に必ず保存します。

      上記の例では、server3.example.com が削除され、newnode.example.com が新規ノードになります。

  14. 新規 localblock PV が利用可能であることを確認します。

    $ oc get pv | grep localblock
              CAPA- ACCESS RECLAIM                                STORAGE
    NAME      CITY  MODES  POLICY  STATUS     CLAIM               CLASS       AGE
    local-pv- 931Gi  RWO   Delete  Bound      openshift-storage/  localblock  25h
    3e8964d3                                  ocs-deviceset-2-0
                                              -79j94
    local-pv- 931Gi  RWO   Delete  Bound      openshift-storage/  localblock  25h
    414755e0                                  ocs-deviceset-1-0
                                              -959rp
    local-pv- 931Gi RWO Delete Available localblock 3m24s b481410
    local-pv- 931Gi  RWO   Delete  Bound      openshift-storage/  localblock  25h
    d9c5cbd6                                  ocs-deviceset-0-0
                                              -nvs68
    Copy to Clipboard
  15. openshift-storage プロジェクトを変更します。

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

    1. PVC を特定します。後に、その特定の PVC に関連付けられた PV を削除する必要があるためです。

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

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

      出力例:

      ceph.rook.io/pvc: ocs-deviceset-localblock-0-data-0-g2mmc
          ceph.rook.io/pvc: ocs-deviceset-localblock-0-data-0-g2mmc
      Copy to Clipboard

      この例では、PVC 名は ocs-deviceset-localblock-0-data-0-g2mmc です。

    2. 失敗した OSD をクラスターから削除します。

      $ oc process -n openshift-storage ocs-osd-removal -p FAILED_OSD_IDS=${osd_id_to_remove} |oc create -f -
      Copy to Clipboard

      コマンドにコンマ区切りの OSD ID を追加して、複数の OSD を削除できます。(例: FAILED_OSD_IDS=0,1,2)

      警告

      この手順により、OSD はクラスターから完全に削除されます。osd_id_to_remove の正しい値が指定されていることを確認します。

  17. ocs-osd-removal Pod のステータスをチェックして、OSD が正常に削除されたことを確認します。

    Completed のステータスで、OSD の削除ジョブが正常に完了したことを確認します。

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

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

    # oc logs -l job-name=ocs-osd-removal-osd_id_to_remove -n openshift-storage --tail=-1
    Copy to Clipboard

    次のように、削除された OSD を手動でクリーンアップする必要がある場合があります。

    ceph osd crush remove osd.osd_id_to_remove
    ceph osd rm osd_id_to_remove
    ceph auth del osd.osd_id_to_remove
    ceph osd crush rm osd_id_to_remove
    Copy to Clipboard
  18. 障害のあるノードに関連付けられた PV を削除します。

    1. PVC に関連付けられた PV を特定します。

      PVC 名は、失敗した OSD をクラスターから削除する際に取得された名前と同じである必要があります。

      # oc get pv -L kubernetes.io/hostname | grep localblock | grep Released
      local-pv-5c9b8982  500Gi  RWO  Delete  Released  openshift-storage/ocs-deviceset-localblock-0-data-0-g2mmc  localblock  24h  worker-0
      Copy to Clipboard
    2. Released 状態の PV がある場合は、これを削除します。

      # oc delete pv <persistent-volume>
      Copy to Clipboard

      以下に例を示します。

      # oc delete pv local-pv-5c9b8982
      persistentvolume "local-pv-5c9b8982" deleted
      Copy to Clipboard
  19. crashcollector Pod デプロイメントを特定します。

    $ oc get deployment --selector=app=rook-ceph-crashcollector,node_name=<failed_node_name> -n openshift-storage
    Copy to Clipboard

    既存の crashcollector Pod デプロイメントがある場合は、これを削除します。

    $ oc delete deployment --selector=app=rook-ceph-crashcollector,node_name=<failed_node_name> -n openshift-storage
    Copy to Clipboard
  20. ocs-osd-removal ジョブを削除します。

    # oc delete job ocs-osd-removal-${osd_id_to_remove}
    Copy to Clipboard

    出力例:

    job.batch "ocs-osd-removal-0" deleted
    Copy to Clipboard

検証手順

  1. 新しいノードが出力に存在することを確認します。

    $ oc get nodes --show-labels | grep cluster.ocs.openshift.io/openshift-storage= |cut -d' ' -f1
    Copy to Clipboard
  2. WorkloadsPods をクリックします。新しいノードの少なくとも次の Pod が Running 状態になっていることを確認します。

    • csi-cephfsplugin-*
    • csi-rbdplugin-*
  3. 他の必要なすべての OpenShift Data Foundation Pod が Running 状態にあることを確認します。
  4. 新しいオブジェクトストレージデバイス (OSD) Pod が置き換えるノードで実行されていることを確認します。

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

    直前の手順で特定された新しい各ノードに以下を実行します。

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

      $ oc debug node/<node_name>
      Copy to Clipboard
      $ chroot /host
      Copy to Clipboard
    2. 使用可能なブロックデバイスのリストを表示します。

      $ lsblk
      Copy to Clipboard

      1 つ以上の ocs-deviceset 名の横にある crypt キーワードを確認します。

  6. 検証手順が失敗した場合は、Red Hat サポートにお問い合わせください

2.2.2. IBM Z または IBM® LinuxONE インフラストラクチャーでの障害のあるノードの置き換え

手順

  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 Data Foundation ラベルを新規ノードに適用します。

    ユーザーインターフェイスから
    1. 新規ノードで、Action Menu (⋮)Edit Labels をクリックします。
    2. cluster.ocs.openshift.io/openshift-storage を追加し、Save をクリックします。
    コマンドラインインターフェイスの使用
    • OpenShift Data Foundation ラベルを新規ノードに適用します。
    $ oc label node <new_node_name> cluster.ocs.openshift.io/openshift-storage=""
    Copy to Clipboard
    <new_node_name>
    新しいノードの名前を指定します。

検証手順

  1. 新しいノードが出力に存在することを確認します。

    $ oc get nodes --show-labels | grep cluster.ocs.openshift.io/openshift-storage= | cut -d' ' -f1
    Copy to Clipboard
  2. WorkloadsPods をクリックします。新しいノードの少なくとも次の Pod が Running 状態になっていることを確認します。

    • csi-cephfsplugin-*
    • csi-rbdplugin-*
  3. 他の必要なすべての OpenShift Data Foundation Pod が Running 状態にあることを確認します。
  4. 新しいオブジェクトストレージデバイス (OSD) Pod が置き換えるノードで実行されていることを確認します。

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

    直前の手順で特定された新しい各ノードに以下を実行します。

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

      $ oc debug node/<node_name>
      Copy to Clipboard
      $ chroot /host
      Copy to Clipboard
    2. 使用可能なブロックデバイスのリストを表示します。

      $ lsblk
      Copy to Clipboard

      1 つ以上の ocs-deviceset 名の横にある crypt キーワードを確認します。

  6. 検証手順が失敗した場合は、Red Hat サポートにお問い合わせください

2.3. IBM Power インフラストラクチャー上のストレージノードの置き換え

OpenShift Data Foundation の場合、IBM Power に関連するデプロイメントは、稼働中のノードに対してプロアクティブに、障害のあるノードに対してリアクティブにノードの置き換えを実行できます。

2.3.1. IBM Power で動作するストレージまたは障害のあるストレージノードの置き換え

前提条件

  • 置き換えるノードが、置き換えるノードと同様のインフラストラクチャーとリソースで設定されていることを確認してください。
  • OpenShift Container Platform クラスターにログインしている。

手順

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

    $ oc get nodes --show-labels | grep <node_name>
    Copy to Clipboard
    <node_name>
    置き換える必要のあるノードの名前を指定します。
  2. 置き換える必要のあるノードで実行されている mon (存在する場合) および Object Storage Device (OSD) Pod を特定します。

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

    以下に例を示します。

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

    $ oc adm cordon <node_name>
    Copy to Clipboard
  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
  6. ノードをドレイン (解放) します。

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

    $ oc delete node <node_name>
    Copy to Clipboard
  8. 必要なインフラストラクチャーで新規の IBM Power マシンを取得します。クラスターの IBM Power へのインストール を参照します。
  9. 新規 IBM Power マシンを使用して新規 OpenShift Container Platform ノードを作成します。
  10. Pending 状態の OpenShift Container Platform に関連する証明書署名要求 (CSR) の有無を確認します。

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

    $ oc adm certificate approve <certificate_name>
    Copy to Clipboard
    <certificate_name>
    CSR の名前を指定します。
  12. OpenShift Web コンソールで ComputeNodes をクリックします。新しいノードが Ready 状態にあることを確認します。
  13. 以下のいずれかを使用して、OpenShift Data Foundation ラベルを新規ノードに適用します。

    ユーザーインターフェイスから
    1. 新規ノードで、Action Menu (⋮)Edit Labels をクリックします。
    2. cluster.ocs.openshift.io/openshift-storage を追加し、Save をクリックします。
    コマンドラインインターフェイスの使用
    1. OpenShift Data Foundation ラベルを新規ノードに適用します。
    $ oc label node <new_node_name> cluster.ocs.openshift.io/openshift-storage=''
    Copy to Clipboard
    <new_node_name>
    新しいノードの名前を指定します。
  14. OpenShift ローカルストレージ Operator がインストールされている namespace を特定し、これを local_storage_project 変数に割り当てます。

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

    以下に例を示します。

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

    出力例:

    openshift-local-storage
    Copy to Clipboard
  15. 新しく追加されたワーカーノードを localVolume に追加します。

    1. 編集する必要のある localVolume を決定します。

      # oc get -n $local_storage_project localvolume
      Copy to Clipboard

      出力例:

      NAME           AGE
      localblock    25h
      Copy to Clipboard
    2. localVolume 定義を更新して、新規ノードを追加し、障害が発生したノードを削除します。

      # oc edit -n $local_storage_project localvolume localblock
      Copy to Clipboard

      出力例:

      [...]
          nodeSelector:
          nodeSelectorTerms:
            - matchExpressions:
                - key: kubernetes.io/hostname
                  operator: In
                  values:
                  #- worker-0
                  - worker-1
                  - worker-2
                  - worker-3
      [...]
      Copy to Clipboard

      エディターを終了する前に必ず保存します。

      この例では、worker-0 が削除され、worker-3 が新しいノードです。

  16. 新しい localblock 永続ボリューム (PV) が使用可能であることを確認します。

    $ oc get pv | grep localblock
    Copy to Clipboard

    出力例:

    NAME              CAPACITY   ACCESSMODES RECLAIMPOLICY STATUS     CLAIM             STORAGECLASS                 AGE
    local-pv-3e8964d3    500Gi    RWO         Delete       Bound      ocs-deviceset-localblock-2-data-0-mdbg9  localblock     25h
    local-pv-414755e0    500Gi    RWO         Delete       Bound      ocs-deviceset-localblock-1-data-0-4cslf  localblock     25h
    local-pv-b481410    500Gi     RWO        Delete       Available                                            localblock     3m24s
    local-pv-5c9b8982    500Gi    RWO         Delete       Bound      ocs-deviceset-localblock-0-data-0-g2mmc  localblock     25h
    Copy to Clipboard
  17. openshift-storage プロジェクトに移動します。

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

    1. 永続ボリュームクレーム (PVC) を特定します。

      $ osd_id_to_remove=1
      Copy to Clipboard
      $ oc get -n openshift-storage -o yaml deployment rook-ceph-osd-${<osd_id_to_remove>} | grep ceph.rook.io/pvc
      Copy to Clipboard

      ここで、<osd_id_to_remove>rook-ceph-osd 接頭辞の直後にくる Pod 名の整数です。

      この例では、デプロイメント名は rook-ceph-osd-1 です。

      出力例:

      ceph.rook.io/pvc: ocs-deviceset-localblock-0-data-0-g2mmc
          ceph.rook.io/pvc: ocs-deviceset-localblock-0-data-0-g2mmc
      Copy to Clipboard
    2. 失敗した OSD をクラスターから削除します。必要に応じて、複数の障害のある OSD を指定することができます。

      $ oc process -n openshift-storage ocs-osd-removal \
      -p FAILED_OSD_IDS=<failed_osd_id> -p FORCE_OSD_REMOVAL=true | oc create -f -
      Copy to Clipboard
      <failed_osd_id>

      rook-ceph-osd 接頭辞の直後の Pod 名の整数です。コマンドにコンマ区切りの OSD ID を追加して、複数の OSD を削除できます (例: FAILED_OSD_IDS=0,1,2)

      OSD が 3 つしかないクラスター、または OSD が削除された後にデータの 3 つのレプリカすべてを復元するにはスペースが不十分なクラスターでは、FORCE_OSD_REMOVAL 値を true に変更する必要があります。

      警告

      この手順により、OSD はクラスターから完全に削除されます。osd_id_to_remove の正しい値が指定されていることを確認します。

  19. ocs-osd-removal-job Pod のステータスをチェックして、OSD が正常に削除されたことを確認します。

    Completed のステータスで、OSD の削除ジョブが正常に完了したことを確認します。

    # oc get pod -l job-name=ocs-osd-removal-job -n openshift-storage
    Copy to Clipboard
  20. OSD の取り外しが完了したことを確認します。

    $ oc logs -l job-name=ocs-osd-removal-job -n openshift-storage --tail=-1 | egrep -i 'completed removal'
    Copy to Clipboard

    出力例:

    2022-05-10 06:50:04.501511 I | cephosd: completed removal of OSD 0
    Copy to Clipboard
    重要

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

    以下に例を示します。

    # oc logs -l job-name=ocs-osd-removal-job -n openshift-storage --tail=-1
    Copy to Clipboard
  21. 障害のあるノードに関連付けられた PV を削除します。

    1. PVC に関連付けられた PV を特定します。

      # oc get pv -L kubernetes.io/hostname | grep localblock | grep Released
      Copy to Clipboard

      出力例:

      local-pv-5c9b8982  500Gi  RWO  Delete  Released  openshift-storage/ocs-deviceset-localblock-0-data-0-g2mmc  localblock  24h  worker-0
      Copy to Clipboard

      PVC 名は、失敗した OSD をクラスターから削除する際に取得された名前と同じである必要があります。

    2. Released 状態の PV がある場合は、これを削除します。

      # oc delete pv <persistent_volume>
      Copy to Clipboard

      以下に例を示します。

      # oc delete pv local-pv-5c9b8982
      Copy to Clipboard

      出力例:

      persistentvolume "local-pv-5c9b8982" deleted
      Copy to Clipboard
  22. crashcollector Pod デプロイメントを特定します。

    $ oc get deployment --selector=app=rook-ceph-crashcollector,node_name=<failed_node_name> -n openshift-storage
    Copy to Clipboard

    既存の crashcollector Pod デプロイメントがある場合は、これを削除します。

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

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

    出力例:

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

検証手順

  1. 新しいノードが出力に存在することを確認します。

    $ oc get nodes --show-labels | grep cluster.ocs.openshift.io/openshift-storage= |cut -d' ' -f1
    Copy to Clipboard
  2. WorkloadsPods をクリックします。新しいノードの少なくとも次の Pod が Running 状態になっていることを確認します。

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

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

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

    出力例:

    rook-ceph-mon-b-74f6dc9dd6-4llzq                                   1/1     Running     0          6h14m
    rook-ceph-mon-c-74948755c-h7wtx                                    1/1     Running     0          4h24m
    rook-ceph-mon-d-598f69869b-4bv49                                   1/1     Running     0          162m
    Copy to Clipboard

    OSD とモニター Pod が Running 状態になるまでに数分かかる場合があります。

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

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

    直前の手順で特定された新しい各ノードに以下を実行します。

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

      $ oc debug node/<node_name>
      Copy to Clipboard
      $ chroot /host
      Copy to Clipboard
    2. 使用可能なブロックデバイスのリストを表示します。

      $ lsblk
      Copy to Clipboard

      1 つ以上の ocs-deviceset 名の横にある crypt キーワードを確認します。

  6. 検証手順が失敗した場合は、Red Hat サポートにお問い合わせください

2.4. VMWare インフラストラクチャーでのストレージノードの置き換え

2.4.1. VMware のユーザーによってプロビジョニングされるインフラストラクチャーで動作するノードの置き換え

前提条件

  • 置き換えるノードが、置き換えるノードと同様のインフラストラクチャー、リソース、およびディスクで設定されていることを確認する必要がある。
  • OpenShift Container Platform クラスターにログインしている。

手順

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

    $ oc get nodes --show-labels | grep <node_name>
    Copy to Clipboard
    <node_name>
    置き換える必要のあるノードの名前を指定します。
  2. モニター Pod (存在する場合)、および置き換える必要のあるノードで実行されている OSD を特定します。

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

    以下に例を示します。

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

    $ oc adm cordon <node_name>
    Copy to Clipboard
  5. ノードをドレイン (解放) します。

    $ oc adm drain <node_name> --force --delete-emptydir-data=true --ignore-daemonsets
    Copy to Clipboard
  6. ノードを削除します。

    $ oc delete node <node_name>
    Copy to Clipboard
  7. VMware vSphere にログインし、特定した仮想マシン (VM) を終了します。
  8. 必要なインフラストラクチャーを使用して、VMware vSphere 上に新しい VM を作成します。インフラストラクチャーの要件 を参照します。
  9. 新規の仮想マシンを使用して新規 OpenShift Container Platform ワーカーノードを作成します。
  10. Pending 状態の OpenShift Container Platform に関連する証明書署名要求 (CSR) の有無を確認します。

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

    $ oc adm certificate approve <certificate_name>
    Copy to Clipboard
    <certificate_name>
    CSR の名前を指定します。
  12. OpenShift Web コンソールで Compute → Nodes をクリックします。新しいノードが Ready 状態にあることを確認します。
  13. 以下のいずれかを使用して、OpenShift Data Foundation ラベルを新規ノードに適用します。

    ユーザーインターフェイスから
    1. 新規ノードで、Action Menu (⋮) → Edit Labels をクリックします。
    2. cluster.ocs.openshift.io/openshift-storage を追加し、Save をクリックします。
    コマンドラインインターフェイスの使用
    • OpenShift Data Foundation ラベルを新規ノードに適用します。
    $ oc label node <new_node_name> cluster.ocs.openshift.io/openshift-storage=""
    Copy to Clipboard
    <new_node_name>
    新しいノードの名前を指定します。
  14. OpenShift ローカルストレージ Operator がインストールされている namespace を特定し、これを local_storage_project 変数に割り当てます。

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

    以下に例を示します。

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

    出力例:

    openshift-local-storage
    Copy to Clipboard
  15. 新規ワーカーノードを localVolumeDiscovery および localVolumeSet に追加します。

    1. localVolumeDiscovery 定義を更新し、新規ノードを追加して失敗したノードを削除します。

      # oc edit -n $local_storage_project localvolumediscovery auto-discover-devices
      Copy to Clipboard

      出力例:

      [...]
         nodeSelector:
          nodeSelectorTerms:
            - matchExpressions:
                - key: kubernetes.io/hostname
                  operator: In
                  values:
                  - server1.example.com
                  - server2.example.com
                  #- server3.example.com
                  - newnode.example.com
      [...]
      Copy to Clipboard

      エディターを終了する前に必ず保存します。

      この例では、server3.example.com が削除され、newnode.example.com が新しいノードになります。

    2. 編集する localVolumeSet を決定します。

      # oc get -n $local_storage_project localvolumeset
      Copy to Clipboard

      出力例:

      NAME          AGE
      localblock   25h
      Copy to Clipboard
    3. localVolumeSet 定義を更新して、新規ノードを追加し、障害が発生したノードを削除します。

      # oc edit -n $local_storage_project localvolumeset localblock
      Copy to Clipboard

      出力例:

      [...]
         nodeSelector:
          nodeSelectorTerms:
            - matchExpressions:
                - key: kubernetes.io/hostname
                  operator: In
                  values:
                  - server1.example.com
                  - server2.example.com
                  #- server3.example.com
                  - newnode.example.com
      [...]
      Copy to Clipboard

      エディターを終了する前に必ず保存します。

      この例では、server3.example.com が削除され、newnode.example.com が新しいノードになります。

  16. 新しい localblock 永続ボリューム (PV) が使用可能であることを確認します。

    $oc get pv | grep localblock | grep Available
    Copy to Clipboard

    出力例:

    local-pv-551d950     512Gi    RWO    Delete  Available
    localblock     26s
    Copy to Clipboard
  17. openshift-storage プロジェクトに移動します。

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

    $ oc process -n openshift-storage ocs-osd-removal \
    -p FAILED_OSD_IDS=<failed_osd_id> -p FORCE_OSD_REMOVAL=true | oc create -f -
    Copy to Clipboard
    <failed_osd_id>

    rook-ceph-osd 接頭辞の直後の Pod 名の整数です。

    コマンドにコンマ区切りの OSD ID を追加して、複数の OSD を削除できます (例: FAILED_OSD_IDS=0,1,2)

    OSD が 3 つしかないクラスター、または OSD が削除された後にデータの 3 つのレプリカすべてを復元するにはスペースが不十分なクラスターでは、FORCE_OSD_REMOVAL 値を true に変更する必要があります。

  19. ocs-osd-removal-job Pod のステータスをチェックして、OSD が正常に削除されたことを確認します。

    Completed のステータスで、OSD の削除ジョブが正常に完了したことを確認します。

    # oc get pod -l job-name=ocs-osd-removal-job -n openshift-storage
    Copy to Clipboard
  20. OSD の取り外しが完了したことを確認します。

    $ oc logs -l job-name=ocs-osd-removal-job -n openshift-storage --tail=-1 | egrep -i 'completed removal'
    Copy to Clipboard

    出力例:

    2022-05-10 06:50:04.501511 I | cephosd: completed removal of OSD 0
    Copy to Clipboard
    重要

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

    以下に例を示します。

    # oc logs -l job-name=ocs-osd-removal-job -n openshift-storage --tail=-1
    Copy to Clipboard
  21. 永続ボリューム要求 (PVC) に関連付けられた永続ボリューム (PV) を特定します。

    # oc get pv -L kubernetes.io/hostname | grep localblock | grep Released
    Copy to Clipboard

    出力例:

    local-pv-d6bf175b  1490Gi  RWO  Delete  Released  openshift-storage/ocs-deviceset-0-data-0-6c5pw  localblock  2d22h  compute-1
    Copy to Clipboard

    Released 状態の PV がある場合は、これを削除します。

    # oc delete pv <persistent_volume>
    Copy to Clipboard

    以下に例を示します。

    # oc delete pv local-pv-d6bf175b
    Copy to Clipboard

    出力例:

    persistentvolume "local-pv-d9c5cbd6" deleted
    Copy to Clipboard
  22. crashcollector Pod デプロイメントを特定します。

    $ oc get deployment --selector=app=rook-ceph-crashcollector,node_name=<failed_node_name> -n openshift-storage
    Copy to Clipboard

    既存の crashcollector Pod デプロイメントがある場合は、これを削除します。

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

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

    出力例:

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

検証手順

  1. 新しいノードが出力に存在することを確認します。

    $ oc get nodes --show-labels | grep cluster.ocs.openshift.io/openshift-storage= |cut -d' ' -f1
    Copy to Clipboard
  2. Workloads → Pods をクリックします。新しいノードの少なくとも次の Pod が Running 状態になっていることを確認します。

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

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

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

    出力例:

    rook-ceph-mon-a-cd575c89b-b6k66         2/2     Running
    0          38m
    rook-ceph-mon-b-6776bc469b-tzzt8        2/2     Running
    0          38m
    rook-ceph-mon-d-5ff5d488b5-7v8xh        2/2     Running
    0          4m8s
    Copy to Clipboard

    OSD とモニター Pod が Running 状態になるまでに数分かかる場合があります。

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

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

    直前の手順で特定された新しい各ノードに以下を実行します。

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

      $ oc debug node/<node_name>
      Copy to Clipboard
      $ chroot /host
      Copy to Clipboard
    2. 使用可能なブロックデバイスのリストを表示します。

      $ lsblk
      Copy to Clipboard

      1 つ以上の ocs-deviceset 名の横にある crypt キーワードを確認します。

  6. 検証手順が失敗した場合は、Red Hat サポートにお問い合わせください

2.4.2. VMware のインストーラーでプロビジョニングされるインフラストラクチャーで動作するノードの置き換え

前提条件

  • 置き換えるノードが、置き換えるノードと同様のインフラストラクチャー、リソース、およびディスクで設定されていることを確認する必要がある。
  • OpenShift Container Platform クラスターにログインしている。

手順

  1. OpenShift Web コンソールにログインし、Compute → Nodes をクリックします。
  2. 置き換える必要のあるノードを特定します。その マシン名 をメモします。
  3. ノードのラベルを取得します。

    $ oc get nodes --show-labels | grep <node_name>
    Copy to Clipboard
    <node_name>
    置き換える必要のあるノードの名前を指定します。
  4. ノードで実行されている mon (存在する場合) と Object Storage Devices (OSD) を特定します。

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

    以下に例を示します。

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

    $ oc adm cordon <node_name>
    Copy to Clipboard
  7. ノードをドレイン (解放) します。

    $ oc adm drain <node_name> --force --delete-emptydir-data=true --ignore-daemonsets
    Copy to Clipboard
  8. Compute → Machines をクリックします。必要なマシンを検索します。
  9. 必要なマシンの横にある Action menu (⋮) → Delete Machine をクリックします。
  10. Delete をクリックしてマシンの削除を確認します。新しいマシンが自動的に作成されます。
  11. 新規マシンが起動し、Running 状態に移行するまで待機します。

    重要

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

  12. OpenShift Web コンソールで Compute → Nodes をクリックします。新しいノードが Ready 状態にあることを確認します。
  13. 物理的に新規デバイスをノードに追加します。
  14. 以下のいずれかを使用して、OpenShift Data Foundation ラベルを新規ノードに適用します。

    ユーザーインターフェイスから
    1. 新規ノードで、Action Menu (⋮) → Edit Labels をクリックします。
    2. cluster.ocs.openshift.io/openshift-storage を追加し、Save をクリックします。
    コマンドラインインターフェイスの使用
    • OpenShift Data Foundation ラベルを新規ノードに適用します。
    $ oc label node <new_node_name> cluster.ocs.openshift.io/openshift-storage=""
    Copy to Clipboard
    <new_node_name>
    新しいノードの名前を指定します。
  15. OpenShift ローカルストレージ Operator がインストールされている namespace を特定し、これを local_storage_project 変数に割り当てます。

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

    以下に例を示します。

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

    出力例:

    openshift-local-storage
    Copy to Clipboard
  16. 新規ワーカーノードを localVolumeDiscovery および localVolumeSet に追加します。

    1. localVolumeDiscovery 定義を更新し、新規ノードを追加して失敗したノードを削除します。

      # oc edit -n $local_storage_project localvolumediscovery auto-discover-devices
      Copy to Clipboard

      出力例:

      [...]
         nodeSelector:
          nodeSelectorTerms:
            - matchExpressions:
                - key: kubernetes.io/hostname
                  operator: In
                  values:
                  - server1.example.com
                  - server2.example.com
                  #- server3.example.com
                  - newnode.example.com
      [...]
      Copy to Clipboard

      エディターを終了する前に必ず保存します。

      この例では、server3.example.com が削除され、newnode.example.com が新しいノードになります。

    2. 編集する必要がある localVolumeSet を決定します。

      # oc get -n $local_storage_project localvolumeset
      Copy to Clipboard

      出力例:

      NAME          AGE
      localblock   25h
      Copy to Clipboard
    3. localVolumeSet 定義を更新して、新規ノードを追加し、障害が発生したノードを削除します。

      # oc edit -n $local_storage_project localvolumeset localblock
      Copy to Clipboard

      出力例:

      [...]
         nodeSelector:
          nodeSelectorTerms:
            - matchExpressions:
                - key: kubernetes.io/hostname
                  operator: In
                  values:
                  - server1.example.com
                  - server2.example.com
                  #- server3.example.com
                  - newnode.example.com
      [...]
      Copy to Clipboard

      エディターを終了する前に必ず保存します。

      この例では、server3.example.com が削除され、newnode.example.com が新しいノードになります。

  17. 新しい localblock 永続ボリューム (PV) が使用可能であることを確認します。

    $ oc get pv | grep localblock | grep Available
    Copy to Clipboard

    出力例:

    local-pv-551d950     512Gi    RWO    Delete  Available
    localblock     26s
    Copy to Clipboard
  18. openshift-storage プロジェクトに移動します。

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

    $ oc process -n openshift-storage ocs-osd-removal \
    -p FAILED_OSD_IDS=<failed_osd_id> -p FORCE_OSD_REMOVAL=true | oc create -f -
    Copy to Clipboard
    <failed_osd_id>

    rook-ceph-osd 接頭辞の直後の Pod 名の整数です。

    コマンドにコンマ区切りの OSD ID を追加して、複数の OSD を削除できます (例: FAILED_OSD_IDS=0,1,2)

    OSD が 3 つしかないクラスター、または OSD が削除された後にデータの 3 つのレプリカすべてを復元するにはスペースが不十分なクラスターでは、FORCE_OSD_REMOVAL 値を true に変更する必要があります。

  20. ocs-osd-removal-job Pod のステータスをチェックして、OSD が正常に削除されたことを確認します。

    Completed のステータスで、OSD の削除ジョブが正常に完了したことを確認します。

    # oc get pod -l job-name=ocs-osd-removal-job -n openshift-storage
    Copy to Clipboard
  21. OSD の取り外しが完了したことを確認します。

    $ oc logs -l job-name=ocs-osd-removal-job -n openshift-storage --tail=-1 | egrep -i 'completed removal'
    Copy to Clipboard

    出力例:

    2022-05-10 06:50:04.501511 I | cephosd: completed removal of OSD 0
    Copy to Clipboard
    重要

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

    以下に例を示します。

    # oc logs -l job-name=ocs-osd-removal-job -n openshift-storage --tail=-1
    Copy to Clipboard
  22. 永続ボリュームクレーム (PVC) に関連付けられている PV を特定します。

    # oc get pv -L kubernetes.io/hostname | grep localblock | grep Released
    Copy to Clipboard

    出力例:

    local-pv-d6bf175b  1490Gi  RWO  Delete  Released  openshift-storage/ocs-deviceset-0-data-0-6c5pw  localblock  2d22h  compute-1
    Copy to Clipboard

    Released 状態の PV がある場合は、これを削除します。

    # oc delete pv <persistent_volume>
    Copy to Clipboard

    以下に例を示します。

    # oc delete pv local-pv-d6bf175b
    Copy to Clipboard

    出力例:

    persistentvolume "local-pv-d9c5cbd6" deleted
    Copy to Clipboard
  23. crashcollector Pod デプロイメントを特定します。

    $ oc get deployment --selector=app=rook-ceph-crashcollector,node_name=<failed_node_name> -n openshift-storage
    Copy to Clipboard

    既存の crashcollector Pod デプロイメントがある場合は、これを削除します。

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

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

    出力例:

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

検証手順

  1. 新しいノードが出力に存在することを確認します。

    $ oc get nodes --show-labels | grep cluster.ocs.openshift.io/openshift-storage= |cut -d' ' -f1
    Copy to Clipboard
  2. Workloads → Pods をクリックします。新しいノードの少なくとも次の Pod が Running 状態になっていることを確認します。

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

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

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

    出力例:

    rook-ceph-mon-a-cd575c89b-b6k66         2/2     Running
    0          38m
    rook-ceph-mon-b-6776bc469b-tzzt8        2/2     Running
    0          38m
    rook-ceph-mon-d-5ff5d488b5-7v8xh        2/2     Running
    0          4m8s
    Copy to Clipboard

    OSD とモニター Pod が Running 状態になるまでに数分かかる場合があります。

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

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

    直前の手順で特定された新しい各ノードに以下を実行します。

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

      $ oc debug node/<node_name>
      Copy to Clipboard
      $ chroot /host
      Copy to Clipboard
    2. 使用可能なブロックデバイスのリストを表示します。

      $ lsblk
      Copy to Clipboard

      1 つ以上の ocs-deviceset 名の横にある crypt キーワードを確認します。

  6. 検証手順が失敗した場合は、Red Hat サポートにお問い合わせください

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

前提条件

  • 置き換えるノードが、置き換えるノードと同様のインフラストラクチャー、リソース、およびディスクで設定されていることを確認する必要がある。
  • OpenShift Container Platform クラスターにログインしている。

手順

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

    $ oc get nodes --show-labels | grep <node_name>
    Copy to Clipboard
    <node_name>
    置き換える必要のあるノードの名前を指定します。
  2. モニター Pod (存在する場合)、および置き換える必要のあるノードで実行されている OSD を特定します。

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

    以下に例を示します。

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

    $ oc adm cordon <node_name>
    Copy to Clipboard
  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
  6. ノードをドレイン (解放) します。

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

    $ oc delete node <node_name>
    Copy to Clipboard
  8. VMware vSphere にログインし、特定した仮想マシン (VM) を終了します。
  9. 必要なインフラストラクチャーを使用して、VMware vSphere 上に新しい VM を作成します。インフラストラクチャーの要件 を参照します。
  10. 新規の仮想マシンを使用して新規 OpenShift Container Platform ワーカーノードを作成します。
  11. Pending 状態の OpenShift Container Platform に関連する証明書署名要求 (CSR) の有無を確認します。

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

    $ oc adm certificate approve <certificate_name>
    Copy to Clipboard
    <certificate_name>
    CSR の名前を指定します。
  13. OpenShift Web コンソールで Compute → Nodes をクリックします。新しいノードが Ready 状態にあることを確認します。
  14. 以下のいずれかを使用して、OpenShift Data Foundation ラベルを新規ノードに適用します。

    ユーザーインターフェイスから
    1. 新規ノードで、Action Menu (⋮) → Edit Labels をクリックします。
    2. cluster.ocs.openshift.io/openshift-storage を追加し、Save をクリックします。
    コマンドラインインターフェイスの使用
    • OpenShift Data Foundation ラベルを新規ノードに適用します。
    $ oc label node <new_node_name> cluster.ocs.openshift.io/openshift-storage=""
    Copy to Clipboard
    <new_node_name>
    新しいノードの名前を指定します。
  15. OpenShift ローカルストレージ Operator がインストールされている namespace を特定し、これを local_storage_project 変数に割り当てます。

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

    以下に例を示します。

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

    出力例:

    openshift-local-storage
    Copy to Clipboard
  16. 新規ワーカーノードを localVolumeDiscovery および localVolumeSet に追加します。

    1. localVolumeDiscovery 定義を更新し、新規ノードを追加して失敗したノードを削除します。

      # oc edit -n $local_storage_project localvolumediscovery auto-discover-devices
      Copy to Clipboard

      出力例:

      [...]
         nodeSelector:
          nodeSelectorTerms:
            - matchExpressions:
                - key: kubernetes.io/hostname
                  operator: In
                  values:
                  - server1.example.com
                  - server2.example.com
                  #- server3.example.com
                  - newnode.example.com
      [...]
      Copy to Clipboard

      エディターを終了する前に必ず保存します。

      この例では、server3.example.com が削除され、newnode.example.com が新しいノードになります。

    2. 編集する localVolumeSet を決定します。

      # oc get -n $local_storage_project localvolumeset
      Copy to Clipboard

      出力例:

      NAME          AGE
      localblock   25h
      Copy to Clipboard
    3. localVolumeSet 定義を更新して、新規ノードを追加し、障害が発生したノードを削除します。

      # oc edit -n $local_storage_project localvolumeset localblock
      Copy to Clipboard

      出力例:

      [...]
         nodeSelector:
          nodeSelectorTerms:
            - matchExpressions:
                - key: kubernetes.io/hostname
                  operator: In
                  values:
                  - server1.example.com
                  - server2.example.com
                  #- server3.example.com
                  - newnode.example.com
      [...]
      Copy to Clipboard

      エディターを終了する前に必ず保存します。

      この例では、server3.example.com が削除され、newnode.example.com が新しいノードになります。

  17. 新しい localblock 永続ボリューム (PV) が使用可能であることを確認します。

    $oc get pv | grep localblock | grep Available
    Copy to Clipboard

    出力例:

    local-pv-551d950     512Gi    RWO    Delete  Available
    localblock     26s
    Copy to Clipboard
  18. openshift-storage プロジェクトに移動します。

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

    $ oc process -n openshift-storage ocs-osd-removal \
    -p FAILED_OSD_IDS=<failed_osd_id> -p FORCE_OSD_REMOVAL=true | oc create -f -
    Copy to Clipboard
    <failed_osd_id>

    rook-ceph-osd 接頭辞の直後の Pod 名の整数です。

    コマンドにコンマ区切りの OSD ID を追加して、複数の OSD を削除できます (例: FAILED_OSD_IDS=0,1,2)

    OSD が 3 つしかないクラスター、または OSD が削除された後にデータの 3 つのレプリカすべてを復元するにはスペースが不十分なクラスターでは、FORCE_OSD_REMOVAL 値を true に変更する必要があります。

  20. ocs-osd-removal-job Pod のステータスをチェックして、OSD が正常に削除されたことを確認します。

    Completed のステータスで、OSD の削除ジョブが正常に完了したことを確認します。

    # oc get pod -l job-name=ocs-osd-removal-job -n openshift-storage
    Copy to Clipboard
  21. OSD の取り外しが完了したことを確認します。

    $ oc logs -l job-name=ocs-osd-removal-job -n openshift-storage --tail=-1 | egrep -i 'completed removal'
    Copy to Clipboard

    出力例:

    2022-05-10 06:50:04.501511 I | cephosd: completed removal of OSD 0
    Copy to Clipboard
    重要

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

    以下に例を示します。

    # oc logs -l job-name=ocs-osd-removal-job -n openshift-storage --tail=-1
    Copy to Clipboard
  22. 永続ボリューム要求 (PVC) に関連付けられた永続ボリューム (PV) を特定します。

    # oc get pv -L kubernetes.io/hostname | grep localblock | grep Released
    Copy to Clipboard

    出力例:

    local-pv-d6bf175b  1490Gi  RWO  Delete  Released  openshift-storage/ocs-deviceset-0-data-0-6c5pw  localblock  2d22h  compute-1
    Copy to Clipboard

    Released 状態の PV がある場合は、これを削除します。

    # oc delete pv <persistent_volume>
    Copy to Clipboard

    以下に例を示します。

    # oc delete pv local-pv-d6bf175b
    Copy to Clipboard

    出力例:

    persistentvolume "local-pv-d9c5cbd6" deleted
    Copy to Clipboard
  23. crashcollector Pod デプロイメントを特定します。

    $ oc get deployment --selector=app=rook-ceph-crashcollector,node_name=<failed_node_name> -n openshift-storage
    Copy to Clipboard

    既存の crashcollector Pod デプロイメントがある場合は、これを削除します。

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

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

    出力例:

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

検証手順

  1. 新しいノードが出力に存在することを確認します。

    $ oc get nodes --show-labels | grep cluster.ocs.openshift.io/openshift-storage= |cut -d' ' -f1
    Copy to Clipboard
  2. Workloads → Pods をクリックします。新しいノードの少なくとも次の Pod が Running 状態になっていることを確認します。

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

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

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

    出力例:

    rook-ceph-mon-a-cd575c89b-b6k66         2/2     Running
    0          38m
    rook-ceph-mon-b-6776bc469b-tzzt8        2/2     Running
    0          38m
    rook-ceph-mon-d-5ff5d488b5-7v8xh        2/2     Running
    0          4m8s
    Copy to Clipboard

    OSD とモニター Pod が Running 状態になるまでに数分かかる場合があります。

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

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

    直前の手順で特定された新しい各ノードに以下を実行します。

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

      $ oc debug node/<node_name>
      Copy to Clipboard
      $ chroot /host
      Copy to Clipboard
    2. 使用可能なブロックデバイスのリストを表示します。

      $ lsblk
      Copy to Clipboard

      1 つ以上の ocs-deviceset 名の横にある crypt キーワードを確認します。

  6. 検証手順が失敗した場合は、Red Hat サポートにお問い合わせください

2.4.4. VMware のインストーラーでプロビジョニングされるインフラストラクチャーで障害のあるノードの置き換え

前提条件

  • 置き換えるノードが、置き換えるノードと同様のインフラストラクチャー、リソース、およびディスクで設定されていることを確認する必要がある。
  • OpenShift Container Platform クラスターにログインしている。

手順

  1. OpenShift Web コンソールにログインし、Compute → Nodes をクリックします。
  2. 置き換える必要のあるノードを特定します。その マシン名 をメモします。
  3. ノードのラベルを取得します。

    $ oc get nodes --show-labels | grep _<node_name>_
    Copy to Clipboard
    <node_name>
    置き換える必要のあるノードの名前を指定します。
  4. ノードで実行されている mon (存在する場合) と Object Storage Devices (OSD) を特定します。

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

    以下に例を示します。

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

    $ oc adm cordon _<node_name>_
    Copy to Clipboard
  7. 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
  8. ノードをドレイン (解放) します。

    $ oc adm drain _<node_name>_ --force --delete-emptydir-data=true --ignore-daemonsets
    Copy to Clipboard
  9. Compute → Machines をクリックします。必要なマシンを検索します。
  10. 必要なマシンの横にある Action menu (⋮) → Delete Machine をクリックします。
  11. Delete をクリックして、マシンが削除されたことを確認します。新しいマシンが自動的に作成されます。
  12. 新規マシンが起動し、Running 状態に移行するまで待機します。

    重要

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

  13. OpenShift Web コンソールで Compute → Nodes をクリックします。新しいノードが Ready 状態にあることを確認します。
  14. 物理的に新規デバイスをノードに追加します。
  15. 以下のいずれかを使用して、OpenShift Data Foundation ラベルを新規ノードに適用します。

    ユーザーインターフェイスから
    1. 新規ノードで、Action Menu (⋮) → Edit Labels をクリックします。
    2. cluster.ocs.openshift.io/openshift-storage を追加し、Save をクリックします。
    コマンドラインインターフェイスの使用
    • OpenShift Data Foundation ラベルを新規ノードに適用します。
    $ oc label node _<new_node_name>_ cluster.ocs.openshift.io/openshift-storage=""
    Copy to Clipboard
    <new_node_name>
    新しいノードの名前を指定します。
  16. OpenShift ローカルストレージ Operator がインストールされている namespace を特定し、これを local_storage_project 変数に割り当てます。

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

    以下に例を示します。

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

    出力例:

    openshift-local-storage
    Copy to Clipboard
  17. 新規ワーカーノードを localVolumeDiscovery および localVolumeSet に追加します。

    1. localVolumeDiscovery 定義を更新し、新規ノードを追加して失敗したノードを削除します。

      # oc edit -n $local_storage_project localvolumediscovery auto-discover-devices
      Copy to Clipboard

      出力例:

      [...]
         nodeSelector:
          nodeSelectorTerms:
            - matchExpressions:
                - key: kubernetes.io/hostname
                  operator: In
                  values:
                  - server1.example.com
                  - server2.example.com
                  #- server3.example.com
                  - **newnode.example.com**
      [...]
      Copy to Clipboard

      エディターを終了する前に必ず保存します。

      この例では、server3.example.com が削除され、newnode.example.com が新しいノードになります。

    2. 編集する必要がある localVolumeSet を決定します。

      # oc get -n $local_storage_project localvolumeset
      Copy to Clipboard

      出力例:

      NAME          AGE
      localblock   25h
      Copy to Clipboard
    3. localVolumeSet 定義を更新して、新規ノードを追加し、障害が発生したノードを削除します。

      # oc edit -n $local_storage_project localvolumeset localblock
      Copy to Clipboard

      出力例:

      [...]
         nodeSelector:
          nodeSelectorTerms:
            - matchExpressions:
                - key: kubernetes.io/hostname
                  operator: In
                  values:
                  - server1.example.com
                  - server2.example.com
                  #- server3.example.com
                  - **newnode.example.com**
      [...]
      Copy to Clipboard

      エディターを終了する前に必ず保存します。

      この例では、server3.example.com が削除され、newnode.example.com が新しいノードになります。

  18. 新規 localblock PV が利用可能であることを確認します。

    $ oc get pv | grep localblock | grep Available
    Copy to Clipboard

    出力例:

    local-pv-551d950     512Gi    RWO    Delete  Available
    localblock     26s
    Copy to Clipboard
  19. openshift-storage プロジェクトに移動します。

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

    $ oc process -n openshift-storage ocs-osd-removal \
    -p FAILED_OSD_IDS=<failed_osd_id> -p FORCE_OSD_REMOVAL=true | oc create -f -
    Copy to Clipboard
    <failed_osd_id>

    rook-ceph-osd 接頭辞の直後の Pod 名の整数です。

    コマンドにコンマ区切りの OSD ID を追加して、複数の OSD を削除できます (例: FAILED_OSD_IDS=0,1,2)

    OSD が 3 つしかないクラスター、または OSD が削除された後にデータの 3 つのレプリカすべてを復元するにはスペースが不十分なクラスターでは、FORCE_OSD_REMOVAL 値を true に変更する必要があります。

  21. ocs-osd-removal-job Pod のステータスをチェックして、OSD が正常に削除されたことを確認します。

    Completed のステータスで、OSD の削除ジョブが正常に完了したことを確認します。

    # oc get pod -l job-name=ocs-osd-removal-job -n openshift-storage
    Copy to Clipboard
  22. OSD の取り外しが完了したことを確認します。

    $ oc logs -l job-name=ocs-osd-removal-job -n openshift-storage --tail=-1 | egrep -i 'completed removal'
    Copy to Clipboard

    出力例:

    2022-05-10 06:50:04.501511 I | cephosd: completed removal of OSD 0
    Copy to Clipboard
    重要

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

    以下に例を示します。

    # oc logs -l job-name=ocs-osd-removal-job -n openshift-storage --tail=-1
    Copy to Clipboard
  23. 永続ボリュームクレーム (PVC) に関連付けられている PV を特定します。

    # oc get pv -L kubernetes.io/hostname | grep localblock | grep Released
    Copy to Clipboard

    出力例:

    local-pv-d6bf175b  1490Gi  RWO  Delete  Released  openshift-storage/ocs-deviceset-0-data-0-6c5pw  localblock  2d22h  compute-1
    Copy to Clipboard

    Released 状態の PV がある場合は、これを削除します。

    # oc delete pv _<persistent_volume>_
    Copy to Clipboard

    以下に例を示します。

    # oc delete pv local-pv-d6bf175b
    Copy to Clipboard

    出力例:

    persistentvolume "local-pv-d9c5cbd6" deleted
    Copy to Clipboard
  24. crashcollector Pod デプロイメントを特定します。

    $ oc get deployment --selector=app=rook-ceph-crashcollector,node_name=_<failed_node_name>_ -n openshift-storage
    Copy to Clipboard

    既存の crashcollector Pod デプロイメントがある場合は、これを削除します。

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

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

    出力例:

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

検証手順

  1. 新しいノードが出力に存在することを確認します。

    $ oc get nodes --show-labels | grep cluster.ocs.openshift.io/openshift-storage= |cut -d' ' -f1
    Copy to Clipboard
  2. Workloads → Pods をクリックします。新しいノードの少なくとも次の Pod が Running 状態になっていることを確認します。

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

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

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

    出力例:

    rook-ceph-mon-a-cd575c89b-b6k66         2/2     Running
    0          38m
    rook-ceph-mon-b-6776bc469b-tzzt8        2/2     Running
    0          38m
    rook-ceph-mon-d-5ff5d488b5-7v8xh        2/2     Running
    0          4m8s
    Copy to Clipboard

    OSD とモニター Pod が Running 状態になるまでに数分かかる場合があります。

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

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

    直前の手順で特定された新しい各ノードに以下を実行します。

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

      $ oc debug node/<node_name>
      Copy to Clipboard
      $ chroot /host
      Copy to Clipboard
    2. 使用可能なブロックデバイスのリストを表示します。

      $ lsblk
      Copy to Clipboard

      1 つ以上の ocs-deviceset 名の横にある crypt キーワードを確認します。

  6. 検証手順が失敗した場合は、Red Hat サポートにお問い合わせください

2.5. Red Hat Virtualization インフラストラクチャーでのストレージノードの置き換え

2.5.1. Red Hat Virtualization インストーラーでプロビジョニングされるインフラストラクチャーで動作するノードの置き換え

前提条件

  • 置き換えるノードが、置き換えるノードと同様のインフラストラクチャー、リソース、およびディスクで設定されていることを確認する必要がある。
  • OpenShift Container Platform クラスターにログインしている必要がある。

手順

  1. OpenShift Web コンソールにログインし、Compute → Nodes をクリックします。
  2. 置き換える必要のあるノードを特定します。その マシン名 をメモします。
  3. ノードのラベルを取得します。

    $ oc get nodes --show-labels | grep <node_name>
    Copy to Clipboard
    <node_name>
    置き換える必要のあるノードの名前を指定します。
  4. ノードで実行されている mon (存在する場合) と Object Storage Devices (OSD) を特定します。

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

    以下に例を示します。

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

    $ oc adm cordon <node_name>
    Copy to Clipboard
  7. ノードをドレイン (解放) します。

    $ oc adm drain <node_name> --force --delete-emptydir-data=true --ignore-daemonsets
    Copy to Clipboard
  8. Compute → Machines をクリックします。必要なマシンを検索します。
  9. 必要なマシンの横にある Action menu (⋮) → Delete Machine をクリックします。
  10. Delete をクリックして、マシンが削除されたことを確認します。新しいマシンが自動的に作成されます。新規マシンが起動し、Running 状態に移行するまで待機します。

    重要

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

  11. OpenShift Web コンソールで ComputeNodes をクリックします。新しいノードが Ready 状態にあることを確認します。
  12. 1 つ以上の新しいデバイスをノードに物理的に追加します。
  13. 以下のいずれかを使用して、OpenShift Data Foundation ラベルを新規ノードに適用します。

    ユーザーインターフェイスから
    1. 新規ノードで、Action Menu (⋮) → Edit Labels をクリックします。
    2. cluster.ocs.openshift.io/openshift-storage を追加し、Save をクリックします。
    コマンドラインインターフェイスの使用
    • OpenShift Data Foundation ラベルを新規ノードに適用します。
    $ oc label node <new_node_name> cluster.ocs.openshift.io/openshift-storage=""
    Copy to Clipboard
    <new_node_name>
    新しいノードの名前を指定します。
  14. OpenShift ローカルストレージ Operator がインストールされている namespace を特定し、これを local_storage_project 変数に割り当てます。

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

    以下に例を示します。

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

    出力例:

    openshift-local-storage
    Copy to Clipboard
  15. 新規ワーカーノードを localVolumeDiscovery および localVolumeSet に追加します。

    1. localVolumeDiscovery 定義を更新し、新規ノードを追加して失敗したノードを削除します。

      # oc edit -n $local_storage_project localvolumediscovery auto-discover-devices
      Copy to Clipboard

      出力例:

      [...]
         nodeSelector:
          nodeSelectorTerms:
            - matchExpressions:
                - key: kubernetes.io/hostname
                  operator: In
                  values:
                  - server1.example.com
                  - server2.example.com
                  #- server3.example.com
                  - newnode.example.com
      [...]
      Copy to Clipboard

      エディターを終了する前に必ず保存します。

      この例では、server3.example.com が削除され、newnode.example.com が新しいノードになります。

    2. 編集する必要がある localVolumeSet を決定します。

      # oc get -n $local_storage_project localvolumeset
      Copy to Clipboard

      出力例:

      NAME          AGE
      localblock   25h
      Copy to Clipboard
    3. localVolumeSet 定義を更新して、新規ノードを追加し、障害が発生したノードを削除します。

      # oc edit -n $local_storage_project localvolumeset localblock
      Copy to Clipboard

      出力例:

      [...]
         nodeSelector:
          nodeSelectorTerms:
            - matchExpressions:
                - key: kubernetes.io/hostname
                  operator: In
                  values:
                  - server1.example.com
                  - server2.example.com
                  #- server3.example.com
                  - newnode.example.com
      [...]
      Copy to Clipboard

      エディターを終了する前に必ず保存します。

      この例では、server3.example.com が削除され、newnode.example.com が新しいノードになります。

  16. 新しい localblock 永続ボリューム (PV) が使用可能であることを確認します。

    $oc get pv | grep localblock | grep Available
    Copy to Clipboard

    出力例:

    local-pv-551d950     512Gi    RWO    Delete  Available
    localblock     26s
    Copy to Clipboard
  17. openshift-storage プロジェクトに移動します。

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

    $ oc process -n openshift-storage ocs-osd-removal \
    -p FAILED_OSD_IDS=<failed_osd_id> -p FORCE_OSD_REMOVAL=true | oc create -f -
    Copy to Clipboard
    <failed_osd_id>

    rook-ceph-osd 接頭辞の直後の Pod 名の整数です。

    コマンドにコンマ区切りの OSD ID を追加して、複数の OSD を削除できます (例: FAILED_OSD_IDS=0,1,2)

    OSD が 3 つしかないクラスター、または OSD が削除された後にデータの 3 つのレプリカすべてを復元するにはスペースが不十分なクラスターでは、FORCE_OSD_REMOVAL 値を true に変更する必要があります。

  19. ocs-osd-removal-job Pod のステータスをチェックして、OSD が正常に削除されたことを確認します。

    Completed のステータスで、OSD の削除ジョブが正常に完了したことを確認します。

    # oc get pod -l job-name=ocs-osd-removal-job -n openshift-storage
    Copy to Clipboard
  20. OSD の取り外しが完了したことを確認します。

    $ oc logs -l job-name=ocs-osd-removal-job -n openshift-storage --tail=-1 | egrep -i 'completed removal'
    Copy to Clipboard

    出力例:

    2022-05-10 06:50:04.501511 I | cephosd: completed removal of OSD 0
    Copy to Clipboard
    重要

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

    以下に例を示します。

    # oc logs -l job-name=ocs-osd-removal-job -n openshift-storage -tail=-1
    Copy to Clipboard
  21. 永続ボリュームクレーム (PVC) に関連付けられている PV を特定します。

    # oc get pv -L kubernetes.io/hostname | grep localblock | grep Released
    Copy to Clipboard

    出力例:

    local-pv-d6bf175b  512Gi  RWO  Delete  Released  openshift-storage/ocs-deviceset-0-data-0-6c5pw  localblock  2d22h  server3.example.com
    Copy to Clipboard

    Released 状態の PV がある場合は、これを削除します。

    # oc delete pv <persistent_volume>
    Copy to Clipboard

    以下に例を示します。

    # oc delete pv local-pv-d6bf175b
    Copy to Clipboard

    出力例:

    persistentvolume "local-pv-d6bf175b" deleted
    Copy to Clipboard
  22. crashcollector Pod デプロイメントを特定します。

    $ oc get deployment --selector=app=rook-ceph-crashcollector,node_name=<failed_node_name> -n openshift-storage
    Copy to Clipboard

    既存の crashcollector Pod がある場合は、これを削除します。

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

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

    出力例:

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

検証手順

  1. 新しいノードが出力に存在することを確認します。

    $ oc get nodes --show-labels | grep cluster.ocs.openshift.io/openshift-storage= |cut -d' ' -f1
    Copy to Clipboard
  2. Workloads → Pods をクリックします。新しいノードの少なくとも次の Pod が Running 状態になっていることを確認します。

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

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

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

    出力例:

    rook-ceph-mon-a-cd575c89b-b6k66         2/2     Running  0  38m
    rook-ceph-mon-b-6776bc469b-tzzt8        2/2     Running  0  38m
    rook-ceph-mon-d-5ff5d488b5-7v8xh        2/2     Running  0  4m8s
    Copy to Clipboard

    OSD とモニター Pod が Running 状態になるまでに数分かかる場合があります。

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

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

    直前の手順で特定された新しい各ノードに以下を実行します。

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

      $ oc debug node/<node_name>
      Copy to Clipboard
      $ chroot /host
      Copy to Clipboard
    2. 使用可能なブロックデバイスのリストを表示します。

      $ lsblk
      Copy to Clipboard

      1 つ以上の ocs-deviceset 名の横にある crypt キーワードを確認します。

  6. 検証手順が失敗した場合は、Red Hat サポートにお問い合わせください

2.5.2. Red Hat Virtualization インストーラーでプロビジョニングされるインフラストラクチャーで障害のあるノードの置き換え

前提条件

  • 置き換えるノードが、置き換えるノードと同様のインフラストラクチャー、リソース、およびディスクで設定されていることを確認する必要がある。
  • OpenShift Container Platform クラスターにログインしている必要がある。

手順

  1. OpenShift Web コンソールにログインし、Compute → Nodes をクリックします。
  2. 置き換える必要のあるノードを特定します。その マシン名 をメモします。
  3. ノードのラベルを取得します。

    $ oc get nodes --show-labels | grep <node_name>
    Copy to Clipboard
    <node_name>
    置き換える必要のあるノードの名前を指定します。
  4. ノードで実行されている mon (存在する場合) と Object Storage Devices (OSD) を特定します。

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

    以下に例を示します。

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

    $ oc adm cordon <node_name>
    Copy to Clipboard
  7. 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
  8. ノードをドレイン (解放) します。

    $ oc adm drain <node_name> --force --delete-emptydir-data=true --ignore-daemonsets
    Copy to Clipboard
  9. Compute → Machines をクリックします。必要なマシンを検索します。
  10. 必要なマシンの横にある Action menu (⋮)Delete Machine をクリックします。
  11. Delete をクリックして、マシンが削除されたことを確認します。新しいマシンが自動的に作成されます。新規マシンが起動し、Running 状態に移行するまで待機します。

    重要

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

  12. OpenShift Web コンソールで Compute → Nodes をクリックします。新しいノードが Ready 状態にあることを確認します。
  13. 1 つ以上の新しいデバイスをノードに物理的に追加します。
  14. 以下のいずれかを使用して、OpenShift Data Foundation ラベルを新規ノードに適用します。

    ユーザーインターフェイスから
    1. 新規ノードで、Action Menu (⋮)Edit Labels をクリックします。
    2. cluster.ocs.openshift.io/openshift-storage を追加し、Save をクリックします。
    コマンドラインインターフェイスの使用
    • OpenShift Data Foundation ラベルを新規ノードに適用します。
    $ oc label node <new_node_name> cluster.ocs.openshift.io/openshift-storage=""
    Copy to Clipboard
  15. OpenShift ローカルストレージ Operator がインストールされている namespace を特定し、これを local_storage_project 変数に割り当てます。

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

    以下に例を示します。

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

    出力例:

    openshift-local-storage
    Copy to Clipboard
  16. 新規ワーカーノードを localVolumeDiscovery および localVolumeSet に追加します。

    1. localVolumeDiscovery 定義を更新し、新規ノードを追加して失敗したノードを削除します。

      # oc edit -n $local_storage_project localvolumediscovery auto-discover-devices
      Copy to Clipboard

      出力例:

      [...]
         nodeSelector:
          nodeSelectorTerms:
            - matchExpressions:
                - key: kubernetes.io/hostname
                  operator: In
                  values:
                  - server1.example.com
                  - server2.example.com
                  #- server3.example.com
                  - newnode.example.com
      [...]
      Copy to Clipboard

      エディターを終了する前に必ず保存します。

      この例では、server3.example.com が削除され、newnode.example.com が新しいノードになります。

    2. 編集する必要がある localVolumeSet を決定します。

      # oc get -n $local_storage_project localvolumeset
      Copy to Clipboard

      出力例:

      NAME          AGE
      localblock   25h
      Copy to Clipboard
    3. localVolumeSet 定義を更新して、新規ノードを追加し、障害が発生したノードを削除します。

      # oc edit -n $local_storage_project localvolumeset localblock
      Copy to Clipboard

      出力例:

      [...]
         nodeSelector:
          nodeSelectorTerms:
            - matchExpressions:
                - key: kubernetes.io/hostname
                  operator: In
                  values:
                  - server1.example.com
                  - server2.example.com
                  #- server3.example.com
                  - newnode.example.com
      [...]
      Copy to Clipboard

      エディターを終了する前に必ず保存します。

      この例では、server3.example.com が削除され、newnode.example.com が新しいノードになります。

  17. 新しい localblock 永続ボリューム (PV) が使用可能であることを確認します。

    $oc get pv | grep localblock | grep Available
    Copy to Clipboard

    出力例:

    local-pv-551d950     512Gi    RWO    Delete  Available
    localblock     26s
    Copy to Clipboard
  18. openshift-storage プロジェクトに移動します。

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

    $ oc process -n openshift-storage ocs-osd-removal \
    -p FAILED_OSD_IDS=<failed_osd_id> -p FORCE_OSD_REMOVAL=true | oc create -f -
    Copy to Clipboard
    <failed_osd_id>

    rook-ceph-osd 接頭辞の直後の Pod 名の整数です。

    コマンドにコンマ区切りの OSD ID を追加して、複数の OSD を削除できます (例: FAILED_OSD_IDS=0,1,2)

    OSD が 3 つしかないクラスター、または OSD が削除された後にデータの 3 つのレプリカすべてを復元するにはスペースが不十分なクラスターでは、FORCE_OSD_REMOVAL 値を true に変更する必要があります。

  20. ocs-osd-removal-job Pod のステータスをチェックして、OSD が正常に削除されたことを確認します。

    Completed のステータスで、OSD の削除ジョブが正常に完了したことを確認します。

    # oc get pod -l job-name=ocs-osd-removal-job -n openshift-storage
    Copy to Clipboard
  21. OSD の取り外しが完了したことを確認します。

    $ oc logs -l job-name=ocs-osd-removal-job -n openshift-storage --tail=-1 | egrep -i 'completed removal'
    Copy to Clipboard

    出力例:

    2022-05-10 06:50:04.501511 I | cephosd: completed removal of OSD 0
    Copy to Clipboard
    重要

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

    以下に例を示します。

    # oc logs -l job-name=ocs-osd-removal-job -n openshift-storage --tail=-1
    Copy to Clipboard
  22. 永続ボリュームクレーム (PVC) に関連付けられている PV を特定します。

    # oc get pv -L kubernetes.io/hostname | grep localblock | grep Released
    Copy to Clipboard

    出力例:

    local-pv-d6bf175b  512Gi  RWO  Delete  Released  openshift-storage/ocs-deviceset-0-data-0-6c5pw  localblock  2d22h  server3.example.com
    Copy to Clipboard

    Released 状態の PV がある場合は、これを削除します。

    # oc delete pv <persistent_volume>
    Copy to Clipboard

    以下に例を示します。

    # oc delete pv local-pv-d6bf175b
    Copy to Clipboard

    出力例:

    persistentvolume "local-pv-d6bf175b" deleted
    Copy to Clipboard
  23. crashcollector Pod デプロイメントを特定します。

    $ oc get deployment --selector=app=rook-ceph-crashcollector,node_name=<failed_node_name> -n openshift-storage
    Copy to Clipboard

    既存の crashcollector Pod がある場合は、これを削除します。

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

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

    出力例:

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

検証手順

  1. 新しいノードが出力に存在することを確認します。

    $ oc get nodes --show-labels | grep cluster.ocs.openshift.io/openshift-storage= |cut -d' ' -f1
    Copy to Clipboard
  2. Workloads → Pods をクリックします。新しいノードの少なくとも次の Pod が Running 状態になっていることを確認します。

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

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

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

    出力例:

    rook-ceph-mon-a-cd575c89b-b6k66         2/2     Running  0  38m
    rook-ceph-mon-b-6776bc469b-tzzt8        2/2     Running  0  38m
    rook-ceph-mon-d-5ff5d488b5-7v8xh        2/2     Running  0  4m8s
    Copy to Clipboard

    OSD とモニター Pod が Running 状態になるまでに数分かかる場合があります。

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

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

    直前の手順で特定された新しい各ノードに以下を実行します。

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

      $ oc debug node/<node_name>
      Copy to Clipboard
      $ chroot /host
      Copy to Clipboard
    2. 使用可能なブロックデバイスのリストを表示します。

      $ lsblk
      Copy to Clipboard

      1 つ以上の ocs-deviceset 名の横にある crypt キーワードを確認します。

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

詳細情報

試用、購入および販売

コミュニティー

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

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

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

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

会社概要

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

Theme

© 2025 Red Hat