Kubernetes will pull upon Pod creation if either (see updating-images doc):
:latest
imagePullPolicy: Always
is specifiedThis is great if you want to always pull. But what if you want to do it on demand: For example, if you want to use some-public-image:latest
but only want to pull a newer version manually when you ask for it. You can currently:
imagePullPolicy
to IfNotPresent
or Never
and pre-pull: Pull manually images on each cluster node so the latest is cached, then do a kubectl rolling-update
or similar to restart Pods (ugly easily broken hack!)imagePullPolicy
, do a kubectl apply
, restart the pod (e.g. kubectl rolling-update
), revert imagePullPolicy
, redo a kubectl apply
(ugly!)some-public-image:latest
to your private repository and do a kubectl rolling-update
(heavy!)No good solution for on-demand pull. If that changes, please comment; I'll update this answer.
One has to group imagePullPolicy
inside the container data instead of inside the spec data. However, I filed an issue about this because I find it odd. Besides, there is no error message.
So, this spec snippet works:
spec:
containers:
- name: myapp
image: myregistry.com/myapp:5c3dda6b
ports:
- containerPort: 80
imagePullPolicy: Always
imagePullSecrets:
- name: myregistry.com-registry-key
There is a comand to directly do that:
Create a new kubectl rollout restart
command that does a rolling restart of a deployment.
The pull request got merged. It is part of the version 1.15
(changelog) or higher.
My hack during development is to change my Deployment manifest to add the latest tag and always pull like so
image: etoews/my-image:latest
imagePullPolicy: Always
Then I delete the pod manually
kubectl delete pod my-app-3498980157-2zxhd
Because it's a Deployment, Kubernetes will automatically recreate the pod and pull the latest image.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With