4.10. ローカルボリュームを使用した永続ストレージ
OpenShift Container Platform は、ローカルボリュームを使用する永続ストレージでプロビジョニングすることが可能です。ローカルの永続ボリュームを使用すると、標準の永続ボリューム要求 (PVC) インターフェイスを使用して、ディスクやパーティションなどのローカルのストレージデバイスにアクセスできます。
ローカルボリュームは、Pod をノードに手動でスケジュールせずに使用できます。ボリュームのノード制約がシステムによって認識されるためです。ただし、ローカルボリュームは、依然として基礎となるノードの可用性に依存しており、すべてのアプリケーションに適している訳ではありません。
ローカルボリュームは、静的に作成された永続ボリュームとしてのみ使用できます。
4.10.1. ローカルストレージ Operator のインストール
ローカルストレージ Operator はデフォルトで OpenShift Container Platform にインストールされません。以下の手順を使用してこの Operator をインストールし、クラスター内でローカルボリュームを有効にできるように設定します。
前提条件
- OpenShift Container Platform Web コンソールまたはコマンドラインインターフェイス (CLI) へのアクセス。
手順
openshift-local-storage
プロジェクトを作成します。$ oc adm new-project openshift-local-storage
オプション: インフラストラクチャーノードでのローカルストレージの作成を許可します。
ロギングやモニタリングなどのコンポーネントに対応するために、ローカルストレージ Operator を使用してインフラストラクチャーノードでボリュームを作成する必要がある場合があります。
ローカルストレージ Operator にワーカーノードだけでなくインフラストラクチャーノードが含まれるように、デフォルトのノードセレクターを調整する必要があります。
ローカルストレージ Operator がクラスター全体のデフォルトセレクターを継承しないようにするには、以下のコマンドを実行します。
$ oc annotate namespace openshift-local-storage openshift.io/node-selector=''
オプション: 単一ノードデプロイメントの CPU の管理プールでローカルストレージを実行できるようにします。
単一ノードデプロイメントで Local Storage Operator を使用し、
literal
プールに属する CPU の使用を許可します。この手順は、管理ワークロードパーティショニングを使用する単一ノードインストールで実行します。Local Storage Operator が管理 CPU プールで実行できるようにするには、次のコマンドを実行します。
$ oc annotate namespace openshift-local-storage workload.openshift.io/allowed='management'
UI での操作
Web コンソールからローカルストレージ Operator をインストールするには、以下の手順を実行します。
- OpenShift Container Platform Web コンソールにログインします。
-
Operators
OperatorHub に移動します。 - Local Storage をフィルターボックスに入力して、ローカルストレージ Operator を見つけます。
- Install をクリックします。
- Install Operator ページで、A specific namespace on the cluster を選択します。ドロップメニューから openshift-local-storage を選択します。
- Update Channel および Approval Strategy の値を必要な値に調整します。
- Install をクリックします。
これが完了すると、ローカルストレージ Operator は Web コンソールの Installed Operators セクションに一覧表示されます。
CLI からの操作
CLI からローカルストレージ Operator をインストールします。
以下のコマンドを実行して OpenShift Container Platform のメジャーおよびマイナーバージョンを取得します。これは、次の手順の
channel
の値に必要です。$ OC_VERSION=$(oc version -o yaml | grep openshiftVersion | \ grep -o '[0-9]*[.][0-9]*' | head -1)
ローカルストレージ Operator の Operator グループおよびサブスクリプションを定義するために、オブジェクト YAML ファイル (例:
openshift-local-storage.yaml
) を作成します。例: openshift-local-storage.yaml
apiVersion: operators.coreos.com/v1 kind: OperatorGroup metadata: name: local-operator-group namespace: openshift-local-storage spec: targetNamespaces: - openshift-local-storage --- apiVersion: operators.coreos.com/v1alpha1 kind: Subscription metadata: name: local-storage-operator namespace: openshift-local-storage spec: channel: "${OC_VERSION}" installPlanApproval: Automatic 1 name: local-storage-operator source: redhat-operators sourceNamespace: openshift-marketplace
- 1
- インストール計画のユーザー承認ポリシー。
以下のコマンドを実行して、ローカルストレージ Operator オブジェクトを作成します。
$ oc apply -f openshift-local-storage.yaml
この時点で、Operator Lifecycle Manager (OLM) はローカルストレージ Operator を認識できるようになります。Operator の ClusterServiceVersion (CSV) はターゲット namespace に表示され、Operator で指定される API は作成用に利用可能になります。
すべての Pod およびローカルストレージ Operator が作成されていることを確認して、ローカルストレージのインストールを検証します。
必要な Pod すべてが作成されていることを確認します。
$ oc -n openshift-local-storage get pods
出力例
NAME READY STATUS RESTARTS AGE local-storage-operator-746bf599c9-vlt5t 1/1 Running 0 19m
ClusterServiceVersion (CSV) YAML マニフェストをチェックして、ローカルストレージ Operator が
openshift-local-storage
プロジェクトで利用できることを確認します。$ oc get csvs -n openshift-local-storage
出力例
NAME DISPLAY VERSION REPLACES PHASE local-storage-operator.4.2.26-202003230335 Local Storage 4.2.26-202003230335 Succeeded
すべてのチェックが渡されると、ローカルストレージ Operator が正常にインストールされます。
4.10.2. ローカルストレージ Operator を使用したローカルボリュームのプロビジョニング
ローカルボリュームは動的プロビジョニングで作成できません。代わりに、永続ボリュームがローカルストレージ Operator によって作成されることがあります。このローカルボリュームプロビジョナーは、定義されたリソースで指定されているパスでファイルシステムまたはブロックボリュームデバイスを検索します。
前提条件
- ローカルストレージ Operator がインストールされていること。
以下の条件を満たすローカルディスクがある。
- ノードに接続されている。
- マウントされていない。
- パーティションが含まれていない。
手順
ローカルボリュームリソースを作成します。このリソースは、ノードおよびローカルボリュームへのパスを定義する必要があります。
注記同じデバイスに別のストレージクラス名を使用しないでください。これを行うと、複数の永続ボリューム (PV) が作成されます。
例: ファイルシステム
apiVersion: "local.storage.openshift.io/v1" kind: "LocalVolume" metadata: name: "local-disks" namespace: "openshift-local-storage" 1 spec: nodeSelector: 2 nodeSelectorTerms: - matchExpressions: - key: kubernetes.io/hostname operator: In values: - ip-10-0-140-183 - ip-10-0-158-139 - ip-10-0-164-33 storageClassDevices: - storageClassName: "local-sc" 3 volumeMode: Filesystem 4 fsType: xfs 5 devicePaths: 6 - /path/to/device 7
- 1
- ローカルストレージ Operator がインストールされている namespace。
- 2
- オプション: ローカルストレージボリュームが割り当てられているノードの一覧が含まれるノードセレクター。以下の例では、
oc get node
から取得したノードホスト名を使用します。値が定義されない場合、ローカルストレージ Operator は利用可能なすべてのノードで一致するディスクの検索を試行します。 - 3
- 永続ボリュームオブジェクトの作成時に使用するストレージクラスの名前。ローカルストレージ Operator は、ストレージクラスが存在しない場合にこれを自動的に作成します。このローカルボリュームのセットを一意に識別するストレージクラスを使用するようにしてください。
- 4
- ローカルボリュームのタイプを定義するボリュームモード (
Filesystem
またはBlock
)。 - 5
- ローカルボリュームの初回マウント時に作成されるファイルシステム。
- 6
- 選択するローカルストレージデバイスの一覧を含むパスです。
- 7
- この値を、
LocalVolume
リソースby-id
への実際のローカルディスクのファイルパスに置き換えます (例:/dev/disk/by-id/wwn
)。プロビジョナーが正常にデプロイされると、これらのローカルディスク用に PV が作成されます。
注記raw ブロックボリューム (
volumeMode: block
) はファイルシステムでフォーマットされません。このモードは、Pod で実行しているすべてのアプリケーションが raw ブロックデバイスを使用できる場合にのみ使用してください。例: ブロック
apiVersion: "local.storage.openshift.io/v1" kind: "LocalVolume" metadata: name: "local-disks" namespace: "openshift-local-storage" 1 spec: nodeSelector: 2 nodeSelectorTerms: - matchExpressions: - key: kubernetes.io/hostname operator: In values: - ip-10-0-136-143 - ip-10-0-140-255 - ip-10-0-144-180 storageClassDevices: - storageClassName: "localblock-sc" 3 volumeMode: Block 4 devicePaths: 5 - /path/to/device 6
- 1
- ローカルストレージ Operator がインストールされている namespace。
- 2
- オプション: ローカルストレージボリュームが割り当てられているノードの一覧が含まれるノードセレクター。以下の例では、
oc get node
から取得したノードホスト名を使用します。値が定義されない場合、ローカルストレージ Operator は利用可能なすべてのノードで一致するディスクの検索を試行します。 - 3
- 永続ボリュームオブジェクトの作成時に使用するストレージクラスの名前。
- 4
- ローカルボリュームのタイプを定義するボリュームモード (
Filesystem
またはBlock
)。 - 5
- 選択するローカルストレージデバイスの一覧を含むパスです。
- 6
- この値を、
LocalVolume
リソースby-id
への実際のローカルディスクのファイルパスに置き換えます (例:dev/disk/by-id/wwn
)。プロビジョナーが正常にデプロイされると、これらのローカルディスク用に PV が作成されます。
OpenShift Container Platform クラスターにローカルボリュームリソースを作成します。作成したばかりのファイルを指定します。
$ oc create -f <local-volume>.yaml
プロビジョナーが作成され、対応するデーモンセットが作成されていることを確認します。
$ oc get all -n openshift-local-storage
出力例
NAME READY STATUS RESTARTS AGE pod/diskmaker-manager-9wzms 1/1 Running 0 5m43s pod/diskmaker-manager-jgvjp 1/1 Running 0 5m43s pod/diskmaker-manager-tbdsj 1/1 Running 0 5m43s pod/local-storage-operator-7db4bd9f79-t6k87 1/1 Running 0 14m NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE service/local-storage-operator-metrics ClusterIP 172.30.135.36 <none> 8383/TCP,8686/TCP 14m NAME DESIRED CURRENT READY UP-TO-DATE AVAILABLE NODE SELECTOR AGE daemonset.apps/diskmaker-manager 3 3 3 3 3 <none> 5m43s NAME READY UP-TO-DATE AVAILABLE AGE deployment.apps/local-storage-operator 1/1 1 1 14m NAME DESIRED CURRENT READY AGE replicaset.apps/local-storage-operator-7db4bd9f79 1 1 1 14m
デーモンセットプロセスの必要な数と現在の数に注意してください。必要な数が
0
の場合、これはラベルセレクターが無効であることを示します。永続ボリュームが作成されていることを確認します。
$ oc get pv
出力例
NAME CAPACITY ACCESS MODES RECLAIM POLICY STATUS CLAIM STORAGECLASS REASON AGE local-pv-1cec77cf 100Gi RWO Delete Available local-sc 88m local-pv-2ef7cd2a 100Gi RWO Delete Available local-sc 82m local-pv-3fa1c73 100Gi RWO Delete Available local-sc 48m
LocalVolume
オブジェクトを編集しても、既存の永続ボリュームの fsType
または volumeMode
は変更されません。これが破壊的な操作になる可能性があるためです。
4.10.3. ローカルストレージ Operator のないローカルボリュームのプロビジョニング
ローカルボリュームは動的プロビジョニングで作成できません。代わりに、永続ボリュームは、永続ボリューム (PV) をオブジェクト定義に定義して作成できます。このローカルボリュームプロビジョナーは、定義されたリソースで指定されているパスでファイルシステムまたはブロックボリュームデバイスを検索します。
PV の手動プロビジョニングには、PVC の削除時に PV 全体でデータ漏洩が発生するリスクが含まれます。ローカルストレージ Operator は、ローカル PV のプロビジョニング時にデバイスのライフサイクルを自動化するために使用することが推奨されます。
前提条件
- ローカルディスクが OpenShift Container Platform ノードに割り当てられていること。
手順
PV を定義します。
PersistentVolume
オブジェクト定義を使用して、example-pv-filesystem.yaml
またはexample-pv-block.yaml
などのファイルを作成します。このリソースは、ノードおよびローカルボリュームへのパスを定義する必要があります。注記同じデバイスに別のストレージクラス名を使用しないでください。同じ名前を使用すると、複数の PV が作成されます。
example-pv-filesystem.yaml
apiVersion: v1 kind: PersistentVolume metadata: name: example-pv-filesystem spec: capacity: storage: 100Gi volumeMode: Filesystem 1 accessModes: - ReadWriteOnce persistentVolumeReclaimPolicy: Delete storageClassName: local-storage 2 local: path: /dev/xvdf 3 nodeAffinity: required: nodeSelectorTerms: - matchExpressions: - key: kubernetes.io/hostname operator: In values: - example-node
注記raw ブロックボリューム (
volumeMode: block
) はファイルシステムでフォーマットされません。このモードは、Pod で実行しているすべてのアプリケーションが raw ブロックデバイスを使用できる場合にのみ使用します。example-pv-block.yaml
apiVersion: v1 kind: PersistentVolume metadata: name: example-pv-block spec: capacity: storage: 100Gi volumeMode: Block 1 accessModes: - ReadWriteOnce persistentVolumeReclaimPolicy: Delete storageClassName: local-storage 2 local: path: /dev/xvdf 3 nodeAffinity: required: nodeSelectorTerms: - matchExpressions: - key: kubernetes.io/hostname operator: In values: - example-node
OpenShift Container Platform クラスターに PV リソースを作成します。作成したばかりのファイルを指定します。
$ oc create -f <example-pv>.yaml
ローカル PV が作成されていることを確認します。
$ oc get pv
出力例
NAME CAPACITY ACCESS MODES RECLAIM POLICY STATUS CLAIM STORAGECLASS REASON AGE example-pv-filesystem 100Gi RWO Delete Available local-storage 3m47s example-pv1 1Gi RWO Delete Bound local-storage/pvc1 local-storage 12h example-pv2 1Gi RWO Delete Bound local-storage/pvc2 local-storage 12h example-pv3 1Gi RWO Delete Bound local-storage/pvc3 local-storage 12h
4.10.4. ローカルボリュームの永続ボリューム要求 (PVC) の作成
ローカルボリュームは、Pod でアクセスされる永続ボリューム要求 (PVC) として静的に作成される必要があります。
前提条件
- 永続ボリュームがローカルボリュームプロビジョナーを使用して作成されていること。
手順
対応するストレージクラスを使用して PVC を作成します。
kind: PersistentVolumeClaim apiVersion: v1 metadata: name: local-pvc-name 1 spec: accessModes: - ReadWriteOnce volumeMode: Filesystem 2 resources: requests: storage: 100Gi 3 storageClassName: local-sc 4
作成したファイルを指定して、PVC を OpenShift Container Platform クラスターに作成します。
$ oc create -f <local-pvc>.yaml
4.10.5. ローカル要求を割り当てます。
ローカルボリュームが永続ボリューム要求 (PVC) にマップされた後に、これをリソース内に指定できます。
前提条件
- 永続ボリューム要求 (PVC) が同じ namespace に存在する。
手順
定義された要求をリソースの仕様に追加します。以下の例では、Pod 内で永続ボリューム要求 (PVC) を宣言します。
apiVersion: v1 kind: Pod spec: ... containers: volumeMounts: - name: local-disks 1 mountPath: /data 2 volumes: - name: localpvc persistentVolumeClaim: claimName: local-pvc-name 3
作成したファイルを指定して、OpenShift Container Platform クラスターにリソースを作成します。
$ oc create -f <local-pod>.yaml
4.10.6. 詳細は、ローカルストレージデバイスの自動検出およびプロビジョニングを参照してください。
ローカルストレージ Operator はローカルストレージ検出およびプロビジョニングを自動化します。この機能を使用すると、ベアメタル、VMware、または割り当てられたデバイスを持つ AWS ストアインスタンスなど、デプロイメント時に動的プロビジョニングが利用できない場合にインストールを単純化できます。
自動検出およびプロビジョニングはテクノロジープレビュー機能としてのみご利用いただけます。テクノロジープレビュー機能は、Red Hat 製品のサービスレベルアグリーメント (SLA) の対象外であり、機能的に完全ではないことがあります。Red Hat は実稼働環境でこれらを使用することを推奨していません。テクノロジープレビュー機能は、最新の製品機能をいち早く提供して、開発段階で機能のテストを行いフィードバックを提供していただくことを目的としています。
ただし、ベアメタル上に Red Hat OpenShift Data Foundation をデプロイするために使用される場合、自動検出とプロビジョニングは完全にサポートされます。
Red Hat のテクノロジープレビュー機能のサポート範囲に関する詳細は、テクノロジープレビュー機能のサポート範囲 を参照してください。
ローカルデバイスを自動的に検出し、選択したデバイスのローカルボリュームを自動的にプロビジョニングするには、以下の手順を使用します。
LocalVolumeSet
オブジェクトの使用には注意が必要です。ローカルディスクから永続ボリューム (PV) を自動的にプロビジョニングする場合、ローカル PV は一致するすべてのデバイスを要求する可能性があります。LocalVolumeSet
オブジェクトを使用している場合、ローカルストレージ Operator がノードでローカルデバイスを管理する唯一のエンティティーであることを確認します。
前提条件
- クラスター管理者パーミッションがある。
- ローカルストレージ Operator がインストールされていること。
- ローカルディスクが OpenShift Container Platform ノードに割り当てられていること。
-
OpenShift Container Platform Web コンソールまたは
oc
コマンドラインインターフェイス (CLI) へのアクセスがあること。
手順
Web コンソールからローカルデバイスの自動検出を有効にするには、以下を行います。
-
Administrator パースペクティブで、Operators
Installed Operators に移動し、Local Volume Discovery タブをクリックします。 - Create Local Volume Discovery をクリックします。
利用可能なディスクをすべてのノードまたは特定のノードのどちらで検出する必要があるかに応じて、All nodes または Select nodes のいずれかを選択します。
注記All nodes または Select nodes を使用してフィルターするかどうかにかかわらず、ワーカーノードのみが利用可能になります。
- Create をクリックします。
-
Administrator パースペクティブで、Operators
auto-discover-devices
という名前のローカルボリューム検出インスタンスが表示されます。
ノードで利用可能なデバイスの連続リストを表示するには、以下を実行します。
- OpenShift Container Platform Web コンソールにログインします。
-
Compute
Nodes に移動します。 - 開くノードの名前をクリックします。Node Details ページが表示されます。
Disks タブを選択して、選択したデバイスの一覧を表示します。
ローカルディスクを追加または削除しても、デバイス一覧の更新が継続的に行われます。名前、ステータス、タイプ、モデル、容量、およびモードでデバイスをフィルターできます。
Web コンソールから検出されたデバイスのローカルボリュームを自動的にプロビジョニングするには、以下を実行します。
-
Operators
Installed Operators に移動し、Operator の一覧から Local Storage を選択します。 -
Local Volume Set
Create Local Volume Set を選択します。 - ボリュームセット名とストレージクラス名を入力します。
All nodes または Select nodes を選択し、適宜フィルターを適用します。
注記All nodes または Select nodes を使用してフィルターするかどうかにかかわらず、ワーカーノードのみが利用可能になります。
ローカルボリュームセットに適用するディスクタイプ、モード、サイズ、および制限を選択し、Create をクリックします。
メッセージが数分後に表示され、Operator reconciled successfully という Operator の調整が正常に行われたことが示唆されます。
-
Operators
または、CLI から検出されたデバイスのローカルボリュームをプロビジョニングするには、以下を実行します。
以下の例に示されるように、オブジェクト YAML ファイルを作成し、
local-volume-set.yaml
などのローカルボリュームセットを定義します。apiVersion: local.storage.openshift.io/v1alpha1 kind: LocalVolumeSet metadata: name: example-autodetect spec: nodeSelector: nodeSelectorTerms: - matchExpressions: - key: kubernetes.io/hostname operator: In values: - worker-0 - worker-1 storageClassName: example-storageclass 1 volumeMode: Filesystem fsType: ext4 maxDeviceCount: 10 deviceInclusionSpec: deviceTypes: 2 - disk - part deviceMechanicalProperties: - NonRotational minSize: 10G maxSize: 100G models: - SAMSUNG - Crucial_CT525MX3 vendors: - ATA - ST2000LM
ローカルボリュームセットオブジェクトを作成します。
$ oc apply -f local-volume-set.yaml
ローカル永続ボリュームがストレージクラスに基づいて動的にプロビジョニングされていることを確認します。
$ oc get pv
出力例
NAME CAPACITY ACCESS MODES RECLAIM POLICY STATUS CLAIM STORAGECLASS REASON AGE local-pv-1cec77cf 100Gi RWO Delete Available example-storageclass 88m local-pv-2ef7cd2a 100Gi RWO Delete Available example-storageclass 82m local-pv-3fa1c73 100Gi RWO Delete Available example-storageclass 48m
結果は、ノードから削除された後に削除されます。シンボリックリンクは手動で削除する必要があります。
4.10.7. ローカルストレージ Operator Pod での容認の使用
テイントはノードに適用し、それらが一般的なワークロードを実行しないようにすることができます。ローカルストレージ Operator がテイントのマークが付けられたノードを使用できるようにするには、容認を Pod
または DaemonSet
定義に追加する必要があります。これにより、作成されたリソースをこれらのテイントのマークが付けられたノードで実行できるようになります。
容認を LocalVolume
リソースでローカルストレージ Operator Pod に適用し、テイントをノード仕様でノードに適用します。ノードのテイントはノードに対し、テイントを容認しないすべての Pod を拒否するよう指示します。他の Pod にはない特定のテイントを使用することで、ローカルストレージ Operator Pod がそのノードでも実行されるようにできます。
テイントおよび容認は、key、value、および effect で設定されています。引数として、これは key=value:effect
として表現されます。演算子により、これらの 3 つのパラメーターのいずれかを空のままにすることができます。
前提条件
- ローカルストレージ Operator がインストールされていること。
- ローカルディスクがテイントを持つ OpenShift Container Platform ノードに割り当てられている。
- テイントのマークが付けられたノードがローカルストレージのプロビジョニングを行うことが想定されます。
手順
テイントのマークが付けられたノードでスケジュールするようにローカルボリュームを設定するには、以下を実行します。
以下の例に示されるように、
Pod
を定義する YAML ファイルを変更し、LocalVolume
仕様を追加します。apiVersion: "local.storage.openshift.io/v1" kind: "LocalVolume" metadata: name: "local-disks" namespace: "openshift-local-storage" spec: tolerations: - key: localstorage 1 operator: Equal 2 value: "localstorage" 3 storageClassDevices: - storageClassName: "localblock-sc" volumeMode: Block 4 devicePaths: 5 - /dev/xvdg
オプション: テイントのマークが付けられたノードでのみローカル永続ボリュームを作成するには、以下の例のように YAML ファイルを変更し、
LocalVolume
仕様を追加します。spec: tolerations: - key: node-role.kubernetes.io/master operator: Exists
定義された容認は結果として作成されるデーモンセットに渡されます。これにより、diskmaker およびプロビジョナー Pod を指定されたテイントが含まれるノード用に作成できます。
4.10.8. ローカルストレージ Operator メトリクス
OpenShift Container Platform は、ローカルストレージ Operator の以下のメトリクスを提供します。
-
lso_discovery_disk_count
: 各ノードで検出されたデバイスの合計数 -
lso_lvset_provisioned_PV_count
:LocalVolumeSet
オブジェクトによって作成される PV の合計数 -
lso_lvset_unmatched_disk_count
: 条件の不一致により、ローカルストレージ Operator がプロビジョニング用に選択しなかったディスクの合計数 -
lso_lvset_orphaned_symlink_count
:LocalVolumeSet
オブジェクト基準に一致しなくなった PV のあるデバイスの数 -
lso_lv_orphaned_symlink_count
:LocalVolume
オブジェクト基準に一致しなくなった PV のあるデバイスの数 -
lso_lv_provisioned_PV_count
:LocalVolume
のプロビジョニングされた PV の合計数
これらのメトリクスを使用するには、以下の点を確認してください。
- ローカルストレージ Operator のインストール時に、モニタリングのサポートを有効にする。
-
OpenShift Container Platform 4.9 以降にアップグレードする場合は、namespace に
operator-metering=true
ラベルを追加してメトリックサポートを手動で有効にしてください。
メトリクスの詳細は、メトリクスの管理 を参照してください。
4.10.9. ローカルストレージ Operator のリソースの削除
4.10.9.1. ローカルボリュームまたはローカルボリュームセットの削除
ローカルボリュームおよびローカルボリュームセットを削除する必要がある場合があります。リソースのエントリーを削除し、永続ボリュームを削除することで通常は十分ですが、同じデバイスパスを再使用する場合や別のストレージクラスでこれを管理する必要がある場合には、追加の手順が必要になります。
以下の手順では、ローカルボリュームを削除する例の概要を説明します。同じ手順を使用して、ローカルボリュームセットのカスタムリソースのシンボリックリンクを削除することもできます。
前提条件
永続ボリュームの状態は
Released
またはAvailable
である必要があります。警告使用中の永続ボリュームを削除すると、データの損失や破損につながる可能性があります。
手順
以前に作成したローカルボリュームを編集して、不要なディスクを削除します。
クラスターリソースを編集します。
$ oc edit localvolume <name> -n openshift-local-storage
-
devicePaths
の下の行に移動し、不要なディスクを表すものを削除します。
作成した永続ボリュームを削除します。
$ oc delete pv <pv-name>
ノードのシンボリックリンクを削除します。
警告以下の手順では、root ユーザーとしてノードにアクセスする必要があります。この手順のステップ以外にノードの状態を変更すると、クラスターが不安定になる可能性があります。
ノードにデバッグ Pod を作成します。
$ oc debug node/<node-name>
ルートディレクトリーを
/host
に変更します。$ chroot /host
ローカルボリュームのシンボリックリンクを含むディレクトリーに移動します。
$ cd /mnt/openshift-local-storage/<sc-name> 1
- 1
- ローカルボリュームの作成に使用されるストレージクラスの名前。
削除したデバイスに属するシンボリックリンクを削除します。
$ rm <symlink>
4.10.9.2. ローカルストレージ Operator のアンインストール
ローカルストレージ Operator をアンインストールするには、Operator および openshift-local-storage
プロジェクトの作成されたすべてのリソースを削除する必要があります。
ローカルストレージ PV がまだ使用中の状態でローカルストレージ Operator をアンインストールすることは推奨されません。PV は Operator の削除後も残りますが、PV およびローカルストレージリソースを削除せずに Operator がアンインストールされ、再インストールされる場合に予測できない動作が生じる可能性があります。
前提条件
- OpenShift Container Platform Web コンソールにアクセスできる。
手順
プロジェクトにインストールされているローカルボリュームリソースを削除します (
localvolume
、localvolumeset
、localvolumediscovery
等)。$ oc delete localvolume --all --all-namespaces $ oc delete localvolumeset --all --all-namespaces $ oc delete localvolumediscovery --all --all-namespaces
Web コンソールからローカルストレージ Operator をアンインストールします。
- OpenShift Container Platform Web コンソールにログインします。
-
Operators
Installed Operators に移動します。 - Local Storage をフィルターボックスに入力して、ローカルストレージ Operator を見つけます。
- ローカルストレージ Operator の末尾にある Options メニュー をクリックします。
- Uninstall Operator をクリックします。
- 表示されるウィンドウで Remove をクリックします。
ローカルストレージ Operator で作成された PV は削除されるまでクラスターに残ります。これらのボリュームが使用されなくなったら、以下のコマンドを実行してこれらのボリュームを削除します。
$ oc delete pv <pv-name>
openshift-local-storage
プロジェクトを削除します。$ oc delete project openshift-local-storage