gpt4 book ai didi

kubernetes - 为什么缩减部署似乎总是删除最新的 pod?

转载 作者:行者123 更新时间:2023-12-03 18:52:26 25 4
gpt4 key购买 nike

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

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

pods before scaling up

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

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

pods after scaling down

如何让它先删除最旧的 Pod?

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

最佳答案

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

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

总结 - 优先删除 pod:

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

  • 这些检查不能直接配置。

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

    有关于控制删除优先级能力的用例的讨论,这些用例主要涉及混合作业和服务的工作负载,这里:

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

    关于kubernetes - 为什么缩减部署似乎总是删除最新的 pod?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51467314/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com