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

时间:2019-03-08 14:44:37

标签: kubernetes

Kubernetes documentation中,它提到了使用ImagePullPolicy: Always的缓存语义使ImagePullPolicy非常有效。我为什么要选择其他ImagePullPolicy?

2 个答案:

答案 0 :(得分:1)

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

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

on a development environment like minikube时,您可能还想使用与Always不同的值。

答案 1 :(得分:1)

ImagePullPolicy: Always并没有很多缺点,但是拥有控制权意味着:

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

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