【问题标题】:How can I make Kubernetes do an image pull every time a container restarts?每次容器重启时,如何让 Kubernetes 进行一次镜像拉取?
【发布时间】:2021-05-29 05:31:00
【问题描述】:

Kubernetes 似乎只在创建 pod 时拉取镜像,如何让它在容器本身退出时重新拉取最新的镜像?

我想要与kubectl rollout restart deployment 相同的效果,但在容器退出时。例如,如果容器是一个 shell 脚本,并且它执行exit 1,则 Kubernetes 应该在重新启动之前从注册表中拉取最新的镜像。

如果重要的话,我的部署只有 1 个容器。

【问题讨论】:

标签: kubernetes


【解决方案1】:

您可以使用imagePullPolicy,更多信息请阅读here

以下是一个示例供您参考:

apiVersion: v1
kind: Pod
metadata:
  name: pod-nginx-container-image-repull
spec:
  containers:
  - name: nginx-alpine-container-1
    image: nginx:alpine
    ports:
      - containerPort: 80
    imagePullPolicy: Always

更新 1:

当您使用restartPolicy: Never 时,这意味着您告诉 Kubernetes 我不希望我的容器在崩溃时重新启动。因此,您会遇到容器“重启”时没有图像重新拉取的情况,因为实际上没有容器重启。

我已经从我的工作区快速复制了一个示例,因此您在我的示例中看到了 restartPolicy: Never,这并不适合您,我已更新上面的示例以将其删除。但我希望你已经理解了它的另一个概念。

另外值得注意的是restartPolicy适用于Pod中的所有容器,而imagePullPolicy可以在Pod中的容器级别设置。

【讨论】:

  • 使用restartPolicy: Never,如果容器死亡并且永远不会创建新的 pod,则 pod 会停留在“已完成”状态。我已经尝试过imagePullPolicy: Always,它只适用于kubectl rollout restart deployment,不适用于容器重启。
  • @throwaway91234 我已经更新了我的答案,如果有任何问题,请查看并告诉我。
猜你喜欢
  • 1970-01-01
  • 2019-10-06
  • 2018-08-21
  • 2016-01-11
  • 1970-01-01
  • 2020-11-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多