This documentation is for a release that is no longer maintained
See documentation for the latest supported version 3 or the latest supported version 4.3.12. ローカルボリュームを使用した永続ストレージ
OpenShift Container Platform は、ローカルボリュームを使用する永続ストレージでプロビジョニングすることが可能です。ローカルの永続ボリュームを使用すると、標準の PVC インターフェースを使用して、ディスクやパーティションなどのローカルのストレージデバイスにアクセスできます。
ローカルボリュームは、Pod をノードに手動でスケジュールせずに使用できます。ボリュームのノード制約がシステムによって認識されるためです。ただし、ローカルボリュームは、依然として基礎となるノードの可用性に依存しており、すべてのアプリケーションに適している訳ではありません。
ローカルボリュームは、静的に作成された永続ボリュームとしてのみ使用できます。
3.12.1. ローカルストレージ Operator のインストール リンクのコピーリンクがクリップボードにコピーされました!
ローカルストレージ Operator はデフォルトで OpenShift Container Platform にインストールされません。以下の手順を使用してこの Operator をインストールし、クラスター内でローカルボリュームを有効にできるように設定します。
前提条件
- OpenShift Container Platform Web コンソールまたはコマンドラインインターフェース (CLI) へのアクセス。
手順
local-storage
プロジェクトを作成します。oc new-project local-storage
$ oc new-project local-storage
Copy to Clipboard Copied! Toggle word wrap Toggle overflow オプション: マスターおよびインフラストラクチャーノードでのローカルストレージの作成を許可します。
ロギングやモニタリングなどのコンポーネントに対応するために、ワーカーノードだけではなく、ローカルストレージ Operator を使用してマスターおよびインフラストラクチャーノードでボリュームを作成する必要のある場合があります。
マスターおよびインフラストラクチャーノードでローカルストレージを作成できるようにするには、以下のコマンドを入力して容認を DaemonSet に追加します。
oc patch ds local-storage-local-diskmaker -n local-storage -p '{"spec": {"template": {"spec": {"tolerations":[{"operator": "Exists"}]}}}}'
$ oc patch ds local-storage-local-diskmaker -n local-storage -p '{"spec": {"template": {"spec": {"tolerations":[{"operator": "Exists"}]}}}}'
Copy to Clipboard Copied! Toggle word wrap Toggle overflow oc patch ds local-storage-local-provisioner -n local-storage -p '{"spec": {"template": {"spec": {"tolerations":[{"operator": "Exists"}]}}}}'
$ oc patch ds local-storage-local-provisioner -n local-storage -p '{"spec": {"template": {"spec": {"tolerations":[{"operator": "Exists"}]}}}}'
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
UI での操作
Web コンソールからローカルストレージ Operator をインストールするには、以下の手順を実行します。
- OpenShift Container Platform Web コンソールにログインします。
-
Operators
OperatorHub に移動します。 - Local Storage をフィルターボックスに入力して、ローカルストレージ Operator を見つけます。
- Install をクリックします。
- Create Operator Subscription ページで、A specific namespace on the cluster を選択します。ドロップメニューから local-storage を選択します。
- Update Channel および Approval Strategy の値を必要な値に調整します。
- Subscribe をクリックします。
これが完了すると、ローカルストレージ Operator は Web コンソールの Installed Operators セクションに一覧表示されます。
CLI からの操作
CLI からローカルストレージ Operator をインストールします。
ローカルストレージ Operator の namespace、OperatorGroup、およびサブスクリプションを定義するために、オブジェクト YAML ファイルを作成します (例:
local-storage.yaml
)。Local-storage の例
Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
- このフィールドは、OpenShift Container Platform のリリースの選択に一致するように編集できます。
以下のコマンドを実行して、ローカルストレージ Operator オブジェクトを作成します。
oc apply -f local-storage.yaml
$ oc apply -f local-storage.yaml
Copy to Clipboard Copied! Toggle word wrap Toggle overflow この時点で、Operator Lifecycle Manager (OLM) はローカルストレージ Operator を認識できるようになります。Operator の ClusterServiceVersion (CSV) はターゲット namespace に表示され、Operator で指定される API は作成用に利用可能になります。
すべての Pod およびローカルストレージ Operator が作成されていることを確認して、ローカルストレージのインストールを検証します。
必要な Pod すべてが作成されていることを確認します。
oc -n local-storage get pods
$ oc -n local-storage get pods NAME READY STATUS RESTARTS AGE local-storage-operator-746bf599c9-vlt5t 1/1 Running 0 19m
Copy to Clipboard Copied! Toggle word wrap Toggle overflow ClusterServiceVersion (CSV) YAML マニフェストをチェックして、ローカルストレージ Operator が
local-storage
プロジェクトで利用できることを確認します。oc get csvs -n local-storage
$ oc get csvs -n local-storage NAME DISPLAY VERSION REPLACES PHASE local-storage-operator.4.2.26-202003230335 Local Storage 4.2.26-202003230335 Succeeded
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
すべてのチェックが渡されると、ローカルストレージ Operator が正常にインストールされます。
3.12.2. ローカルボリュームのプロビジョニング リンクのコピーリンクがクリップボードにコピーされました!
ローカルボリュームは動的プロビジョニングで作成できません。代わりに、PersistentVolume がローカルストレージ Operator によって作成される必要があります。このプロビジョナーは、定義されたリソースで指定されているパスでデバイス (ファイルシステムおよびブロックボリュームの両方) を検索します。
前提条件
- ローカルストレージ Operator がインストールされていること。
- ローカルディスクが OpenShift Container Platform ノードに割り当てられていること。
手順
ローカルボリュームリソースを作成します。これは、ノードおよびローカルボリュームへのパスを定義する必要があります。
注記同じデバイスに別の StorageClass 名を使用しないでください。これを行うと、複数の永続ボリューム (PV) が作成されます。
例: ファイルシステム
Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
- ローカルストレージ Operator がインストールされている namespace。
- 2
- オプション: ローカルストレージボリュームが割り当てられているノードの一覧が含まれるノードセレクター。以下の例では、
oc get node
から取得したノードホスト名を使用します。値が定義されない場合、ローカルストレージ Operator は利用可能なすべてのノードで一致するディスクの検索を試行します。 - 3
- ボリュームモード (
Filesystem
またはBlock
) で、ローカルボリュームのタイプを定義します。 - 4
- ローカルボリュームの初回マウント時に作成されるファイルシステム。
- 5
- 選択するローカルストレージデバイスの一覧を含むパスです。
- 6
- この値を、
/dev/xvdg
などの LocalVolume リソースへの実際のローカルディスクのファイルパスに置き換えます。プロビジョナーが正常にデプロイされると、これらのローカルディスク用に PV が作成されます。
例: ブロック
Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
- ローカルストレージ Operator がインストールされている namespace。
- 2
- オプション: ローカルストレージボリュームが割り当てられているノードの一覧が含まれるノードセレクター。以下の例では、
oc get node
から取得したノードホスト名を使用します。値が定義されない場合、ローカルストレージ Operator は利用可能なすべてのノードで一致するディスクの検索を試行します。 - 3
- ボリュームモード (
Filesystem
またはBlock
) で、ローカルボリュームのタイプを定義します。 - 4
- 選択するローカルストレージデバイスの一覧を含むパスです。
- 5
- この値を、
/dev/xvdg
などの LocalVolume リソースへの実際のローカルディスクのファイルパスに置き換えます。プロビジョナーが正常にデプロイされると、これらのローカルディスク用に PV が作成されます。
先に作成したファイルを指定して、OpenShift Container Platform クラスターにローカルボリュームリソースを作成します。
oc create -f <local-volume>.yaml
$ oc create -f <local-volume>.yaml
Copy to Clipboard Copied! Toggle word wrap Toggle overflow プロビジョナーが作成され、対応する DaemonSet が作成されていることを確認します。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow DaemonSet プロセスの必要な数と現在の数に注意してください。必要な数が
0
の場合、これはラベルセレクターが無効であることを示します。PersistentVolume が作成されていることを確認します。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
LocalVolume オブジェクトを編集しても、既存の PersistentVolume の fsType
または volumeMode
は変更されません。これは破壊的な操作になる可能性があります。
3.12.3. ローカルボリューム PersistentVolumeClaim の作成 リンクのコピーリンクがクリップボードにコピーされました!
ローカルボリュームは、Pod でアクセスされる PersistentVolumeClaim (PVC) として静的に作成される必要があります。
前提条件
- Persistentvolume がローカルボリュームプロビジョナーを使用して作成されていること。
手順
対応する StorageClass を使用して PVC を作成します。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 作成したファイルを指定して、PVC を OpenShift Container Platform クラスターに作成します。
oc create -f <local-pvc>.yaml
$ oc create -f <local-pvc>.yaml
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
3.12.4. ローカル要求を割り当てます。 リンクのコピーリンクがクリップボードにコピーされました!
ローカルボリュームが PersistentVolumeClaim (PVC) にマップされた後に、これをリソース内に指定できます。
前提条件
- PVC が同じ namespace に存在する。
手順
定義された要求をリソースの仕様に追加します。以下の例では、Pod 内で PVC を宣言します。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 作成したファイルを指定して、OpenShift Container Platform クラスターにリソースを作成します。
oc create -f <local-pod>.yaml
$ oc create -f <local-pod>.yaml
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
3.12.5. ローカルストレージ 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
仕様を追加します。Copy to Clipboard Copied! Toggle word wrap Toggle overflow
定義された容認は結果として作成される DaemonSet に渡されます。これにより、diskmaker およびプロビジョナー Pod を指定されたテイントが含まれるノード用に作成できます。
3.12.6. ローカルストレージ Operator のリソースの削除 リンクのコピーリンクがクリップボードにコピーされました!
3.12.6.1. ローカルボリュームの削除 リンクのコピーリンクがクリップボードにコピーされました!
ローカルボリュームを削除する必要がある場合があります。LocalVolume リソースのエントリーを削除し、PersistentVolume を削除することで通常は十分ですが、同じデバイスパスを再使用する場合や別の StorageClass でこれを管理する必要がある場合には、追加の手順が必要になります。
以下の手順では、root ユーザーとしてノードにアクセスします。この手順のステップ以外にノードの状態を変更すると、クラスターが不安定になる可能性があります。
前提条件
PersistentVolume の状態は
Released
またはAvailable
である必要があります。警告使用中の PersistentVolume を削除すると、データの損失や破損につながる可能性があります。
手順
以前に作成した LocalVolume を編集して、不要なディスクを削除します。
クラスターリソースを編集します。
oc edit localvolume <name> -n local-storage
$ oc edit localvolume <name> -n local-storage
Copy to Clipboard Copied! Toggle word wrap Toggle overflow -
devicePaths
の下の行に移動し、不要なディスクを表すものを削除します。
作成した PersistentVolume を削除します。
oc delete pv <pv-name>
$ oc delete pv <pv-name>
Copy to Clipboard Copied! Toggle word wrap Toggle overflow ノードのシンボリックリンクを削除します。
ノードにデバッグ Pod を作成します。
oc debug node/<node-name>
$ oc debug node/<node-name>
Copy to Clipboard Copied! Toggle word wrap Toggle overflow ルートディレクトリーをホストに切り替えます。
chroot /host
$ chroot /host
Copy to Clipboard Copied! Toggle word wrap Toggle overflow ローカルボリュームのシンボリックリンクを含むディレクトリーに移動します。
cd /mnt/local-storage/<sc-name>
$ cd /mnt/local-storage/<sc-name>
1 Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
- ローカルボリュームの作成に使用される StorageClass の名前。
削除したデバイスに属するシンボリックリンクを削除します。
rm <symlink>
$ rm <symlink>
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
3.12.6.2. ローカルストレージ Operator のアンインストール リンクのコピーリンクがクリップボードにコピーされました!
ローカルストレージ Operator をアンインストールするには、Operator および local-storage
プロジェクトの作成されたすべてのリソースを削除する必要があります。
ローカルストレージ PV がまだ使用中の状態でローカルストレージ Operator をアンインストールすることは推奨されません。PV は Operator の削除後も残りますが、PV およびローカルストレージリソースを削除せずに Operator がアンインストールされ、再インストールされる場合に予測できない動作が生じる可能性があります。
前提条件
- OpenShift Container Platform Web コンソールへのアクセスが可能です。
手順
プロジェクトのローカルボリュームリソースを削除します。
oc delete localvolume --all --all-namespaces
$ oc delete localvolume --all --all-namespaces
Copy to Clipboard Copied! Toggle word wrap Toggle overflow Web コンソールからローカルストレージ Operator をアンインストールします。
- OpenShift Container Platform Web コンソールにログインします。
-
Operators
Installed Operators に移動します。 - Local Storage をフィルターボックスに入力して、ローカルストレージ Operator を見つけます。
-
Local Storage Operator の末尾にある Options メニュー
をクリックします。
- Uninstall Operator をクリックします。
- 表示されるウィンドウで Remove をクリックします。
ローカルストレージ Operator で作成された PV は削除されるまでクラスターに残ります。これらのボリュームが使用されなくなったら、以下のコマンドを実行してこれらのボリュームを削除します。
oc delete pv <pv-name>
$ oc delete pv <pv-name>
Copy to Clipboard Copied! Toggle word wrap Toggle overflow local-storage
プロジェクトを削除します。oc delete project local-storage
$ oc delete project local-storage
Copy to Clipboard Copied! Toggle word wrap Toggle overflow