概要

例えば、secretを変更した時にPodへ反映させたいというときなどに、KubernetesでPodを再作成したいということがあります。

ここでは、Podを再作成する方法について紹介します。

環境

  • kubernetes 1.17
  • kubectl 1.17

Podの再作成方法

Podを再作成する方法として簡単なのは、kubectl applyなどで新しい設定でPodを作成するという方法です。

しかし、secretを変更しただけで、kubectl applyを実行しても、Podのファイルを変更していなければ変更なしと判断されて、何も起きません。

そこで、applyを使うのではなく、replaceを使って次のように実行します。

$ kubectl replace --force -f xxx.yml

replaceに--forceをつけることで、強制的にPodの再作成をすることができます。

また、これ以外にもPodを手動で削除して、Deploymentなどの機能による作成によって、新しいsecretなどの設定を反映させるという方法もあります。

その場合では、最初に次のコマンドでPod名を把握します。

$ kubectl get pods

次に、Pod名を指定してPodを削除します

$ kubectl delete pod Pod名

あとは、Deploymentなどの機能で、自動でPodが再作成されます。再作成されたPodは設定が反映されています。

さいごに

正直、Podの再作成は少し面倒です。

secretなどに設定を書き込み、それをPodで使用するというのはそれほど珍しくないと思うのですが、どうなのでしょうか。

もっと他にいい方法がありそうですが、調べても見つからないので、とりあえずこの方法でやっています。