不使用设置为“始终”的 ImagePullPolicy 有什么好处?

chr*_*non 6 kubernetes

Kubernetes 文档中提到使用的缓存语义ImagePullPolicy: Always使得 ImagePullPolicy 非常高效。我想选择不同的 ImagePullPolicy 的原因是什么?

Jos*_*sto 6

这在很大程度上取决于您的版本控制/标记策略。

当创建应用程序的新副本时(因为您的应用程序已扩大规模,或者 Pod 已失效并被新的 Pod 取代),如果您使用并ImagePullPolicy: Always使用相同标签推送了应用程序的不同版本(例如人们在使用latest) 时,新创建的副本可能会运行与其余副本完全不同的应用程序版本,从而导致不一致的行为。

您可能还想使用与在 minikube 等开发环境中不同Always


小智 4

没有太大的缺点ImagePullPolicy: Always,但拥有控制权意味着:

  • 如果您有一个不提供缓存的底层镜像提供程序(即您没有使用 Docker),您可以控制以确保不会在每次 kubelet 需要镜像时调用它
  • 即使使用 Docker 缓存,如果不每次都尝试拉取镜像,速度仍然会稍快一些。如果您知道您从不重复使用标签(推荐)或者您明确指定图像摘要,那么没有任何好处ImagePullPolicy: Always
  • 如果您的安装使用单独的机制将映像拉取到节点上,则您可能希望它在出现问题且映像不存在时不要尝试自动获取。

请注意,在 fiunchinho 的回答中,它提到您可以使用它来保持应用程序的各种副本同步。这将是危险的,因为图像是按节点拉取的,因此您最终可能会在不同节点上运行不同版本的应用程序。