kubernetesでconfigmap更新したからとか、何かとpodを一斉にリロードしたいときってありますよね?
そんなときは下記のコマンドが便利です。
kubectl set env deploy/${your_deployment_name} RELOAD_DATE="$(date)"
これだけ
envを書き換えてるだけですが、これで全podリロードされます。ただし kubectl rollout undo
を使えなくなってしまう点だけ注意が必要です。まー当たり前といえば当たり前ですが。あと元々RELOAD_DATE
という環境変数を使ってると上書きされちゃうので別の変数に変えてください。
もし、一気にリロードされるのがいやだって場合はdeploymentに次の設定を入れると良いでしょう。
deployment.yaml
spec:
replicas: 2
strategy:
type: RollingUpdate
rollingUpdate:
maxSurge: 10%
maxUnavailable: 1
type RoolingUpdateにするとすこじづつアップデートするモードになります。
maxSurge
はどれだけの超過podを許すか。
maxUnavailable
は使えなくなるpodの数です。
参考
Force pods to re-pull an image without changing the image tag #33664
Google Container Engineで安定してRolling Updateをさせる設定