KubernetesのPod削除ライフサイクルについて確認してみた

概要

kubernetesにはローリングアップデートの仕組みが組み込まれているので、
ちょっと設定追加しておけば基本的にはサービスが途切れることはありません。
ただ、処理中のリクエストがどうなってしまうのか気になったので確認しました。

作業中はこちらの記事を参考にさせて頂きました。

詳細

ぶっちゃけここを見れば 私が話す事は無いのですが自分の備忘的に和訳しておこうと思います。

Podの削除ライフサイクルは以下のステップで構成されます。

1. Podの状態を"Terminating"に設定
2. preHookを(設定されていれば)実行
3. podにSIGTERMを送る
4. grace periodに設定された時間(sec)だけ待つ
5. podにSIGKILLが送る
  • preHookについてはここ
  • grace periodというのはterminationGracePeriodSecondsというキーの値として格納されています。 ここみたいに探すとサンプルがいっぱいあります。

ここから妄想なのですが、Podの状態がTerminatingに設定されたらserviceから外されるから、 処理中のリクエストはgrace periodの時間内に完了させてね。という感じですね。

これも妄想ですが、kubernetes側でPodのプロセスの状態は見ているみたいで、 grace periodを非常に長く設定しても、プロセスが終了すればその時点でPodは削除されるみたいです。

ちょっとした事ですが、なんかすっきりしたので良かったです。