首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Kubernetes - ReplicaSet vs PodDisruptionBudget

Kubernetes - ReplicaSet vs PodDisruptionBudget
EN

Stack Overflow用户
提问于 2021-02-16 15:28:17
回答 3查看 1.1K关注 0票数 0

我想知道附加价值给PodDisruptionBudget带来了什么。

据我所知,PodDisruptionBudget承诺一定数量的节点将始终保留在集群中,而有两个选项可决定如何使用: minAvailable / maxUnavailable。

现在,当我定义ReplicaSet时,我定义了我需要多少个副本。例如,如果我定义了2,就不会少于2个副本。那么是什么赋予了PodDisruptionBudget?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2021-02-16 16:05:59

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

以下职位通过一个示例解释了PodDisruptionBudget在实现应用程序零停机时间方面是如何有用的:

引用post的话,节点升级是一个正常的场景,如下所述:

让我们考虑一个场景,我们需要升级节点的版本或经常更新规范。聚类降尺度也是一种正常情况。在这些情况下,运行在待删除节点上的豆荚需要排出。

kubectl drain是在升级的一个节点上执行的:

我们需要从池中删除node1,而我们不能通过立即分离来做到这一点,因为这将导致运行在池中的所有豆荚的终止,从而使服务停止。分离节点之前的第一步是使节点非计划。

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

如果您使用kubectl荚快速检查吊舱,它将立即终止node1上计划的所有运行吊舱。这可能会导致停机!如果您运行的荚数很少,并且它们都调度在同一个节点上,则需要一些时间才能在其他节点上调度这些荚。

PodDisruptionBudgetminAvailable在这样的场景中非常有用,可以实现零停机。Replicaset只会确保在此过程中在其他节点上创建replicas数量的荚。

如果您的Replicaset只有一个副本而没有指定PodDisruptionBudget,则将终止pod,并在其他节点上创建一个新的pod。这就是PDB相对于Replicaset提供额外优势的地方。

要使PodDisruptionBudget工作,必须至少有两个吊舱运行一个标签选择器,否则,节点将无法优雅地排出,并且在优雅时间结束时将被强制逐出。

票数 4
EN

Stack Overflow用户

发布于 2021-02-16 16:08:11

那么是什么赋予了PodDisruptionBudget?

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

这两种情况都有自愿和非自愿中断。PodDisruptionBudget可以限制后者,但两者都与预算相抵。

自动中断的一个例子是平台团队的员工决定为所有节点升级内核--有时您希望缓慢地升级,因为节点上的所有Pods都将被终止并调度到不同的节点上。

也有一些非自愿的干扰,例如,您的一个节点上的磁盘崩溃。

票数 0
EN

Stack Overflow用户

发布于 2021-02-16 16:09:46

例如,如果我定义了2,就不会少于2个副本。那么是什么赋予了PodDisruptionBudget?

是minAvailable的2。maxAvailable是个错误的名字,它是maxUnavailable

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/66227319

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档