Ritolabo
  1. Home

Job / CronJob: Kubernetes でバッチ処理を実行する

  • Kubernetes
Job / CronJob: Kubernetes でバッチ処理を実行する

nginx のように動き続けるのではなく、1 回やって終わる処理を Kubernetes で動かす。終了するコンテナを Deployment にすると、起動し直され続けて CrashLoopBackOff になる。Job はコンテナが正常終了するまで面倒を見るデータ、CronJob は決まった時刻に Job を作るデータ。kind で作ったローカルクラスタで、正常終了・失敗とやり直し・毎分の実行・古い Job の削除を、実行結果とあわせて確認する。

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

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

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

requests / limits: Kubernetes でコンテナが使う CPU とメモリを決める

  • Kubernetes
requests / limits: Kubernetes でコンテナが使う CPU とメモリを決める

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

Probe: Kubernetes でコンテナが動いているかを確かめる

  • Kubernetes
Probe: Kubernetes でコンテナが動いているかを確かめる

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

Secret: Kubernetes で機密情報を Pod に渡す

  • Kubernetes
Secret: Kubernetes で機密情報を Pod に渡す

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

ConfigMap: Kubernetes で Pod に渡す設定値

  • Kubernetes
ConfigMap: Kubernetes で Pod に渡す設定値

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

Author

rito

rito

  • Backend Engineer
  • Tokyo, Japan
  • PHP 5 技術者認定上級試験 認定者
  • 統計検定 3 級