Corredor

ウェブ、プログラミングの勉強メモ。

Kubernetes の Replica 数を減らした時に削除される Pod は「生成日時がより新しい Pod」

普段、Kubernetes の Deployment を使って、一種類の Pod (≒ コンテナ) を複数個作り、冗長稼動させている。

1つの Deployment から作成される Pod の個数は、deployment.yaml 内の spec.replicas プロパティに指定した数値で決まる。replicas: 5 とすれば5個の Pod が作られるし、後で replicas: 3 と変更して kubectl apply すれば、5個稼動している Pod のうち2個の Pod が破棄されて、3個の Pod で稼動するように環境が変更できる。

今回の本題は、ReplicaSet の個数が減らされた時に、どの Pod が破棄されるのか、という点。

結論から言えば、Pod の作成日時が新しいもの (= AGE が若いもの) から優先的に削除される、という仕様になっている。

この仕様の該当コードが以下。

なぜこういう仕様なのか、という疑問や議論は、以下で行われている。

作成日時が古い Pod をできるだけ残そうとするのは、それだけウォームアップができている安定した Pod だと判断できるからだ、ということらしい。

一方で、「ずっと稼動している Pod は、キャッシュを大量に蓄えていたりするから、古い Pod こそ優先的に破棄させた方が綺麗なんじゃないか?」という考え方もあるようだ。

個人的には、うまくキャッシュとかができている古い Pod が残ってくれる動きがデフォルトなのは嬉しい。もしも古い Pod の動きがおかしくなったら kubectl delete pod で破棄してしまえば良いだけだし〜。

分散システムデザインパターン ―コンテナを使ったスケーラブルなサービスの設計

分散システムデザインパターン ―コンテナを使ったスケーラブルなサービスの設計

入門 Kubernetes

入門 Kubernetes

  • 作者: Kelsey Hightower,Brendan Burns,Joe Beda,松浦隼人
  • 出版社/メーカー: オライリージャパン
  • 発売日: 2018/03/22
  • メディア: 単行本(ソフトカバー)
  • この商品を含むブログを見る