I’ve been reading about the Kubernetes imagePullPolicy attribute when set to ‘always’, and it seems like something has changed:
Up through version 1.21 of the documentation, the documentation said the following:
If you would like to always force a pull, you can do one of the following:
- set the imagePullPolicy of the container to Always.
- omit the imagePullPolicy and use :latest as the tag for the image to use; Kubernetes will set the policy to Always.
- omit the imagePullPolicy and the tag for the image to use.
- enable the AlwaysPullImages admission controller.
But starting with version 1.22 of the K8S documentation, it says imagePullPolicy works as follows when set to always:
Every time the kubelet launches a container, the kubelet queries the container image registry to resolve the name to an image digest. If the kubelet has a container image with that exact digest cached locally, the kubelet uses its cached image; otherwise, the kubelet pulls the image with the resolved digest, and uses that image to launch the container.
These are very different explanations: <= 1.21, it says that ‘always’ forces the image to always be pulled from the registry. But >=1.22, it says ‘always’ simply forces a digest check against the registry, but the kubelet will use a cached copy if nothing changed.
I’m trying to understand if the behavior actually changed starting in 1.22, or was this simply a change to the explanation and documentation? I can’t find any notice of this in a changelog, yet it seems like change to me.