当前位置: 首页 > 知识库问答 >
问题:

为什么imagePullPolicy不能在Kubernetes中更改为“总是”以外的

禄星腾
2023-03-14

我设置了一个 kubernetes 集群,我想使用本地映像。我已经配置了.yaml文件,以便它包含(在容器中 -

spec:
      containers:
      - image: <name>:<version>
        name: <name>
        imagePullPolicy: Never
        resources: {}
      restartPolicy: Always

我已将此服务部署到kubernetes,但无法提取图像(获取ImagePullBackOff-使用kubectl获取pod查看pod时出错),因为无法从internet/registry中找到图像,并且由于某些未知原因,ImagePull策略处于始终值。这可以从/var/log/messages from text中看到:

"spec":{"containers":[{"image":"<name>","imagePullPolicy":"Always","name":"<name>","

所以我的问题是:为什么在我的. yaml文件(当然已经被使用)中,我已经将ImagePullPolicy设置为“从不”,但这个image ePullPolicy却在“始终值”中?ImagePullPolicy是否有一些默认值运行在. yaml文件中描述的值上?

我的环境是 Centos7,我使用的是 Kontena Pharos 2.2.0(例如使用 Docker 1.13.1(阿帕奇许可证 2.0)和 kubernetes 1.13.2(阿帕奇许可证 2.0))。

我预计当我在 .yaml 文件中设置“图像取消策略:从不”时,该值现在应该为“从不”(而不是“始终”)。

非常感谢您的帮助!

共有1个答案

何向荣
2023-03-14

欢迎来到堆栈溢出。

之所以会发生这种情况,是因为您的Kubernetes集群可能已在api服务器中启用了名为“AlwaysBullimages”的准入控制插件,该插件的作用是在将对象存储在Kubernete数据存储-etcd中之前覆盖(变异)对象。

这是自v2.0.0-alpha.2版以来使用Kontena Pharos引导的集群的默认行为。

您可以在主cluster.yml配置文件中禁用此准入插件:

...
addons:
  ingress-nginx:
    enabled: true

admission_plugins:
  - name: AlwaysPullImages
    enabled: false
... 

如果在本地注册表中找不到映像,您应该会看到PODs由于不同的状态原因而失败:

client-deployment-99699599d-lfqmr    0/1     ErrImageNeverPull   0          42s

请在此处阅读有关使用准入控制器的更多信息

 类似资料:
  • 在Kubernetes文档中,它提到使用的缓存语义使得ImagePullPolicy非常高效。我想选择不同的ImagePullPolicy的原因是什么?

  • 我正在迭代Java 7循环和Java 8 循环中的列表。Java 8 循环希望其中的变量不会更改。例如: 有人能解释一下为什么吗?是Java 8的弊端吗?

  • 代码B是一个定制的回收视图apater,带有单选按钮。 mCustomAdapter 在 Code A 中的 fun methodA() 和 fun methodB() 中都发生了变化,因此 的引用也发生了变化,这意味着 val 属性 mySelectedIndex 从不同的地址获取值。 在我看来,val属性不能更改,为什么应用程序不会导致错误? 代码A 代码B 被改进的 我觉得代码DD和代码EE

  • 我有一个包含复杂条目的数组列表的结构,我想将它们转换为浮点数。虚部可以丢弃,这很好。 我想知道,为什么这不起作用,而另一方面,在创建列表“数组”之前将类型更改为float会起作用。 这是一个非常基本的问题,但如果有人能分享他或她的想法,我将非常高兴。 感谢提前:)

  • 问题内容: 我知道ES6尚未标准化,但是目前许多浏览器都支持 JS中的关键字。 规范中写道: 常量的值不能通过重新分配而更改,并且常量也不能重新声明。因此,尽管可以在不初始化的情况下声明常量,但这样做是没有用的。 当我做这样的事情: 我看到一切正常仍和是。 但是,如果这样做,我的常量数组已更改。现在是这样,顺便说一句,我仍然无法用更改它。 我这是一个错误,还是我错过了什么?我在最新的chrome和

  • 问题内容: 我阅读并发现在 System类下有一些函数作为getproperties,我们可以在其中检索属性,然后也可以使用setProperties()对其进行设置。 但是我得到的答案是它不会工作。我自己还没有尝试过,但是,我正在接听电话。 只是为了澄清一下,如果这些setProperty()和getProperty()方法无法在运行时更改它们,为什么会存在它们。还是仅特定于classpath属