第5章 OpenShift Data Foundation のアンインストール
5.1. 内部接続デバイスモードの OpenShift Data Foundation のアンインストール リンクのコピーリンクがクリップボードにコピーされました!
このセクションの手順に従って OpenShift Data Foundation をアンインストールします。
アノテーションのアンインストール
Storage Cluster のアノテーションは、アンインストールプロセスの動作を変更するために使用されます。アンインストールの動作を定義するために、ストレージクラスターに以下の 2 つのアノテーションが導入されました。
-
uninstall.ocs.openshift.io/cleanup-policy: delete -
uninstall.ocs.openshift.io/mode: graceful
以下の表は、これらのアノテーションで使用できる各種値に関する情報を示しています。
| アノテーション | 値 | デフォルト | 動作 |
|---|---|---|---|
| cleanup-policy | delete | はい |
Rook は物理ドライブおよび |
| cleanup-policy | Retain | いいえ |
Rook は物理ドライブおよび |
| モード | graceful | はい | Rook および NooBaa は、管理者/ユーザーが Persistent Volume Claim (PVC) および Object Bucket Claim (OBC) を削除するまで、アンインストールプロセスを 一時停止 します。 |
| モード | forced | いいえ | Rook および NooBaa は、Rook および NooBaa を使用してプロビジョニングされた PVC/OBC がそれぞれ存在している場合でもアンインストールを続行します。 |
アノテーションの値を編集して、クリーンアップポリシーまたはアンインストールモードを変更します。
oc -n openshift-storage annotate storagecluster ocs-storagecluster uninstall.ocs.openshift.io/cleanup-policy="retain" --overwrite
$ oc -n openshift-storage annotate storagecluster ocs-storagecluster uninstall.ocs.openshift.io/cleanup-policy="retain" --overwrite
oc -n openshift-storage annotate storagecluster ocs-storagecluster uninstall.ocs.openshift.io/mode="forced" --overwrite
$ oc -n openshift-storage annotate storagecluster ocs-storagecluster uninstall.ocs.openshift.io/mode="forced" --overwrite
両方のコマンドで予期される出力:
storagecluster.ocs.openshift.io/ocs-storagecluster annotated
storagecluster.ocs.openshift.io/ocs-storagecluster annotated
前提条件
- OpenShift Data Foundation クラスターの状態が正常である。リソースまたはノードの不足により一部の Pod が正常に終了されないと、アンインストールプロセスに失敗する可能性があります。クラスターの状態が正常でない場合は、OpenShift Data Foundation をアンインストールする前に Red Hat カスタマーサポートにお問い合わせください。
- アプリケーションが OpenShift Data Foundation によって提供されるストレージクラスを使用して永続ボリューム要求 (PVC) またはオブジェクトバケット要求 (OBC) を消費していない。
- カスタムリソース (カスタムストレージクラス、cephblockpools など) が管理者によって作成された場合、それらを消費したリソースを削除した後に管理者によって削除される必要があります。
手順
OpenShift Data Foundation を使用しているボリュームスナップショットを削除します。
すべての namespace からボリュームスナップショットをリスト表示します。
oc get volumesnapshot --all-namespaces
$ oc get volumesnapshot --all-namespacesCopy to Clipboard Copied! Toggle word wrap Toggle overflow 直前のコマンドの出力から、OpenShift Data Foundation を使用しているボリュームスナップショットを特定し、削除します。
oc delete volumesnapshot <VOLUME-SNAPSHOT-NAME> -n <NAMESPACE>
$ oc delete volumesnapshot <VOLUME-SNAPSHOT-NAME> -n <NAMESPACE>Copy to Clipboard Copied! Toggle word wrap Toggle overflow <VOLUME-SNAPSHOT-NAME>- ボリュームスナップショットの名前です。
<NAMESPACE>- プロジェクトの namespace です。
OpenShift Data Foundation を使用している PVC および OBC を削除します。
デフォルトのアンインストールモード (graceful) では、アンインストーラーは OpenShift Data Foundation を使用するすべての PVC および OBC が削除されるまで待機します。
PVC を削除せずに Storage Cluster を削除する場合は、アンインストールモードのアノテーションを
forcedに設定し、この手順を省略できます。これを行うと、孤立した PVC および OBC がシステムに作成されます。OpenShift Data Foundation を使用して、OpenShift Container Platform モニタリングスタック PVC を削除します。
OpenShift Data Foundation からのモニタリングスタックの削除 を参照してください。
OpenShift Data Foundation を使用して、OpenShift Container Platform レジストリー PVC を削除します。
OpenShift Data Foundation からの OpenShift Container Platform レジストリーの削除 を参照してください。
OpenShift Data Foundation を使用して、OpenShift Container Platform ロギング PVC を削除します。
OpenShift Data Foundation からのクラスターロギング Operator の削除 を参照してください。
OpenShift Data Foundation を使用してプロビジョニングした PVC および OBC を削除します。
以下に、OpenShift Data Foundation を使用してプロビジョニングされる PVC および OBC を特定するサンプルスクリプトを示します。このスクリプトは、OpenShift Data Foundation によって内部で使用される PVC を無視します。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 注記クラウドプラットフォームの
RGW_PROVISIONERを省略します。OBC を削除します。
oc delete obc <obc-name> -n <project-name>
$ oc delete obc <obc-name> -n <project-name>Copy to Clipboard Copied! Toggle word wrap Toggle overflow <obc-name>- OBC の名前です。
<project-name>- プロジェクトの名前です。
PVC を削除します。
oc delete pvc <pvc-name> -n <project-name>
$ oc delete pvc <pvc-name> -n <project-name>Copy to Clipboard Copied! Toggle word wrap Toggle overflow <pvc name>- PVC の名前です。
<project-name>プロジェクトの名前です。
注記クラスターに作成されているカスタムバッキングストア、バケットクラスなどを削除していることを確認します。
Storage System オブジェクトを削除し、関連付けられたリソースが削除されるのを待機します。
oc delete -n openshift-storage storagesystem --all --wait=true
$ oc delete -n openshift-storage storagesystem --all --wait=trueCopy to Clipboard Copied! Toggle word wrap Toggle overflow uninstall.ocs.openshift.io/cleanup-policyがdelete(default) に設定されている場合にクリーンアップ Pod の有無を確認し、それらのステータスがCompletedしていることを確認します。oc get pods -n openshift-storage | grep -i cleanup
$ oc get pods -n openshift-storage | grep -i cleanupCopy to Clipboard Copied! Toggle word wrap Toggle overflow 出力例:
NAME READY STATUS RESTARTS AGE cluster-cleanup-job-<xx> 0/1 Completed 0 8m35s cluster-cleanup-job-<yy> 0/1 Completed 0 8m35s cluster-cleanup-job-<zz> 0/1 Completed 0 8m35s
NAME READY STATUS RESTARTS AGE cluster-cleanup-job-<xx> 0/1 Completed 0 8m35s cluster-cleanup-job-<yy> 0/1 Completed 0 8m35s cluster-cleanup-job-<zz> 0/1 Completed 0 8m35sCopy to Clipboard Copied! Toggle word wrap Toggle overflow /var/lib/rookディレクトリーが空であることを確認します。このディレクトリーは、uninstall.ocs.openshift.io/cleanup-policyアノテーションがdelete(デフォルト) に設定されている場合にのみ空になります。for i in $(oc get node -l cluster.ocs.openshift.io/openshift-storage= -o jsonpath='{ .items[*].metadata.name }'); do oc debug node/${i} -- chroot /host ls -l /var/lib/rook; done$ for i in $(oc get node -l cluster.ocs.openshift.io/openshift-storage= -o jsonpath='{ .items[*].metadata.name }'); do oc debug node/${i} -- chroot /host ls -l /var/lib/rook; doneCopy to Clipboard Copied! Toggle word wrap Toggle overflow 暗号化がインストール時に有効にされている場合は、すべての OpenShift Data Foundation ノードの OSD デバイスから
dm-cryptで管理されるdevice-mapperマッピングを削除します。debugPod を作成し、ストレージノードのホストに対してchrootを作成します。oc debug node/<node-name>
$ oc debug node/<node-name>Copy to Clipboard Copied! Toggle word wrap Toggle overflow chroot /host
$ chroot /hostCopy to Clipboard Copied! Toggle word wrap Toggle overflow <node-name>- ノードの名前です。
デバイス名を取得し、OpenShift Data Foundation デバイスについてメモします。
dmsetup ls
$ dmsetup lsCopy to Clipboard Copied! Toggle word wrap Toggle overflow 出力例:
ocs-deviceset-0-data-0-57snx-block-dmcrypt (253:1)
ocs-deviceset-0-data-0-57snx-block-dmcrypt (253:1)Copy to Clipboard Copied! Toggle word wrap Toggle overflow マップ済みデバイスを削除します。
cryptsetup luksClose --debug --verbose ocs-deviceset-0-data-0-57snx-block-dmcrypt
$ cryptsetup luksClose --debug --verbose ocs-deviceset-0-data-0-57snx-block-dmcryptCopy to Clipboard Copied! Toggle word wrap Toggle overflow 重要権限が十分にないため、コマンドがスタックした場合には、以下のコマンドを実行します。
-
CTRL+Zを押して上記のコマンドを終了します。 スタックしたプロセスの PID を検索します。
ps -ef | grep crypt
$ ps -ef | grep cryptCopy to Clipboard Copied! Toggle word wrap Toggle overflow killコマンドを使用してプロセスを終了します。kill -9 <PID>
$ kill -9 <PID>Copy to Clipboard Copied! Toggle word wrap Toggle overflow <PID>- プロセス ID です。
デバイス名が削除されていることを確認します。
dmsetup ls
$ dmsetup lsCopy to Clipboard Copied! Toggle word wrap Toggle overflow
-
namespace を削除し、削除が完了するまで待機します。
openshift-storageがアクティブなプロジェクトである場合は、別のプロジェクトに切り替える必要があります。以下に例を示します。
oc project default
$ oc project defaultCopy to Clipboard Copied! Toggle word wrap Toggle overflow oc delete project openshift-storage --wait=true --timeout=5m
$ oc delete project openshift-storage --wait=true --timeout=5mCopy to Clipboard Copied! Toggle word wrap Toggle overflow 以下のコマンドが NotFound エラーを返すと、プロジェクトが削除されます。
oc get project openshift-storage
$ oc get project openshift-storageCopy to Clipboard Copied! Toggle word wrap Toggle overflow 注記OpenShift Data Foundation のアンインストール時に、
namespaceが完全に削除されず、Terminating状態のままである場合は、トラブルシューティングおよびアンインストール時の残りのリソースの削除 の記事に記載の手順を実行して namespace の終了をブロックしているオブジェクトを特定します。- ローカルストレージデバイスを使用して OpenShift Data Foundation をデプロイした場合は、ローカルストレージ Operator 設定を削除します。ローカルストレージ Operator の設定の削除 を参照してください。
ストレージノードのラベルを解除します。
oc label nodes --all cluster.ocs.openshift.io/openshift-storage-
$ oc label nodes --all cluster.ocs.openshift.io/openshift-storage-Copy to Clipboard Copied! Toggle word wrap Toggle overflow oc label nodes --all topology.rook.io/rack-
$ oc label nodes --all topology.rook.io/rack-Copy to Clipboard Copied! Toggle word wrap Toggle overflow ノードにテイントのマークが付けられている場合に OpenShift Data Foundation テイントを削除します。
oc adm taint nodes --all node.ocs.openshift.io/storage-
$ oc adm taint nodes --all node.ocs.openshift.io/storage-Copy to Clipboard Copied! Toggle word wrap Toggle overflow OpenShift Data Foundation を使用してプロビジョニングした永続ボリューム (PV) がすべて削除されていることを確認します。
Released状態のままの PV がある場合は、これを削除します。oc get pv
$ oc get pvCopy to Clipboard Copied! Toggle word wrap Toggle overflow oc delete pv <pv-name>
$ oc delete pv <pv-name>Copy to Clipboard Copied! Toggle word wrap Toggle overflow pv_name- Pod の名前です。
CustomResourceDefinitionsを削除します。oc delete crd backingstores.noobaa.io bucketclasses.noobaa.io cephblockpools.ceph.rook.io cephclusters.ceph.rook.io cephfilesystems.ceph.rook.io cephnfses.ceph.rook.io cephobjectstores.ceph.rook.io cephobjectstoreusers.ceph.rook.io noobaas.noobaa.io ocsinitializations.ocs.openshift.io storageclusters.ocs.openshift.io cephclients.ceph.rook.io cephobjectrealms.ceph.rook.io cephobjectzonegroups.ceph.rook.io cephobjectzones.ceph.rook.io cephrbdmirrors.ceph.rook.io storagesystems.odf.openshift.io --wait=true --timeout=5m
$ oc delete crd backingstores.noobaa.io bucketclasses.noobaa.io cephblockpools.ceph.rook.io cephclusters.ceph.rook.io cephfilesystems.ceph.rook.io cephnfses.ceph.rook.io cephobjectstores.ceph.rook.io cephobjectstoreusers.ceph.rook.io noobaas.noobaa.io ocsinitializations.ocs.openshift.io storageclusters.ocs.openshift.io cephclients.ceph.rook.io cephobjectrealms.ceph.rook.io cephobjectzonegroups.ceph.rook.io cephobjectzones.ceph.rook.io cephrbdmirrors.ceph.rook.io storagesystems.odf.openshift.io --wait=true --timeout=5mCopy to Clipboard Copied! Toggle word wrap Toggle overflow OpenShift Container Platform Web コンソールで、OpenShift Data Foundation が完全にアンインストールされていることを確認するには、以下を実行します。
- Storage をクリックします。
- OpenShift Data Foundation が Storage に表示されていないことを確認します。
5.1.1. ローカルストレージ Operator の設定の削除 リンクのコピーリンクがクリップボードにコピーされました!
ローカルストレージデバイスを使用して OpenShift Data Foundation をデプロイした場合にのみこのセクションの説明を使用します。
OpenShift Data Foundation デプロイメントで localvolume リソースのみを使用する場合は、直接、手順 8 に移動します。
手順
LocalVolumeSetおよび OpenShift Data Foundation で使用される対応するStorageClassNameを特定します。oc get localvolumesets.local.storage.openshift.io -n openshift-local-storage
$ oc get localvolumesets.local.storage.openshift.io -n openshift-local-storageCopy to Clipboard Copied! Toggle word wrap Toggle overflow LocalVolumeSetを提供するStorageClassに変数 SC を設定します。export SC="<StorageClassName>"
$ export SC="<StorageClassName>"Copy to Clipboard Copied! Toggle word wrap Toggle overflow 後にクリーンアップするデバイスをリスト表示し、これをメモします。ディスクのデバイス ID を一覧表示するには、利用可能なストレージデバイスの検索 を参照して、その手順に従います。
出力例:
/dev/disk/by-id/scsi-360050763808104bc28000000000000eb /dev/disk/by-id/scsi-360050763808104bc28000000000000ef /dev/disk/by-id/scsi-360050763808104bc28000000000000f3
/dev/disk/by-id/scsi-360050763808104bc28000000000000eb /dev/disk/by-id/scsi-360050763808104bc28000000000000ef /dev/disk/by-id/scsi-360050763808104bc28000000000000f3Copy to Clipboard Copied! Toggle word wrap Toggle overflow LocalVolumeSetを削除します。oc delete localvolumesets.local.storage.openshift.io <name-of-volumeset> -n openshift-local-storage
$ oc delete localvolumesets.local.storage.openshift.io <name-of-volumeset> -n openshift-local-storageCopy to Clipboard Copied! Toggle word wrap Toggle overflow 指定された
StorageClassNameのローカルストレージ PV を削除します。oc get pv | grep $SC | awk '{print $1}'| xargs oc delete pv$ oc get pv | grep $SC | awk '{print $1}'| xargs oc delete pvCopy to Clipboard Copied! Toggle word wrap Toggle overflow StorageClassNameを削除します。oc delete sc $SC
$ oc delete sc $SCCopy to Clipboard Copied! Toggle word wrap Toggle overflow LocalVolumeSetによって作成されるシンボリックリンクを削除します。[[ ! -z $SC ]] && for i in $(oc get node -l cluster.ocs.openshift.io/openshift-storage= -o jsonpath='{ .items[*].metadata.name }'); do oc debug node/${i} -- chroot /host rm -rfv /mnt/local-storage/${SC}/; done[[ ! -z $SC ]] && for i in $(oc get node -l cluster.ocs.openshift.io/openshift-storage= -o jsonpath='{ .items[*].metadata.name }'); do oc debug node/${i} -- chroot /host rm -rfv /mnt/local-storage/${SC}/; doneCopy to Clipboard Copied! Toggle word wrap Toggle overflow LocalVolumeDiscoveryを削除します。oc delete localvolumediscovery.local.storage.openshift.io/auto-discover-devices -n openshift-local-storage
$ oc delete localvolumediscovery.local.storage.openshift.io/auto-discover-devices -n openshift-local-storageCopy to Clipboard Copied! Toggle word wrap Toggle overflow LocalVolumeリソースを削除します (ある場合)。以下の手順を使用して、現行または直前の OpenShift Data Foundation バージョンで PV のプロビジョニングに使用した
LocalVolumeリソースを削除します。また、これらのリソースがクラスターの他のテナントで使用されていないことを確認します。ローカルボリュームごとに、以下を実行します。
LocalVolumeおよび OpenShift Data Foundation で使用される対応するStorageClassNameを特定します。oc get localvolume.local.storage.openshift.io -n openshift-local-storage
$ oc get localvolume.local.storage.openshift.io -n openshift-local-storageCopy to Clipboard Copied! Toggle word wrap Toggle overflow 変数 LV を LocalVolume の名前に設定し、変数 SC を StorageClass の名前に設定します。
以下に例を示します。
LV=local-block SC=localblock
$ LV=local-block $ SC=localblockCopy to Clipboard Copied! Toggle word wrap Toggle overflow 後にクリーンアップするデバイスをリスト表示し、これをメモします。
oc get localvolume -n openshift-local-storage $LV -o jsonpath='{ .spec.storageClassDevices[].devicePaths[] }{"\n"}'$ oc get localvolume -n openshift-local-storage $LV -o jsonpath='{ .spec.storageClassDevices[].devicePaths[] }{"\n"}'Copy to Clipboard Copied! Toggle word wrap Toggle overflow 出力例:
/dev/sdb /dev/sdc /dev/sdd /dev/sde
/dev/sdb /dev/sdc /dev/sdd /dev/sdeCopy to Clipboard Copied! Toggle word wrap Toggle overflow ローカルボリュームリソースを削除します。
oc delete localvolume -n openshift-local-storage --wait=true $LV
$ oc delete localvolume -n openshift-local-storage --wait=true $LVCopy to Clipboard Copied! Toggle word wrap Toggle overflow 残りの PV および StorageClass が存在する場合はこれらを削除します。
oc delete pv -l storage.openshift.com/local-volume-owner-name=${LV} --wait --timeout=5m oc delete storageclass $SC --wait --timeout=5m$ oc delete pv -l storage.openshift.com/local-volume-owner-name=${LV} --wait --timeout=5m $ oc delete storageclass $SC --wait --timeout=5mCopy to Clipboard Copied! Toggle word wrap Toggle overflow そのリソースのストレージノードからアーティファクトをクリーンアップします。
[[ ! -z $SC ]] && for i in $(oc get node -l cluster.ocs.openshift.io/openshift-storage= -o jsonpath='{ .items[*].metadata.name }'); do oc debug node/${i} -- chroot /host rm -rfv /mnt/local-storage/${SC}/; done$ [[ ! -z $SC ]] && for i in $(oc get node -l cluster.ocs.openshift.io/openshift-storage= -o jsonpath='{ .items[*].metadata.name }'); do oc debug node/${i} -- chroot /host rm -rfv /mnt/local-storage/${SC}/; doneCopy to Clipboard Copied! Toggle word wrap Toggle overflow 出力例:
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
手順 1 から 8 にリスト表示されている各ローカルボリュームセットまたはローカルボリュームのディスクを消去して、それらを再利用できるようにします。
ストレージノードをリスト表示します。
oc get nodes -l cluster.ocs.openshift.io/openshift-storage=
oc get nodes -l cluster.ocs.openshift.io/openshift-storage=Copy to Clipboard Copied! Toggle word wrap Toggle overflow 出力例:
NAME STATUS ROLES AGE VERSION node-xxx Ready worker 4h45m v1.18.3+6c42de8 node-yyy Ready worker 4h46m v1.18.3+6c42de8 node-zzz Ready worker 4h45m v1.18.3+6c42de8
NAME STATUS ROLES AGE VERSION node-xxx Ready worker 4h45m v1.18.3+6c42de8 node-yyy Ready worker 4h46m v1.18.3+6c42de8 node-zzz Ready worker 4h45m v1.18.3+6c42de8Copy to Clipboard Copied! Toggle word wrap Toggle overflow プロンプトが表示されたらノードコンソールを取得し、
chroot /hostコマンドを実行します。Copy to Clipboard Copied! Toggle word wrap Toggle overflow ディスクパスを引用符内の DISKS 変数に保存します。ディスクパスのリストは、ローカルボリュームおよびローカルボリュームセットおよびボリュームのそれぞれについてステップ 3 およびステップ 8.c を参照してください。
出力例:
DISKS="/dev/disk/by-id/scsi-360050763808104bc28000000000000eb /dev/disk/by-id/scsi-360050763808104bc28000000000000ef /dev/disk/by-id/scsi-360050763808104bc28000000000000f3 " DISKS="/dev/sdb /dev/sdc /dev/sdd /dev/sde ".
sh-4.4# DISKS="/dev/disk/by-id/scsi-360050763808104bc28000000000000eb /dev/disk/by-id/scsi-360050763808104bc28000000000000ef /dev/disk/by-id/scsi-360050763808104bc28000000000000f3 " or sh-4.2# DISKS="/dev/sdb /dev/sdc /dev/sdd /dev/sde ".Copy to Clipboard Copied! Toggle word wrap Toggle overflow すべてのディスクで
sgdisk --zap-allを実行します。for disk in $DISKS; do sgdisk --zap-all $disk;done
sh-4.4# for disk in $DISKS; do sgdisk --zap-all $disk;doneCopy to Clipboard Copied! Toggle word wrap Toggle overflow 出力例:
Copy to Clipboard Copied! Toggle word wrap Toggle overflow シェルを終了し、他のノードについて手順を繰り返します。
exit exit
sh-4.4# exit exit sh-4.2# exit exit Removing debug pod ...Copy to Clipboard Copied! Toggle word wrap Toggle overflow
openshift-local-storagenamespace を削除し、削除が完了するまで待機します。openshift-local-storagenamespace がアクティブなプロジェクトである場合、別のプロジェクトに切り換える必要があります。以下に例を示します。
oc project default oc delete project openshift-local-storage --wait=true --timeout=5m
$ oc project default $ oc delete project openshift-local-storage --wait=true --timeout=5mCopy to Clipboard Copied! Toggle word wrap Toggle overflow 以下のコマンドが NotFound エラーを返すと、プロジェクトが削除されます。
oc get project openshift-local-storage
$ oc get project openshift-local-storageCopy to Clipboard Copied! Toggle word wrap Toggle overflow