真也Tweet連載9回目となる今回は、Config&Storageリソースのうち、PersistentVolumeClaimについて解説する。Config&Storageリソース前回、利用者が直接利用するConfig&Storageリソースは3種類あることを紹介し、そのうちのSecretとConfigMapを解説しました。今回は、残る1種類であるPersistentVolumeClaimについて解説しますが、PersistentVolumeClaimを理解するために必要となるPersistentVolume、Volumeについても取り上げます。Manifestに直接指定することで利用可能にするものです。そのため、利用者が新規でボリュームを作成したり、既存のボリュームを削除したりといった操作を行うことはできません。ManifestからVolumeリソースを作成するといった処理も行いません。一方でPersistentVolumeは、外部の永続ボリュームを提供するシステムと連携して、新規のボリュームの作成や、既存のボリュームの削除などを行うことが可能です。Volumeリソースを別途作成する形になります。PersistentVolumeにもVolumeにも同じプラグインが用意されています。VolumeプラグインとVolumeプラグインの両方が用意されています。Provisioningも可能)ですが、Volumeプラグインの場合はすでにあるVolumeを利用することだけが可能です。PersistentVolumeClaimは、その名のとおり作成されたPersistentVolumeリソースの中からアサインするためのリソースになります。Claimを定義して利用する必要があります。Volumeを動的に作成することが可能なため、順番が逆に感じられるかもしれません。VolumeKubernetesでは、Volumeを抽象化してPodと疎結合なリソースとして定義しています。Volumeプラグインとして、下記のような様々なプラグインが提供されています。下記のリスト以外にもあるので、詳細は「https://kubernetes.io/docs/concepts/storage/volumes/」を確認して下さい。EmptyDirHostPathnfsiscsicephfsGCPPersistentVolumegitRepoPersistentVolumeとは異なり、Podに対して静的に領域を指定するような形になるため、競合などに注意してください。EmptyDirEmptyDirはPod用の一時的なディスク領域として利用可能です。PodがTerminateされると削除されます。Node上の領域をコンテナにマッピングするプラグインです。typeにはDirectory、DirectoryOrCreate、File、Socket、BlockDeviceなどから選択します。DirectoryOrCreateとDirectoryとの差は、ディレクトリが存在しない場合に作成して起動するか否かの違いです。hostpath-sample.ymlPersistentVolume(PV)PersistentVolumeは、永続化領域として確保されるVolumeです。Volumeはリソースとして個別に作成してから利用します。Volumeリソースを作成する必要があります。PersistentVolumeは厳密にはConfig&StorageリソースではなくClusterリソースに分類されますが、今回は説明の都合上この章で説明しています。PersistentVolumeの種類PersistentVolumeは、基本的にネットワーク越しでディスクをアタッチするタイプのディスクとなります。シングルノード時のテスト用としてHostPathが提供されていますが、PersistentVolumeとしては実用的ではありません。PersistentVolumeはPluggableな構造となっており、一例として下記のようなものがあります。下記のリスト以外にもあるので、詳細は「https://kubernetes.io/docs/concepts/storage/persistent-volumes/」を確認して下さい。CinderGlusterFSPersistentVolumeの作成PersistentVolumeを作成する際には、下記のような項目を設定します。pv_sample.yml作成後に確認すると、正常に作成できたためBoundステータスになっていることが確認できます。6s以下、PersistentVolumeの設定項目について解説します。Provisioningを使わずにPersistentVolumeを作成していく場合、PersistentVolumeの種類がわからなくなってしまうため、type、environment、speedなどのラベルをつけていくことをお勧めします。ラベルをつけていない場合、既存のPersistentVolumeの中から自動的に割り当てを行う必要が生じるため、ユーザの意志によるディスクのアタッチが困難になります。一方でラベルをつけておくと、PersistentVolumeClaimでボリュームのラベルを指定できるで、スケジューリングを柔軟に行えます。Provisioningが利用できない環境では、小さめのPersistentVolumeも用意することです。Volumeの中から最も近い容量である10GBのものが割り当てられることになります。PersistentVolumeClaimとPersistentVolumeの実際の容量の相違アクセスモードアクセスモードは3つ存在しています。複数ノードからRead/WriteされますPersistentVolumeによって、サポートしているアクセスモードは異なります。GCP、AWS、OpenStackで提供されるブロックストレージサービスでは、ReadWriteOnceのみサポートされています。詳細は、https://kubernetes.io/docs/concepts/storage/persistent-volumes/を確認して下さい。Policyは、PersistentVolumeを利用し終わった後の処理方法(破棄するか、再利用するかなど)を制御するポリシーです。./*)し、再利用可能時な状態にします他のPersistentVolumeClaimによって再度マウントされます。DeletePersistentVolumeが削除されますGCE、AWS、OpenStackなどで確保される外部ボリュームの際に利用されますマウントオプションPersistentVolumeの種別によっては、追加でマウントオプションを指定することが可能です。Volumeの仕様を確認して下さい。Provisioningの場合にユーザがPersistentVolumeClaimを使ってPersistentVolumeを要求する際に、どういったディスクが欲しいのかを指定するために利用されます。Classの選択=外部ボリュームの種別選択となります。Cinderの場合には、ボリュームを切り出す際に、どのバックエンド(Ceph、ScaleIO、Xtremioなど)か、どのゾーンかなどを選択可能です。Pluginごとに異なります。Pluginを利用した場合には利用されません。ITの連載記事『今こそ始めよう!Kubernetes入門』の内容を元に、大幅加筆して書籍化したものです。Kubernetesを触ったことがない方でも、そのコンセプトを理解し、実際にアプリケーションをコンテナ化して実行できるようになることを目標にしています。Agency2016年入社。OpenStackを使ったプライベートクラウドやGKE互換なコンテナプラットフォームをゼロから構築し、国内カンファレンスでのKeynoteに登壇。Administratorの認定資格を取得。Daysの運営などコミュニティ活動にも従事している。第9回KubernetesのConfig&Storageリソース(その2)2018/6/6連載9回目となる今回は、Config&Storageリソースのうち、PersistentVolumeClaimについて解説する。第8回KubernetesのConfig&Storageリソース(その1)2018/5/31今回と次回の2回に渡って、5種類に大別されるKubernetesのリソースのうち、Config&Storageリソースを解説する。第7回KubernetesのDiscovery&LBリソース(その2)2018/5/16前回に引き続き、Discovery&LBリソースのServiceとIngressを紹介する。ITでは、より付加価値の高いコンテンツを会員サービスとして提供しています。ITのWebサイトにログインすることでさまざまな限定特典を入手できるようになります。Americaサンディエゴで開催。VeloCloudが選ばれる理由SD-WANとはなにか。Linuxエンジニア育成への思いF5とNGINXの組み合わせで、サービス公開をよりセキュアに。ITがお届けするポッドキャストです。