为什么缩减部署似乎总是会删除最新的 Pod?

2023-12-22

(在开始之前,我在 Windows 10 上使用 minikube v27。)

我已经使用 nginx 'hello world' 容器创建了一个部署,所需计数为 2:

实际上,我进入了“2 小时”的旧 pod,并将 index.html 文件从欢迎消息编辑为“损坏”——我想使用 k8s 来看看如果一个 pod 出现“故障”会是什么样子。

如果我将此部署扩展到更多实例,然后再次缩小,我几乎期望 k8s 删除最旧的 pod,但它始终删除最新的 pod:

如何让它首先删除最旧的 pod?

(理想情况下,如果可能的话,我希望能够说“将所有内容重新部署为滚动部署中完全相同的版本/图像/所需计数”)


Pod 删除首选项基于一系列有序检查,在此处的代码中定义:

https://github.com/kubernetes/kubernetes/blob/release-1.11/pkg/controller/controller_utils.go#L737 https://github.com/kubernetes/kubernetes/blob/release-1.11/pkg/controller/controller_utils.go#L737

总结一下-优先删除pod:

  • 未分配给节点与分配给节点
  • 处于挂起或未运行状态与正在运行状态
  • 未准备好与准备好
  • 处于就绪状态的时间更少
  • 具有更高的重启次数
  • 有较新和较旧的创建时间

这些检查不能直接配置。

根据规则,如果您可以使旧 pod 未准备好,或导致旧 pod 重新启动,则它将在已准备好且尚未重新启动的新 pod 之前在缩减时间被删除。

关于控制删除优先级的能力的用例进行了讨论,其中主要涉及作业和服务混合的工作负载,如下:

https://github.com/kubernetes/kubernetes/issues/45509 https://github.com/kubernetes/kubernetes/issues/45509

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

为什么缩减部署似乎总是会删除最新的 Pod? 的相关文章

随机推荐