(在开始之前,我在 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(使用前将#替换为@)