我想知道附加价值给PodDisruptionBudget带来了什么。
据我所知,PodDisruptionBudget承诺一定数量的节点将始终保留在集群中,而有两个选项可决定如何使用: minAvailable / maxUnavailable。
现在,当我定义ReplicaSet时,我定义了我需要多少个副本。例如,如果我定义了2,就不会少于2个副本。那么是什么赋予了PodDisruptionBudget?
发布于 2021-02-16 16:05:59
PodDisruptionBudget有助于确保ReplicaSet无法保证的应用程序的零停机时间。
以下职位通过一个示例解释了PodDisruptionBudget在实现应用程序零停机时间方面是如何有用的:
引用post的话,节点升级是一个正常的场景,如下所述:
让我们考虑一个场景,我们需要升级节点的版本或经常更新规范。聚类降尺度也是一种正常情况。在这些情况下,运行在待删除节点上的豆荚需要排出。
kubectl drain是在升级的一个节点上执行的:
我们需要从池中删除node1,而我们不能通过立即分离来做到这一点,因为这将导致运行在池中的所有豆荚的终止,从而使服务停止。分离节点之前的第一步是使节点非计划。
运行kubectl get pods -w将显示在节点get上运行的豆荚处于终止状态,从而导致停机:
如果您使用kubectl荚快速检查吊舱,它将立即终止node1上计划的所有运行吊舱。这可能会导致停机!如果您运行的荚数很少,并且它们都调度在同一个节点上,则需要一些时间才能在其他节点上调度这些荚。
PodDisruptionBudget和minAvailable在这样的场景中非常有用,可以实现零停机。Replicaset只会确保在此过程中在其他节点上创建replicas数量的荚。
如果您的Replicaset只有一个副本而没有指定PodDisruptionBudget,则将终止pod,并在其他节点上创建一个新的pod。这就是PDB相对于Replicaset提供额外优势的地方。
要使PodDisruptionBudget工作,必须至少有两个吊舱运行一个标签选择器,否则,节点将无法优雅地排出,并且在优雅时间结束时将被强制逐出。
发布于 2021-02-16 16:08:11
那么是什么赋予了PodDisruptionBudget?
如果您有一个想要高可用性的应用程序,例如,每次崩溃后重建缓存可能需要时间。
这两种情况都有自愿和非自愿中断。PodDisruptionBudget可以限制后者,但两者都与预算相抵。
自动中断的一个例子是平台团队的员工决定为所有节点升级内核--有时您希望缓慢地升级,因为节点上的所有Pods都将被终止并调度到不同的节点上。
也有一些非自愿的干扰,例如,您的一个节点上的磁盘崩溃。
发布于 2021-02-16 16:09:46
例如,如果我定义了2,就不会少于2个副本。那么是什么赋予了PodDisruptionBudget?
是minAvailable的2。maxAvailable是个错误的名字,它是maxUnavailable。
https://stackoverflow.com/questions/66227319
复制相似问题