この章では、Kubernetesは、ストレージリソースを管理する方法について説明します。
まず、ボリュームを学びますし、ボリュームを経由して貯蔵容器のクラスタを提供するために、どのようにKubernetesであり、我々は、ボリュームのいくつかの一般的な種類を練習し、それぞれのシナリオを理解し、そして最後に、我々は永続的なボリュームと永続的なボリュームをKubernetes方法について説明します別のクラスタ管理者とクラスタユーザーの責任、および実践の静的および動的な供給量の供給を主張します。
ボリューム
このセクションでは、ストレージモデルボリュームKubernetesが永続ストレージコンテナのさまざまにマップする方法を学び話し合います。
私たちはしばしば言う:コンテナとポッドが短いです。
含意は、彼らは非常に短いライフサイクルであってもよいし、頻繁に作成および破棄されていることです。ファイル・システム・データ内のコンテナに格納されて破壊された容器は、クリアされたとき。
永続的なデータストレージコンテナのKubernetesボリュームを使用することができます。
ライフサイクルの体積が容器から独立している、容器内のポッドは破壊され、再構築が、ボリュームは保持されてもよいです。
基本的に、Kubernetesボリュームはドッカーボリュームに似ているディレクトリです。ボリュームポッドをマウントする場合は、すべてのコンテナにポッドは、ボリュームにアクセスすることができます。KubernetesボリュームもemptyDir、ホストパス、GCE永続ディスク、を含む複数のバックエンドタイプ、サポート AWS弾性ブロックストア、NFS、セファロなど、参照の完全なリストを https://kubernetes.io/docs/concepts/storage/volumes/#types -of-ボリューム
ボリュームは、さまざまなバックエンドの抽象化、データの読み書きが、それは難しいまだクラウド内のローカルノードのファイルシステムに格納されて最終的に心配する必要はありません、ボリュームデータの使用中に容器を提供します。これは、ボリュームのすべてのタイプのためだけのディレクトリである、です。
私たちは、最も簡単なemptyDir Kubernetesボリュームを学習を開始します。
emptyDir
emptyDirボリュームは、最も基本的なタイプです。その名前が示すように、emptyDirボリュームは、ホスト上の空のディレクトリです。
ポッドがないため、コンテナのemptyDirボリュームは耐久性です。ポッドがノードから削除されると、ボリュームの内容は削除されます。しかし、コンテナは、まだポッド、影響を受けていないボリュームながら、破壊された場合にのみ。
ポッドと一致emptyDirボリュームのライフサイクル:他の言葉で。
すべてのコンテナでのポッドは、独自のマウントパスを割り当てることができ、ボリュームを、共有することができます。次のようにここでは一例として、設定ファイルによって実施することがemptyDir:
ここでは、生産者-消費者のシナリオをシミュレートします。二つの容器とポッド producer
と consumer
その共有ボリューム。producer
ボリュームは、データを書き込むために責任があるconsumer
データをボリュームから読み込まれます。
①底文書は、 volumes
定義され emptyDir
たボリュームの種類 shared-volume
。
② producer
コンテナがします shared-volume
にマウント /producer_dir
ディレクトリ。
③ producer
によって echo
ファイルにデータを書き込むこと hello
で。
④ consumer
コンテナがします shared-volume
にマウント /consumer_dir
ディレクトリ。
⑤ consumer
を通じて cat
ファイル hello
のデータを読み込みます。
ポッドを作成するには、次のコマンドを実行します。
kubectl logs
表示コンテナが consumer
正常に読み込ま producer
書き込まれたデータがemptyDirボリュームを共有する2個のコンテナを検証しています。
emptyDirがドッカーホスト・ファイル・システム・ディレクトリであるため、効果はの実装と同等である docker run -v /producer_dir
と docker run -v /consumer_dir
。することにより docker inspect
、コンテナの構成の詳細を表示し、我々は二つの容器が同じディレクトリをマウントが見つかりました:
ここでは /var/lib/kubelet/pods/3e6100eb-a97a-11e7-8f72-0800274451ad/volumes/kubernetes.io~empty-dir/shared-volume
、ホスト上のemptyDir本当のパスです。
emptyDir一時ディレクトリをホスト上で作成され、便利ポッドで提供することができる利点が貯蔵容器、追加の構成を共有しました。しかし、それはポッドが存在しない場合、emptyDirは無いだろう、持続性を持っていません。この特徴によれば、そのような民生用生産上記実施形態のように、一時的な共有ストレージ・スペース必要なシーンのために特に適した容器にemptyDirポッド。
次のセクションでは、我々はホストパスボリュームを学びます。