OpenShift Container Storage is now OpenShift Data Foundation starting with version 4.9.
第13章 ストレージノードの置き換え
- 動作するノードを置き換えるには、「Red Hat Virtualization インストーラーでプロビジョニングされるインフラストラクチャーで動作するノードの置き換え」 を参照してください。
- 障害のあるノードを置き換えるには、「Red Hat Virtualization インストーラーでプロビジョニングされるインフラストラクチャーで障害のあるノードの置き換え」 を参照してください。
13.1. Red Hat Virtualization インストーラーでプロビジョニングされるインフラストラクチャーで動作するノードの置き換え リンクのコピーリンクがクリップボードにコピーされました!
以下の手順を使用して、Red Hat Virtualization のインストーラーでプロビジョニングされるインフラストラクチャー (IPI) で動作するノードを置き換えます。
前提条件
- Red Hat では、交換前のノードと同様のインフラストラクチャーおよびリソースで、交換後のノードを設定することを推奨します。
- OpenShift Container Platform (RHOCP) クラスターにログインしている必要があります。
手順
-
OpenShift Web コンソールにログインし、 Compute
Nodes をクリックします。 - 置き換える必要のあるノードを特定します。そのマシン名をメモします。
置き換えるノードのラベルを取得します。
oc get nodes --show-labels | grep <node_name>
$ oc get nodes --show-labels | grep <node_name>
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 置き換えるノードで実行されている mon (ある場合) および OSD を特定します。
oc get pods -n openshift-storage -o wide | grep -i <node_name>
$ oc get pods -n openshift-storage -o wide | grep -i <node_name>
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 先の手順で特定された 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
$ 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 Copied! Toggle word wrap Toggle overflow ノードにスケジュール対象外 (unschedulable) のマークを付けます。
oc adm cordon <node_name>
$ oc adm cordon <node_name>
Copy to Clipboard Copied! Toggle word wrap Toggle overflow ノードをドレイン (解放) します。
oc adm drain <node_name> --force --delete-local-data --ignore-daemonsets
$ oc adm drain <node_name> --force --delete-local-data --ignore-daemonsets
Copy to Clipboard Copied! Toggle word wrap Toggle overflow -
Compute
Machines をクリックします。必要なマシンを検索します。 -
必要なマシンの横にある Action menu (⋮)
Delete Machine をクリックします。 - Delete をクリックしてマシンの削除を確認します。新しいマシンが自動的に作成されます。
新規マシンが起動し、Running 状態に移行するまで待機します。
重要このアクティビティーには少なくとも 5-10 分以上かかる場合があります。
-
OpenShift Web コンソールで Compute
Nodes をクリックします。新規ノードが Ready 状態にあるかどうかを確認します。 以下のいずれかを使用して、OpenShift Container Storage ラベルを新規ノードに適用します。
- ユーザーインターフェイスを使用する場合
-
新規ノードについて、Action Menu (⋮)
Edit Labels をクリックします。 -
cluster.ocs.openshift.io/openshift-storage
を追加し、Save をクリックします。
-
新規ノードについて、Action Menu (⋮)
- コマンドラインインターフェイスの使用
- 以下のコマンドを実行して、OpenS+hift Container Storage ラベルを新規ノードに適用します。
oc label node <new_node_name> cluster.ocs.openshift.io/openshift-storage=""
$ oc label node <new_node_name> cluster.ocs.openshift.io/openshift-storage=""
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
これらのワーカーノードで利用可能なローカルストレージデバイスを OpenShift Container Storage StorageCluster に追加します。
編集する
localVolumeSet
を決定します。以下のコマンドの local-storage-project は、ローカルストレージプロジェクトの名前に置き換えます。デフォルトのプロジェクト名は、OpenShift Container Storage 4.6 以降の
openshift-local-storage
です。以前のバージョンでは、デフォルトでlocal-storage
を使用します。oc get -n local-storage-project localvolumeset
# oc get -n local-storage-project localvolumeset NAME AGE localblock 25h
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 新規ノードを
localVolumeSet
定義に追加します。Copy to Clipboard Copied! Toggle word wrap Toggle overflow エディターを終了する前に必ず保存します。
新規
localblock
PV が利用可能であることを確認します。Copy to Clipboard Copied! Toggle word wrap Toggle overflow openshift-storage
プロジェクトを変更します。oc project openshift-storage
$ oc project openshift-storage
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 失敗した OSD をクラスターから削除します。
oc process -n openshift-storage ocs-osd-removal \ -p FAILED_OSD_IDS=failed-osd-id1,failed-osd-id2 | oc create -f -
$ oc process -n openshift-storage ocs-osd-removal \ -p FAILED_OSD_IDS=failed-osd-id1,failed-osd-id2 | oc create -f -
Copy to Clipboard Copied! Toggle word wrap Toggle overflow ocs-osd-removal
Pod のステータスをチェックして、OSD が正常に削除されたことを確認します。Completed
のステータスで、OSD の削除ジョブが正常に完了したことを確認します。oc get pod -l job-name=ocs-osd-removal-failed-osd-id -n openshift-storage
# oc get pod -l job-name=ocs-osd-removal-failed-osd-id -n openshift-storage
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 注記ocs-osd-removal
が失敗し、Pod が予想されるCompleted
の状態にない場合、追加のデバッグのために Pod ログを確認します。以下に例を示します。oc logs -l job-name=ocs-osd-removal-failed-osd_id -n openshift-storage --tail=-1
# oc logs -l job-name=ocs-osd-removal-failed-osd_id -n openshift-storage --tail=-1
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 障害のあるノードに関連付けられた PV を削除します。
PVC に関連付けられた PV を特定します。
oc get -n openshift-storage pvc claim-name
# oc get -n openshift-storage pvc claim-name
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 以下に例を示します。
oc get -n openshift-storage pvc ocs-deviceset-0-0-nvs68
# oc get -n openshift-storage pvc ocs-deviceset-0-0-nvs68 ACCESS STORAGE NAME STATUS VOLUME CAPACITY MODES CLASS AGE ocs-deviceset- Released local-pv- 931Gi RWO localblock 24h 0-0-nvs68 d9c5cbd6
Copy to Clipboard Copied! Toggle word wrap Toggle overflow PV を削除します。
oc delete pv <persistent-volume>
# oc delete pv <persistent-volume>
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 以下に例を示します。
oc delete pv local-pv-d9c5cbd6
# oc delete pv local-pv-d9c5cbd6 persistentvolume "local-pv-d9c5cbd6" deleted
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
crashcollector
Pod デプロイメントを削除します。oc delete deployment --selector=app=rook-ceph-crashcollector,node_name=failed-node-name -n openshift-storage
$ oc delete deployment --selector=app=rook-ceph-crashcollector,node_name=failed-node-name -n openshift-storage
Copy to Clipboard Copied! Toggle word wrap Toggle overflow rook-ceph-operator
を再起動して Operator の調整を強制的に実行して新規 OSD をデプロイします。oc get -n openshift-storage pod -l app=rook-ceph-operator
# oc get -n openshift-storage pod -l app=rook-ceph-operator
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 出力例:
NAME READY STATUS RESTARTS AGE rook-ceph-operator-6f74fb5bff-2d982 1/1 Running 0 1d20h
NAME READY STATUS RESTARTS AGE rook-ceph-operator-6f74fb5bff-2d982 1/1 Running 0 1d20h
Copy to Clipboard Copied! Toggle word wrap Toggle overflow rook-ceph-operator
を削除します。oc delete -n openshift-storage pod rook-ceph-operator-6f74fb5bff-2d982
# oc delete -n openshift-storage pod rook-ceph-operator-6f74fb5bff-2d982
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 出力例:
pod "rook-ceph-operator-6f74fb5bff-2d982" deleted
pod "rook-ceph-operator-6f74fb5bff-2d982" deleted
Copy to Clipboard Copied! Toggle word wrap Toggle overflow rook-ceph-operator
Pod が再起動していることを確認します。oc get -n openshift-storage pod -l app=rook-ceph-operator
# oc get -n openshift-storage pod -l app=rook-ceph-operator
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 出力例:
NAME READY STATUS RESTARTS AGE rook-ceph-operator-6f74fb5bff-7mvrq 1/1 Running 0 66s
NAME READY STATUS RESTARTS AGE rook-ceph-operator-6f74fb5bff-7mvrq 1/1 Running 0 66s
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 新規 OSD および
mon
の作成には、Operator が再起動するまでに数分かかる場合があります。
ocs-osd-removal
ジョブを削除します。oc delete job ocs-osd-removal-${osd_id_to_remove}
# oc delete job ocs-osd-removal-${osd_id_to_remove}
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 出力例:
job.batch "ocs-osd-removal-0" deleted
job.batch "ocs-osd-removal-0" deleted
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
検証手順
以下のコマンドを実行して、出力で新規ノードが表示されていることを確認します。
oc get nodes --show-labels | grep cluster.ocs.openshift.io/openshift-storage= |cut -d' ' -f1
$ oc get nodes --show-labels | grep cluster.ocs.openshift.io/openshift-storage= |cut -d' ' -f1
Copy to Clipboard Copied! Toggle word wrap Toggle overflow Workloads
Pods をクリックし、新規ノード上の少なくとも以下の Pod が Running
状態にあることを確認します。-
csi-cephfsplugin-*
-
csi-rbdplugin-*
-
他の必要なすべての OpenShift Container Storage Pod が Running 状態にあることを確認します。
また、増分の
mon
が新規に作成されており、Running 状態にあることを確認します。oc get pod -n openshift-storage | grep mon
$ oc get pod -n openshift-storage | grep mon
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 出力例:
rook-ceph-mon-c-64556f7659-c2ngc 1/1 Running 0 6h14m rook-ceph-mon-d-7c8b74dc4d-tt6hd 1/1 Running 0 4h24m rook-ceph-mon-e-57fb8c657-wg5f2 1/1 Running 0 162m
rook-ceph-mon-c-64556f7659-c2ngc 1/1 Running 0 6h14m rook-ceph-mon-d-7c8b74dc4d-tt6hd 1/1 Running 0 4h24m rook-ceph-mon-e-57fb8c657-wg5f2 1/1 Running 0 162m
Copy to Clipboard Copied! Toggle word wrap Toggle overflow OSD と Mon が
Running
状態になるまで数分かかる場合があります。新規 OSD Pod が交換後のノードで実行されていることを確認します。
oc get pods -o wide -n openshift-storage| egrep -i new-node-name | egrep osd
$ oc get pods -o wide -n openshift-storage| egrep -i new-node-name | egrep osd
Copy to Clipboard Copied! Toggle word wrap Toggle overflow (オプション) クラスターでデータの暗号化が有効な場合には、新規 OSD デバイスが暗号化されていることを確認します。
直前の手順で特定された新規ノードごとに、以下を実行します。
デバッグ Pod を作成し、選択したホストの chroot 環境を開きます。
oc debug node/<node name> chroot /host
$ oc debug node/<node name> $ chroot /host
Copy to Clipboard Copied! Toggle word wrap Toggle overflow lsblk を実行し、
ocs-deviceset
名の横にある crypt キーワードを確認します。lsblk
$ lsblk
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
- 検証手順が失敗した場合は、Red Hat サポートにお問い合わせください。