Kubernetes 什么';不使用ImagePullPolicy设置为Always的好处是什么?

Kubernetes 什么';不使用ImagePullPolicy设置为Always的好处是什么?,kubernetes,Kubernetes,在中,它提到使用ImagePullPolicy:Always的缓存语义使得ImagePullPolicy非常高效。我选择不同ImagePullPolicy的原因是什么?这在很大程度上取决于您的版本控制/标记策略 创建应用程序的新副本时(因为您的应用程序已放大,或pod已死亡,并被新pod替换),如果您使用ImagePullPolicy:Always,并且您使用同一标记推送了不同版本的应用程序(就像人们使用latest时所做的那样),新创建的副本可能会运行与其他副本完全不同的应用程序版本,从而导致

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

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

创建应用程序的新副本时(因为您的应用程序已放大,或pod已死亡,并被新pod替换),如果您使用
ImagePullPolicy:Always
,并且您使用同一标记推送了不同版本的应用程序(就像人们使用
latest
时所做的那样),新创建的副本可能会运行与其他副本完全不同的应用程序版本,从而导致不一致的行为


您可能还希望在使用时使用与
始终
不同的值。

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

  • 如果您有一个不提供缓存的基础映像提供程序(即您没有使用Docker),那么您可以控制它以确保不会在kubelet每次需要映像时调用它
  • 即使使用Docker缓存,也会稍微快一点,不会每次都尝试提取图像。如果您知道您从不重复使用标记(建议这样做),或者您明确指定图像摘要,那么
    ImagePullPolicy:Always
  • 如果您安装了一个使用单独机制将映像拉到节点上的安装,您可能希望它在出现问题且映像不存在时不要尝试自动获取

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

可能的原因:为了比完全高效:)