OpenShift Container Storage is now OpenShift Data Foundation starting with version 4.9.
第6章 OpenShift Container Storage のアンインストール
6.1. 外部モードでの OpenShift Container Storage のアンインストール
このセクションの手順を使用して、ユーザーインターフェースから Uninstall オプションを使用せずに OpenShift Container Storage をアンインストールします。OpenShift Container Storage をアンインストールしても、外部クラスターから RBD プールを削除したり、外部の RedHat Ceph Storage クラスターをアンインストールしたりすることはできません。
前提条件
- OpenShift Container Storage クラスターの状態が正常であることを確認します。一部の Pod がリソースまたはノードの不足により正常に終了しないと、削除に失敗する可能性があります。クラスターが状態が正常でない場合は、OpenShift Container Storage をアンインストールする前に Red Hat カスタマーサポートにお問い合わせください。
- アプリケーションが OpenShift Container Storage によって提供されるストレージクラスを使用して Persistent Volume Claim(永続ボリューム要求、PVC)または Object Bucket Claim(オブジェクトバケット要求)を使用していないことを確認します。PVC および OBC はアンインストールプロセスで削除されます。
手順
OpenShift Container Storage ベースのストレージクラスプロビジョナーを使用する PVC および OBC をクエリーします。
以下は例になります。
oc get pvc -o=jsonpath='{range .items[?(@.spec.storageClassName=="ocs-external-storagecluster-ceph-rbd")]}{"Name: "}{@.metadata.name}{" Namespace: "}{@.metadata.namespace}{" Labels: "}{@.metadata.labels}{"\n"}{end}' --all-namespaces|awk '! ( /Namespace: openshift-storage/ && /app:noobaa/ )' | grep -v noobaa-default-backing-store-noobaa-pvc
$ oc get pvc -o=jsonpath='{range .items[?(@.spec.storageClassName=="ocs-external-storagecluster-ceph-rbd")]}{"Name: "}{@.metadata.name}{" Namespace: "}{@.metadata.namespace}{" Labels: "}{@.metadata.labels}{"\n"}{end}' --all-namespaces|awk '! ( /Namespace: openshift-storage/ && /app:noobaa/ )' | grep -v noobaa-default-backing-store-noobaa-pvc
Copy to Clipboard Copied! 注記外部の RedHat Ceph Storage クラスターが CephFS 用に設定されていない場合には、
ocs-external-storagecluster-cephfs
の以下のクエリーコマンドを無視できます。oc get pvc -o=jsonpath='{range .items[?(@.spec.storageClassName=="ocs-external-storagecluster-cephfs")]}{"Name: "}{@.metadata.name}{" Namespace: "}{@.metadata.namespace}{"\n"}{end}' --all-namespaces
$ oc get pvc -o=jsonpath='{range .items[?(@.spec.storageClassName=="ocs-external-storagecluster-cephfs")]}{"Name: "}{@.metadata.name}{" Namespace: "}{@.metadata.namespace}{"\n"}{end}' --all-namespaces
Copy to Clipboard Copied! 注記外部の RedHat Ceph Storage クラスターが Object Storage 用に設定されていない場合には、
ocs-external-storagecluster-ceph-rgw
の以下のクエリーコマンドを無視できます。oc get obc -o=jsonpath='{range .items[?(@.spec.storageClassName=="ocs-external-storagecluster-ceph-rgw")]}{"Name: "}{@.metadata.name}{" Namespace: "}{@.metadata.namespace}{"\n"}{end}' --all-namespaces
$ oc get obc -o=jsonpath='{range .items[?(@.spec.storageClassName=="ocs-external-storagecluster-ceph-rgw")]}{"Name: "}{@.metadata.name}{" Namespace: "}{@.metadata.namespace}{"\n"}{end}' --all-namespaces
Copy to Clipboard Copied! oc get obc -o=jsonpath='{range .items[?(@.spec.storageClassName=="openshift-storage.noobaa.io")]}{"Name: "}{@.metadata.name}{" Namespace: "}{@.metadata.namespace}{"\n"}{end}' --all-namespaces
$ oc get obc -o=jsonpath='{range .items[?(@.spec.storageClassName=="openshift-storage.noobaa.io")]}{"Name: "}{@.metadata.name}{" Namespace: "}{@.metadata.namespace}{"\n"}{end}' --all-namespaces
Copy to Clipboard Copied! 以下の手順に従って、直前の手順に記載されている PVC および OBC が削除されていることを確認します。
モニタリングスタック、クラスターロギング Operator、またはイメージレジストリーの設定の一部として PVC を作成した場合は、必要に応じて以下のセクションで説明されているクリーンアップ手順を実行する必要があります。
- 「OpenShift Container Storage からのモニタリングスタックの削除」
- 「OpenShift Container Storage からの OpenShift Container Platform レジストリーの削除」
「OpenShift Container Storage からのクラスターロギング Operator の削除」
残りの PVC または OBC のそれぞれに、以下の手順を実行します。
- PVC または OBC を使用する Pod を判別します。
Deployment
、StatefulSet
、DaemonSet
、Job
、またはカスタムコントローラーなどの制御する側の API オブジェクトを特定します。各 API オブジェクトには、
OwnerReference
として知られるメタデータフィールドがあります。これは、関連付けられたオブジェクトの一覧です。controller
フィールドが true に設定されたOwnerReference
は、ReplicaSet
、StatefulSet
、DaemonSet
などの制御するオブジェクトを参照します。API オブジェクトが OpenShift Container Storage によって提供される PVC または OBC を使用していないことを確認します。オブジェクトを削除するか、ストレージを置き換える必要があります。プロジェクトオーナーに、オブジェクトを安全に削除または変更できることを確認するよう依頼します。
注記noobaa
Pod は無視できます。OBC を削除します。
oc delete obc <obc name> -n <project name>
$ oc delete obc <obc name> -n <project name>
Copy to Clipboard Copied! 作成したカスタムバケットクラスを削除します。
oc get bucketclass -A | grep -v noobaa-default-bucket-class
$ oc get bucketclass -A | grep -v noobaa-default-bucket-class
Copy to Clipboard Copied! oc delete bucketclass <bucketclass name> -n <project-name>
$ oc delete bucketclass <bucketclass name> -n <project-name>
Copy to Clipboard Copied! カスタム Multi Cloud Gateway バッキングストアを作成している場合は、それらを削除します。
バッキングストアの一覧を表示し、これらをメモします。
for bs in $(oc get backingstore -o name -n openshift-storage | grep -v noobaa-default-backing-store); do echo "Found backingstore $bs"; echo "Its has the following pods running :"; echo "$(oc get pods -o name -n openshift-storage | grep $(echo ${bs} | cut -f2 -d/))"; done
for bs in $(oc get backingstore -o name -n openshift-storage | grep -v noobaa-default-backing-store); do echo "Found backingstore $bs"; echo "Its has the following pods running :"; echo "$(oc get pods -o name -n openshift-storage | grep $(echo ${bs} | cut -f2 -d/))"; done
Copy to Clipboard Copied! 上記の各バッキングストアを削除し、対応する Pod および PVC が削除されていることを確認します。
for bs in $(oc get backingstore -o name -n openshift-storage | grep -v noobaa-default-backing-store); do echo "Deleting Backingstore $bs"; oc delete -n openshift-storage $bs; done
for bs in $(oc get backingstore -o name -n openshift-storage | grep -v noobaa-default-backing-store); do echo "Deleting Backingstore $bs"; oc delete -n openshift-storage $bs; done
Copy to Clipboard Copied! 上上記のバッキングストアのいずれかが pv-pool をベースとする場合、対応する Pod および PVC も削除してください。
oc get pods -n openshift-storage | grep noobaa-pod | grep -v noobaa-default-backing-store-noobaa-pod
$ oc get pods -n openshift-storage | grep noobaa-pod | grep -v noobaa-default-backing-store-noobaa-pod
Copy to Clipboard Copied! oc get pvc -n openshift-storage --no-headers | grep -v noobaa-db | grep -v noobaa-default-backing-store-noobaa-pvc
$ oc get pvc -n openshift-storage --no-headers | grep -v noobaa-db | grep -v noobaa-default-backing-store-noobaa-pvc
Copy to Clipboard Copied!
手順 1 に記載されている残りの PVC を削除します。
oc delete pvc <pvc name> -n <project-name>
$ oc delete pvc <pvc name> -n <project-name>
Copy to Clipboard Copied!
StorageCluster
オブジェクトを削除し、関連付けられたリソースが削除されるのを待機します。oc delete -n openshift-storage storagecluster --all --wait=true
$ oc delete -n openshift-storage storagecluster --all --wait=true
Copy to Clipboard Copied! namespace を削除し、削除が完了するまで待機します。openshift-storage がアクティブなプロジェクトである場合、別のプロジェクトに切り替える必要があります。
openshift-storage がアクティブな namespace の場合に別の namespace に切り替えます。
以下は例になります。
oc project default
$ oc project default
Copy to Clipboard Copied! openshift-storage
namespace を削除します。oc delete project openshift-storage --wait=true --timeout=5m
$ oc delete project openshift-storage --wait=true --timeout=5m
Copy to Clipboard Copied! 約 5 分間待機し、プロジェクトが正常に削除されたかどうかを確認します。
oc get project openshift-storage
$ oc get project openshift-storage
Copy to Clipboard Copied! 出力:
Error from server (NotFound): namespaces "openshift-storage" not found
Error from server (NotFound): namespaces "openshift-storage" not found
Copy to Clipboard Copied! 注記OpenShift Container Storage のアンインストール時に、namespace が完全に削除されず、Terminating 状態のままである場合は、Troubleshooting and deleting remaining resources during Uninstall の記事に記載の手順を実行して namespace の終了をブロックしているオブジェクトを特定します。
openshift-storage.noobaa.io
ストレージクラスを削除します。oc delete storageclass openshift-storage.noobaa.io --wait=true --timeout=5m
$ oc delete storageclass openshift-storage.noobaa.io --wait=true --timeout=5m
Copy to Clipboard Copied! すべての PV が削除されていることを確認します。Released 状態のままの PV がある場合は、これを削除します。
oc get pv|egrep 'ocs-external-storagecluster-ceph-rbd|ocs-external-storagecluster-cephfs'
# oc get pv|egrep 'ocs-external-storagecluster-ceph-rbd|ocs-external-storagecluster-cephfs'
Copy to Clipboard Copied! oc delete pv <pv name>
# oc delete pv <pv name>
Copy to Clipboard Copied! CustomResourceDefinitions
を削除します。oc delete crd backingstores.noobaa.io bucketclasses.noobaa.io cephblockpools.ceph.rook.io cephclusters.ceph.rook.io cephfilesystems.ceph.rook.io cephnfses.ceph.rook.io cephobjectstores.ceph.rook.io cephobjectstoreusers.ceph.rook.io noobaas.noobaa.io ocsinitializations.ocs.openshift.io storageclusterinitializations.ocs.openshift.io storageclusters.ocs.openshift.io cephclients.ceph.rook.io --wait=true --timeout=5m
$ oc delete crd backingstores.noobaa.io bucketclasses.noobaa.io cephblockpools.ceph.rook.io cephclusters.ceph.rook.io cephfilesystems.ceph.rook.io cephnfses.ceph.rook.io cephobjectstores.ceph.rook.io cephobjectstoreusers.ceph.rook.io noobaas.noobaa.io ocsinitializations.ocs.openshift.io storageclusterinitializations.ocs.openshift.io storageclusters.ocs.openshift.io cephclients.ceph.rook.io --wait=true --timeout=5m
Copy to Clipboard Copied! OpenShift Container Platform Web コンソールで、OpenShift Container Storage が完全にアンインストールされていることを確認するには、以下を実行します。
-
Home
Overview をクリックし、ダッシュボードにアクセスします。 - Persistent Storage および Object Service タブが Cluster タブの横に表示されないことを確認します。
-
Home