一足遅れて Kubernetes を学び始める - 11. config&storage その2 -
ストーリー
- 一足遅れて Kubernetes を学び始める - 01. 環境選択編 -
- 一足遅れて Kubernetes を学び始める - 02. Docker For Mac -
- 一足遅れて Kubernetes を学び始める - 03. Raspberry Pi -
- 一足遅れて Kubernetes を学び始める - 04. kubectl -
- 一足遅れて Kubernetes を学び始める - 05. workloads その 1 -
- 一足遅れて Kubernetes を学び始める - 06. workloads その 2 -
- 一足遅れて Kubernetes を学び始める - 07. workloads その 3 -
- 一足遅れて Kubernetes を学び始める - 08. discovery&LB その 1 -
- 一足遅れて Kubernetes を学び始める - 09. discovery&LB その 2 -
- 一足遅れて Kubernetes を学び始める - 10. config&storage その 1 -
- 一足遅れて Kubernetes を学び始める - 11. config&storage その 2 -
- 一足遅れて Kubernetes を学び始める - 12. リソース制限 -
- 一足遅れて Kubernetes を学び始める - 13. ヘルスチェックとコンテナライフサイクル -
- 一足遅れて Kubernetes を学び始める - 14. スケジューリング -
- 一足遅れて Kubernetes を学び始める - 15. セキュリティ -
- 一足遅れて Kubernetes を学び始める - 16. コンポーネント -
前回
一足遅れて Kubernetes を学び始める - 10. config&storage その 1 -では、config について学習しました。 今回は、storage を学びます。
Volume と PresistentVolume
Volume は、あらかじめ決められた利用可能なボリュームを指します。こちらは、ボリュームの削除や新規作成ができません。 PresistentVolume は、外部にある永続ボリュームを指します。こちらは、ボリュームの削除や新規作成ができます。 DB のようなステートフルなものは PresistentVolume を使います。 一時的なものなら、Volume を使うのですかね?
※ PresistentVolumeClaim は、PresistentVolume をアサインするためのリソース。
Volume の種類
書籍(kubernetes 完全ガイド)で紹介されていた Volume の種類は、下記のとおりです。
- emptyDir
- 一時的なディスク領域を利用
- pod 削除されると、emptyDir も削除
- マウント先を指定できない
- hostPath
- emptyDir のマウント先を指定できる版
- downwardAPI
- Pod の情報をファイルとして配置したファイルをマウント
- projected
- secret/configMap/downwardAPI/serviceAccountToken を1つにまとめたディレクトを作成し、マウント
Volume を残すことができないので、Pod を削除する際は気をつけないとダメですね。 ログをファイルとして保存するなら、一時的に Volume が良いのですかね。 ただ、定期的に外部ストレージに移さないといけないですので、手間です。 (そもそも、ログはストリームにして外部サービスに流すのがベスト)
プロダクトとしては、あんまり使い道ない...?
PresistentVolume の種類
外部の永続ボリュームを利用します。例えば、下記の種類があります。
- GCE Persistent Disk
- AWS Elastic Block Store
- NFS
- iSCSI
- Ceph
- OpenStack Cinder
- GlusterFS
一足遅れて Kubernetes を学び始める - 06. workloads その 2 -では、NFS を使いましたね。 PersistentVolume の作成方法は、外部の永続ボリュームによって違うのですが、共通して言えるところもあるみたいなので、 そこを書いてみます。
- ラベル
- PersistentVolume をラベリングすることで、指定しやすくする
- 容量
- Volume で要求する容量。最も小さい容量からアサインされる。
- アクセスモード
- ReadWriteOnce
- 単一ノードから Read/Write が可能
- ReadOnlyMany
- 複数ノードから Read が可能
- ReadWriteMany
- 複数ノードから Read/Write が可能
- ReadWriteOnce
- Reclaim Policy
- Volume を使い終わったあと、破棄するか再利用するかのポリシー
- Delete
- PersistentVolume の実体を削除
- Retain
- PersistentVolume の実体を残さず保持
- 再度マウントされない
- Recycle
- PersistentVolume のデータを削除し、再利用可能にする
- 再度マウントされる
- (廃止予定で、DynamicProvisioning を利用すること)
- Delete
- Volume を使い終わったあと、破棄するか再利用するかのポリシー
- StorageClass
- 各プロバイザーが提供するストレージの型
- 基本的に自動作成されている
- 各プロバイザーが提供するストレージの型
PersistentVolumeClaim
実際に、PresistentVolume を使うためには、PresistentVolumeClaim で要求を出す必要があります。 必要な項目は、下記です。
- ラベルセレクタ
- ラベルでフィルタリング
- 容量
- 求めている容量
- アクセスモード
- PresistentVolume のアクセスモードを参照
- StorageClass
- PresistentVolume の StorageClass を参照
要求を満たした Volume が RetainPolicy だった場合、Claim を削除した時点で「Released」になります。
最後に
今回は、書籍をそのまま書いた感じになりました。 実際に試したのは、一足遅れて Kubernetes を学び始める - 06. workloads その 2 -です。 まあ、あんまり深くはハマらない方が良いのではと思いました。 次回は、こちらです。
シェアしよう
関連するタグ
- Cloud Native Days Tokyo 2019 -2019年7月22-23日参加レポート
- 一足遅れて Kubernetes を学び始める - 16. コンポーネント -
- 一足遅れて Kubernetes を学び始める - 15. セキュリティ -
- 一足遅れて Kubernetes を学び始める - 14. スケジューリング -
- 【大阪・梅田】Kubernetes Meetup Tokyo 19 大阪サテライト- 2019年5月31日参加レポート
- 一足遅れて Kubernetes を学び始める - 13. ヘルスチェックとコンテナライフサイクル -
- 一足遅れて Kubernetes を学び始める - 12. リソース制限 -
- 一足遅れて Kubernetes を学び始める - 10. config&storage その1 -
- 【大阪】BMXUG勉強会 -Kubernates体験&Watson Discovery入門- 2019年3月27日参加レポート
- 一足遅れて Kubernetes を学び始める - 09. discovery&LB その2 -
- 一足遅れて Kubernetes を学び始める - 08. discovery&LB その1 -
- 一足遅れて Kubernetes を学び始める - 07. workloads その3 -
- 一足遅れて Kubernetes を学び始める - 06. workloads その2 -
- 一足遅れて Kubernetes を学び始める - 05. workloads その1 -
- 一足遅れて Kubernetes を学び始める - 04. kubectl -
- 一足遅れて Kubernetes を学び始める - 03. Raspberry Pi -
- 一足遅れて Kubernetes を学び始める - 02. Docker For Mac -
- 一足遅れて Kubernetes を学び始める - 01. 環境選択編 -