背景
DockerレジストリにプッシュしたイメージをKubernetesのPodで利用しようとしたが、イメージ内にちょっとしたミスがあったため動かなかった。そのためイメージを修正して、同一バージョンで上書きプッシュした。
これで動くはず!と意気込んでPodを再起動したが、さっきと同じエラーで動かなかった。どうやらミスが解消されていないらしい。かくかくしかじかの調査を経て、どうやらこれはキャッシュの問題でありそうだということが判明した。
どうすればキャッシュを無視して新しいイメージを取得できるか?
結論
imagePullPolicy
をIfNotPresent
にしているとキャッシュを使ってしまうので、キャッシュを手放したいならAlways
にしよう。
具体的には、PodやDeploymentのマニフェスト内で
spec:
containers:
image: 'matoruru/dummyserver:1.0.0'
imagePullPolicy: IfNotPresent
を
spec:
containers:
image: 'matoruru/dummyserver:1.0.0'
imagePullPolicy: Always
にしよう。
反省
そもそも同一バージョンを上書きするなよ(小さいミスかつ自分しか使わないイメージだったので許してほしい)