7.3. ボリュームの使用によるコンテナーデータの永続化
コンテナー内のファイルは一時的なものです。そのため、コンテナーがクラッシュしたり停止したりした場合は、データが失われます。ボリューム を使用すると、Pod 内のコンテナーが使用しているデータを永続化できます。ボリュームはディレクトリーであり、Pod 内のコンテナーからアクセスすることができます。ここでは、データが Pod の有効期間中保存されます。
7.3.1. ボリュームについて リンクのコピーリンクがクリップボードにコピーされました!
ボリュームとは Pod およびコンテナーで利用可能なマウントされたファイルシステムのことであり、これらは数多くのホストのローカルまたはネットワーク割り当てストレージのエンドポイントでサポートされる場合があります。コンテナーはデフォルトで永続性がある訳ではなく、それらのコンテンツは再起動時にクリアされます。
					ボリュームのファイルシステムにエラーが含まれないようにし、かつエラーが存在する場合はそれを修復するために、OpenShift Container Platform は mount ユーティリティーの前に fsck ユーティリティーを起動します。これはボリュームを追加するか、既存ボリュームを更新する際に実行されます。
				
					最も単純なボリュームタイプは emptyDir です。これは、単一マシンの一時的なディレクトリーです。管理者はユーザーによる Pod に自動的に割り当てられる永続ボリュームの要求を許可することもできます。
				
						emptyDir ボリュームストレージは、FSGroup パラメーターがクラスター管理者によって有効にされている場合は Pod の FSGroup に基づいてクォータで制限できます。
					
7.3.2. OpenShift Container Platform CLI によるボリュームの操作 リンクのコピーリンクがクリップボードにコピーされました!
					CLI コマンド oc set volume を使用して、レプリケーションコントローラーやデプロイメント設定などの Pod テンプレートを持つオブジェクトのボリュームおよびボリュームマウントを追加し、削除することができます。また、Pod または Pod テンプレートを持つオブジェクトのボリュームをリスト表示することもできます。
				
					oc set volume コマンドは以下の一般的な構文を使用します。
				
oc set volume <object_selection> <operation> <mandatory_parameters> <options>
$ oc set volume <object_selection> <operation> <mandatory_parameters> <options>
- オブジェクトの選択
 - 
								
oc set volumeコマンドのobject_selectionパラメーターには、次のいずれかを指定します。 
| 構文 | 説明 | 例 | 
|---|---|---|
|   
									  |   
									タイプ   |   
									  | 
|   
									  |   
									タイプ   |   
									  | 
|   
									  |   
									所定のラベルセレクターに一致するタイプ   |   
									  | 
|   
									  |   
									タイプ   |   
									  | 
|   
									  |   リソースを編集するために使用するファイル名、ディレクトリー、または URL です。  |   
									  | 
- 操作
 - 
								
oc set volumeコマンドのoperationパラメーターに--addまたは--removeを指定します。 - 必須パラメーター
 - いずれの必須パラメーターも選択された操作に固有のものであり、これらは後のセクションで説明します。
 - オプション
 - いずれのオプションも選択された操作に固有のものであり、これらは後のセクションで説明します。
 
7.3.3. Pod のボリュームとボリュームマウントのリスト表示 リンクのコピーリンクがクリップボードにコピーされました!
Pod または Pod テンプレートのボリュームおよびボリュームマウントをリスト表示することができます。
手順
ボリュームをリスト表示するには、以下の手順を実行します。
oc set volume <object_type>/<name> [options]
$ oc set volume <object_type>/<name> [options]
ボリュームのサポートされているオプションをリスト表示します。
| オプション | 説明 | デフォルト | 
|---|---|---|
|   
									  |   ボリュームの名前。  | |
|   
									  |   
									名前でコンテナーを選択します。すべての文字に一致するワイルドカード   |   
									  | 
以下に例を示します。
Pod p1 のすべてのボリュームをリスト表示するには、以下を実行します。
oc set volume pod/p1
$ oc set volume pod/p1Copy to Clipboard Copied! Toggle word wrap Toggle overflow すべてのデプロイメント設定で定義されるボリューム v1 をリスト表示するには、以下の手順を実行します。
oc set volume dc --all --name=v1
$ oc set volume dc --all --name=v1Copy to Clipboard Copied! Toggle word wrap Toggle overflow 
7.3.4. Pod へのボリュームの追加 リンクのコピーリンクがクリップボードにコピーされました!
Pod にボリュームとボリュームマウントを追加することができます。
手順
ボリューム、ボリュームマウントまたはそれらの両方を Pod テンプレートに追加するには、以下を実行します。
oc set volume <object_type>/<name> --add [options]
$ oc set volume <object_type>/<name> --add [options]
| オプション | 説明 | デフォルト | 
|---|---|---|
|   
									  |   ボリュームの名前。  |   指定がない場合は、自動的に生成されます。  | 
|   
									  |   
									ボリュームソースの名前。サポートされる値は   |   
									  | 
|   
									  |   
									名前でコンテナーを選択します。すべての文字に一致するワイルドカード   |   
									  | 
|   
									  |   
									選択されたコンテナー内のマウントパス。コンテナーのルート (  | |
|   
									  |   
									ホストパス。  | |
|   
									  |   
									シークレットの名前。  | |
|   
									  |   
									configmap の名前。  | |
|   
									  |   
									永続ボリューム要求の名前。  | |
|   
									  |   
									JSON 文字列としてのボリュームソースの詳細。必要なボリュームソースが   | |
|   
									  |   
									サーバー上で更新せずに変更したオブジェクトを表示します。サポートされる値は   | |
|   
									  |   指定されたバージョンで変更されたオブジェクトを出力します。  |   
									  | 
以下に例を示します。
新規ボリュームソース emptyDir を registry
DeploymentConfigオブジェクトに追加するには、以下を実行します。oc set volume dc/registry --add
$ oc set volume dc/registry --addCopy to Clipboard Copied! Toggle word wrap Toggle overflow ヒントあるいは、以下の YAML を適用してボリュームを追加できます。
例7.1 ボリュームを追加したデプロイメント設定の例
Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
 - ボリュームソース emptyDir を追加します。
 
レプリケーションコントローラー r1 のシークレット secret1 を使用してボリューム v1 を追加し、コンテナー内の /data でマウントするには、以下を実行します。
oc set volume rc/r1 --add --name=v1 --type=secret --secret-name='secret1' --mount-path=/data
$ oc set volume rc/r1 --add --name=v1 --type=secret --secret-name='secret1' --mount-path=/dataCopy to Clipboard Copied! Toggle word wrap Toggle overflow ヒント要求名 pvc1 を使用して既存の永続ボリューム v1 をディスク上のデプロイメント設定 dc.json に追加し、ボリュームをコンテナー c1 の /data にマウントし、サーバー上で
DeploymentConfigオブジェクトを更新します。oc set volume -f dc.json --add --name=v1 --type=persistentVolumeClaim \ --claim-name=pvc1 --mount-path=/data --containers=c1
$ oc set volume -f dc.json --add --name=v1 --type=persistentVolumeClaim \ --claim-name=pvc1 --mount-path=/data --containers=c1Copy to Clipboard Copied! Toggle word wrap Toggle overflow ヒントすべてのレプリケーションコントローラー向けにリビジョン 5125c45f9f563 を使い、Git リポジトリー https://github.com/namespace1/project1 に基づいてボリューム v1 を追加するには、以下の手順を実行します。
oc set volume rc --all --add --name=v1 \ --source='{"gitRepo": {$ oc set volume rc --all --add --name=v1 \ --source='{"gitRepo": { "repository": "https://github.com/namespace1/project1", "revision": "5125c45f9f563" }}'Copy to Clipboard Copied! Toggle word wrap Toggle overflow 
7.3.5. Pod 内のボリュームとボリュームマウントの更新 リンクのコピーリンクがクリップボードにコピーされました!
Pod 内のボリュームとボリュームマウントを変更することができます。
手順
						--overwrite オプションを使用して、既存のボリュームを更新します。
					
oc set volume <object_type>/<name> --add --overwrite [options]
$ oc set volume <object_type>/<name> --add --overwrite [options]
以下に例を示します。
レプリケーションコントローラー r1 の既存ボリューム v1 を既存の永続ボリューム要求 pvc1 に置き換えるには、以下の手順を実行します。
oc set volume rc/r1 --add --overwrite --name=v1 --type=persistentVolumeClaim --claim-name=pvc1
$ oc set volume rc/r1 --add --overwrite --name=v1 --type=persistentVolumeClaim --claim-name=pvc1Copy to Clipboard Copied! Toggle word wrap Toggle overflow ヒントまたは、以下の YAML を適用してボリュームを置き換えることもできます。
例7.4
pvc1という名前の永続ボリューム要求を持つレプリケーションコントローラーの例Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
 - 永続ボリューム要求を
pvc1に設定します。 
DeploymentConfigオブジェクトの d1 のマウントポイントを、ボリューム v1 の /opt に変更するには、以下を実行します。oc set volume dc/d1 --add --overwrite --name=v1 --mount-path=/opt
$ oc set volume dc/d1 --add --overwrite --name=v1 --mount-path=/optCopy to Clipboard Copied! Toggle word wrap Toggle overflow ヒントまたは、以下の YAML を適用してマウントポイントを変更できます。
例7.5 マウントポイントが
optに設定されたデプロイメント設定の例Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
 - マウントポイントを
/optに設定します。 
7.3.6. Pod からのボリュームおよびボリュームマウントの削除 リンクのコピーリンクがクリップボードにコピーされました!
Pod からボリュームまたはボリュームマウントを削除することができます。
手順
Pod テンプレートからボリュームを削除するには、以下を実行します。
oc set volume <object_type>/<name> --remove [options]
$ oc set volume <object_type>/<name> --remove [options]
| オプション | 説明 | デフォルト | 
|---|---|---|
|   
									  |   ボリュームの名前。  | |
|   
									  |   
									名前でコンテナーを選択します。すべての文字に一致するワイルドカード   |   
									  | 
|   
									  |   複数のボリュームを 1 度に削除することを示します。  | |
|   
									  |   
									サーバー上で更新せずに変更したオブジェクトを表示します。サポートされる値は   | |
|   
									  |   指定されたバージョンで変更されたオブジェクトを出力します。  |   
									  | 
以下に例を示します。
DeploymentConfigオブジェクトの d1 からボリューム v1 を削除するには、以下を実行します。oc set volume dc/d1 --remove --name=v1
$ oc set volume dc/d1 --remove --name=v1Copy to Clipboard Copied! Toggle word wrap Toggle overflow DeploymentConfigオブジェクトの d1 の c1 のコンテナーからボリューム v1 をアンマウントし、d1 のコンテナーで参照されていない場合にボリューム v1 を削除するには、以下の手順を実行します。oc set volume dc/d1 --remove --name=v1 --containers=c1
$ oc set volume dc/d1 --remove --name=v1 --containers=c1Copy to Clipboard Copied! Toggle word wrap Toggle overflow レプリケーションコントローラー r1 のすべてのボリュームを削除するには、以下の手順を実行します。
oc set volume rc/r1 --remove --confirm
$ oc set volume rc/r1 --remove --confirmCopy to Clipboard Copied! Toggle word wrap Toggle overflow 
7.3.7. Pod 内での複数の用途のためのボリュームの設定 リンクのコピーリンクがクリップボードにコピーされました!
					ボリュームを、単一 Pod で複数の使用目的のためにボリュームを共有するように設定できます。この場合、volumeMounts.subPath プロパティーを使用し、ボリュームのルートの代わりにボリューム内に subPath 値を指定します。
				
						既存のスケジュールされた Pod に subPath パラメーターを追加することはできません。
					
手順
ボリューム内のファイルのリストを表示するには、
oc rshコマンドを実行します。oc rsh <pod>
$ oc rsh <pod>Copy to Clipboard Copied! Toggle word wrap Toggle overflow 出力例
ls /path/to/volume/subpath/mount
sh-4.2$ ls /path/to/volume/subpath/mount example_file1 example_file2 example_file3Copy to Clipboard Copied! Toggle word wrap Toggle overflow subPathを指定します。subPathパラメーターを含むPod仕様の例Copy to Clipboard Copied! Toggle word wrap Toggle overflow