4.6. FlexVolume を使用した永続ストレージ
FlexVolume は非推奨の機能です。非推奨の機能は依然として OpenShift Container Platform に含まれており、引き続きサポートされますが、本製品の今後のリリースで削除されるため、新規デプロイメントでの使用は推奨されません。
OpenShift Container Platform でボリュームドライバーを作成するには、out-of-tree Container Storage Interface (CSI) ドライバーが推奨されます。FlexVolume ドライバーのメンテナーは、CSI ドライバーを実装し、FlexVolume のユーザーを CSI に移行する必要があります。FlexVolume のユーザーは、ワークロードを CSI ドライバーに移行する必要があります。
OpenShift Container Platform で非推奨となったか、削除された主な機能の最新リストは、OpenShift Container Platform リリースノートの 非推奨および削除された機能 セクションを参照してください。
OpenShift Container Platform は、ドライバーとのインターフェイスに実行可能なモデルを使用する out-of-tree 形式のプラグイン、FlexVolume をサポートします。
組み込みプラグインがないバックエンドのストレージを使用する場合は、FlexVolume ドライバーを使用して OpenShift Container Platform を拡張し、アプリケーションに永続ストレージを提供できます。
				Pod は、flexvolume の in-tree 形式のプラグインを使用して FlexVolume ドライバーと対話します。
			
4.6.1. FlexVolume ドライバーについて リンクのコピーリンクがクリップボードにコピーされました!
					FlexVolume ドライバーは、クラスター内のすべてのノードの明確に定義されたディレクトリーに格納されている実行可能ファイルです。OpenShift Container Platform は、flexVolume をソースとする PersistentVolume オブジェクトによって表されるボリュームのマウントまたはアンマウントが必要になるたびに、FlexVolume ドライバーを呼び出します。
				
OpenShift Container Platform では、FlexVolume について割り当ておよび割り当て解除の操作はサポートされません。
4.6.2. FlexVolume ドライバーの例 リンクのコピーリンクがクリップボードにコピーされました!
FlexVolume ドライバーの最初のコマンドライン引数は常に操作名です。その他のパラメーターは操作ごとに異なります。ほとんどの操作は、JSON (JavaScript Object Notation) 文字列をパラメーターとして取ります。このパラメーターは完全な JSON 文字列であり、JSON データを含むファイルの名前ではありません。
FlexVolume ドライバーには以下が含まれます。
- 
							すべての 
flexVolume.options。 - 
							
kubernetes.io/という接頭辞が付いたflexVolumeのいくつかのオプション。たとえば、fsTypeやreadwriteなどです。 - 
							
kubernetes.io/secret/という接頭辞が付いた参照先シークレット (指定されている場合) の内容。 
FlexVolume ドライバーの JSON 入力例
OpenShift Container Platform は、ドライバーの標準出力に JSON データが含まれていると想定します。指定されていない場合、出力には操作の結果が示されます。
FlexVolume ドライバーのデフォルトの出力例
{
	"status": "<Success/Failure/Not supported>",
	"message": "<Reason for success/failure>"
}
{
	"status": "<Success/Failure/Not supported>",
	"message": "<Reason for success/failure>"
}
					ドライバーの終了コードは、成功の場合は 0、エラーの場合は 1 です。
				
操作はべき等です。すでに割り当てられているボリュームのマウント操作は成功します。
4.6.3. FlexVolume ドライバーのインストール リンクのコピーリンクがクリップボードにコピーされました!
OpenShift Container Platform を拡張するために使用される FlexVolume ドライバーはノードでのみ実行されます。FlexVolume を実装するには、呼び出す操作のリストとインストールパスのみが必要になります。
前提条件
FlexVolume ドライバーは、以下の操作を実装する必要があります。
initドライバーを初期化します。すべてのノードの初期化中に呼び出されます。
- 引数: なし
 - 実行場所: ノード
 - 予期される出力: デフォルトの JSON
 
mountボリュームをディレクトリーにマウントします。これには、デバイスの検出、その後のデバイスのマウントを含む、ボリュームのマウントに必要なあらゆる操作が含まれます。
- 
												引数: 
<mount-dir><json> - 実行場所: ノード
 - 予期される出力: デフォルトの JSON
 
- 
												引数: 
 unmountボリュームをディレクトリーからアンマウントします。これには、アンマウント後にボリュームをクリーンアップするために必要なあらゆる操作が含まれます。
- 
												引数: 
<mount-dir> - 実行場所: ノード
 - 予期される出力: デフォルトの JSON
 
- 
												引数: 
 mountdevice- ボリュームのデバイスを、個々の Pod がマウントをバインドするディレクトリーにマウントします。
 
この呼び出しでは FlexVolume 仕様に指定される "シークレット" を渡しません。ドライバーでシークレットが必要な場合には、この呼び出しを実装しないでください。
- 
							引数: 
<mount-dir><json> - 実行場所: ノード
 予期される出力: デフォルトの JSON
unmountdevice- ボリュームのデバイスをディレクトリーからアンマウントします。
 
- 
							引数: 
<mount-dir> - 実行場所: ノード
 予期される出力: デフォルトの JSON
- 
									その他のすべての操作は、
{"status": "Not supported"}と終了コード1を出して JSON を返します。 
- 
									その他のすべての操作は、
 
手順
FlexVolume ドライバーをインストールします。
- この実行可能ファイルがクラスター内のすべてのノードに存在することを確認します。
 - 
							この実行可能ファイルをボリュームプラグインのパス (
/etc/kubernetes/kubelet-plugins/volume/exec/<vendor>~<driver>/<driver>) に配置します。 
					たとえば、ストレージ foo の FlexVolume ドライバーをインストールするには、実行可能ファイルを /etc/kubernetes/kubelet-plugins/volume/exec/openshift.com~foo/foo に配置します。
				
4.6.4. FlexVolume ドライバーを使用したストレージの使用 リンクのコピーリンクがクリップボードにコピーされました!
					OpenShift Container Platform の各 PersistentVolume オブジェクトは、ストレージバックエンドの 1 つのストレージアセット (ボリュームなど) を表します。
				
手順
- 
							インストールされているストレージを参照するには、
PersistentVolumeオブジェクトを使用します。 
FlexVolume ドライバーを使用した永続ボリュームのオブジェクト定義例
- 1
 - ボリュームの名前。これは永続ボリューム要求を使用するか、Pod からボリュームを識別するために使用されます。この名前は、バックエンドストレージのボリューム名とは異なるものにすることができます。
 - 2
 - このボリュームに割り当てられるストレージの量。
 - 3
 - ドライバーの名前。このフィールドは必須です。
 - 4
 - ボリュームに存在するオプションのファイルシステム。このフィールドはオプションです。
 - 5
 - シークレットへの参照。このシークレットのキーと値は、起動時に FlexVolume ドライバーに渡されます。このフィールドはオプションです。
 - 6
 - 読み取り専用のフラグ。このフィールドはオプションです。
 - 7
 - FlexVolume ドライバーの追加オプション。
optionsフィールドでユーザーが指定するフラグに加え、以下のフラグも実行可能ファイルに渡されます。"fsType":"<FS type>", "readwrite":"<rw>", "secret/key1":"<secret1>" ... "secret/keyN":"<secretN>"
"fsType":"<FS type>", "readwrite":"<rw>", "secret/key1":"<secret1>" ... "secret/keyN":"<secretN>"Copy to Clipboard Copied! Toggle word wrap Toggle overflow  
シークレットは、呼び出しのマウント/マウント解除を目的とする場合にのみ渡されます。