【问题标题】:Kubernetes - ReplicaSet vs PodDisruptionBudgetKubernetes - ReplicaSet 与 PodDisruptionBudget
【发布时间】:2021-02-16 15:28:17
【问题描述】:

我想知道 PodDisruptionBudget 有什么附加价值。

据我了解,PodDisruptionBudget 承诺一定数量的节点将始终保留在集群中,同时有 2 个选项可以决定如何选择:minAvailable / maxUnavailable。

现在,当我定义 ReplicaSet 时,我定义了我想要多少个副本。因此,例如,如果我定义 2,则不会少于 2 个副本。那么是什么给了 PodDisruptionBudget 呢?

【问题讨论】:

    标签: kubernetes kubernetes-pod replicaset


    【解决方案1】:

    PodDisruptionBudget 有助于确保 ReplicaSet 无法保证的应用程序的零停机时间。

    following post 举例说明了PodDisruptionBudget 如何有助于实现应用程序的零停机时间:

    引用帖子,节点升级是正常场景,描述如下:

    让我们考虑一个场景,我们需要升级节点的版本或 经常更新规范。集群缩减也是一种正常情况。 在这些情况下,运行在待删除节点上的 Pod 需要 被抽干。

    kubectl drain 在其中一个节点上执行升级:

    我们需要从池中删除 node1,这是我们无法做到的 立即分离,因为这将导致所有 pod 终止 在那里运行可能会导致服务中断。之前的第一步 分离节点就是让节点不被调度。

    运行 kubectl get pods -w 将显示节点上运行的 pod 处于终止状态,从而导致停机:

    如果您使用 kubectl get pods 快速检查 pod,它会 立即终止所有在 node1 上调度的正在运行的 pod .这可能会导致停机!如果您正在运行几个 pod 并且它们都安排在同一个节点上,这需要一些时间 要在其他节点上调度的 pod。

    PodDisruptionBudgetminAvailable 在这种情况下非常有用,可以实现零停机时间。 Replicaset 只会确保 replicas 的 pod 数量为 过程中在其他节点上创建。

    如果您只有一个带有一个副本的 Replicaset 并且没有指定 PodDisruptionBudget,则该 pod 将被终止,并且将在其他节点上创建一个新的 pod。这就是PDBs 比Replicaset 更具优势的地方。

    要使 PodDisruptionBudget 工作,必须至少有 2 个 pod 运行标签选择器,否则,节点不能被耗尽 优雅地,当宽限期结束时,它会被强制驱逐。

    【讨论】:

    • 非常感谢。因此,如果 PodDisruptionBudget 承诺零停机,请采用这种情况:有一个具有 2 个副本的部署,并且定义了 PodDisruptionBudget minAvailable=3。现在,有三个节点 A B C 和两个副本 1 2。调度程序将副本 1 分配给节点 A,将副本 2 分配给节点 B。然后,副本 1 被耗尽,调度程序将 1 移动到 B。所以在节点 B 中,现在两个副本 1 + 2.然后节点B被耗尽,我的服务宕机了。
    • 我认为在节点B的drain过程删除pod之前,会在其他节点上调度新的pod。另外,我认为minAvailable=3在副本数为2时没有意义.
    【解决方案2】:

    那么是什么给了 PodDisruptionBudget?

    如果您有一个需要高可用性的应用程序,例如每次崩溃后重建缓存可能需要一些时间。

    voluntary and involuntary 都存在中断。 PodDisruptionBudget 可以限制后者,但两者都计入预算。

    自愿中断的一个例子是当您的平台团队的一名员工决定为您的所有节点升级内核时 - 有时您希望慢慢地这样做,因为节点上的所有 Pod 都将被终止并且安排到不同的节点。

    还有非自愿中断,例如您的一个节点上的磁盘崩溃。

    【讨论】:

      【解决方案3】:

      因此,例如,如果我定义 2,则不会少于 2 个副本。那么是什么给了 PodDisruptionBudget 呢?

      minAvailable 为 2。而 maxAvailable 是一个错误的名称,它是 maxUnavailable

      【讨论】:

        猜你喜欢
        • 2019-07-21
        • 1970-01-01
        • 2021-04-21
        • 1970-01-01
        • 1970-01-01
        • 2020-04-09
        • 2019-03-31
        • 1970-01-01
        • 2022-10-14
        相关资源
        最近更新 更多