11月
09
Deployment(を構成する Pod)を再起動しようとして kubectl rollout restart してから kubectl rollout status して完了してるようなので安心してたんですが、後で kubectl get pod したら Age がかなり古いままでした。再起動されてません。
kubectl rollout restart は Deployment 等(StatefulSet や DaemonSet などを含む)の中の Pod template に対して annotation を付けることで Pod の入れ替えを促すわけですが、Deployment 等が operator の管理下にある場合、operator の実装によっては付けた annotation を削除しに来るため、Deployment の controller が Pod を入れ替える前に元の状態に戻ってしまいます。
operator の管理下にあるということはその Deployment を生成する元となったカスタムリソースがあるはずなので、一般論としてはそっち経由で Deployment を間接的にいじるのが全体としては正しいんですが、一時的な再起動操作の痕跡がカスタムリソース側に残ってしまうのもうれしくありません。どうしましょうかね。
なお、最初に書いたケースにおいては、数分ぐらいなら全部落ちてても構わないワークロードだったので、ザックリ全 Pod を delete して再起動させてました。数個なら1個ずつ見ながら手で削除しててもいいかもしれませんが、大規模なクラスタの DaemonSet だと辛そうです。
no comment untill now