Volume: Kubernetes でコンテナのデータを永続化する
- Kubernetes

コンテナの中に書いたファイルは、コンテナが起動し直すと消える。Volume は、コンテナの外にファイルの置き場所を用意する仕組み。kind で作ったローカルクラスタで、Volume なし・emptyDir・PersistentVolumeClaim の 3 つに同じファイルを書き、コンテナの起動し直しと Pod の作り直しでいつ消えるかを、実行結果とあわせて確認する。

コンテナの中に書いたファイルは、コンテナが起動し直すと消える。Volume は、コンテナの外にファイルの置き場所を用意する仕組み。kind で作ったローカルクラスタで、Volume なし・emptyDir・PersistentVolumeClaim の 3 つに同じファイルを書き、コンテナの起動し直しと Pod の作り直しでいつ消えるかを、実行結果とあわせて確認する。

requests / limits は、コンテナが使う CPU とメモリの量を Deployment の YAML に書く設定。kind で作ったローカルクラスタで、書かない Pod は Node に何も予約しないこと、requests が Node の空きを超えると Pending になること、メモリの limits を超えると OOMKilled で止められること、CPU の limits は待たされるだけで止められないことを、実行結果とあわせて確認する。

Probe は、コンテナの中のアプリが動いているかを kubelet に定期的に確かめさせる設定。kind で作ったローカルクラスタで、Probe なしの Pod のアプリを壊しても Running のままであること、readiness probe が失敗すると Service の届け先から外れること、liveness probe が失敗するとコンテナが起動し直されることを、実行結果とあわせて確認する。

Secret は、パスワードのような機密情報をキーと値の組で保存したデータ。kind で作ったローカルクラスタで Secret を作り、kubectl describe では値が表示されないこと、保存されている値は base64 でエンコードされているだけでデコードすれば読めること、Pod が環境変数として受け取れることを、実行結果とあわせて確認する。

ConfigMap は、設定の値をキーと値の組で保存するリソース。kind で作ったローカルクラスタで、ConfigMap の値を Pod の環境変数とファイルの両方に渡し、ConfigMap を書き換えたときに環境変数とファイルで反映のされ方が違うことを、実行結果とあわせて確認する。

Service は、複数の Pod に対する変わらない宛先を定義するリソース。kind で作ったローカルクラスタで、Pod の IP が変わること、Service と EndpointSlice の関係、クラスタの中から Service の名前でアクセスしたときの動き、Pod が入れ替わったときの届け先の更新を、実行結果とあわせて確認する。