imagePullPolicy:always behavior change?

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.

2 Likes