Kubernetes-复制集与播客预算

Kubernetes-复制集与播客预算,kubernetes,kubernetes-pod,replicaset,Kubernetes,Kubernetes Pod,Replicaset,我想知道PodDisruptionBudget有什么附加值 据我所知,PodDisruptionBudget承诺一定数量的节点将始终保留在集群中,同时有两个选项来决定如何使用:minAvailable/maxUnavailable 现在,当我定义ReplicaSet时,我定义了需要多少副本。例如,如果我定义了2个副本,那么将有不少于2个副本。那么是什么给了PodDisruptionBudget呢?PodDisruptionBudget有助于确保应用程序的零停机时间,而这是ReplicaSet无法

我想知道PodDisruptionBudget有什么附加值

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


现在,当我定义ReplicaSet时,我定义了需要多少副本。例如,如果我定义了2个副本,那么将有不少于2个副本。那么是什么给了PodDisruptionBudget呢?

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

通过一个示例说明了
podcruptionbudget
如何有助于实现应用程序的零停机时间:

引用帖子,节点升级是一种正常情况,如中所述:

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

kubectl排水
在升级的一个节点上执行:

我们需要将节点1从池中移除,而这是我们无法做到的 立即分离,因为这将导致所有吊舱终止 在那里运行可以让服务停止。第一步 分离节点是为了使节点不计划

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

如果你用kubectl get pods快速检查pods,它会 立即终止节点1上计划的所有运行吊舱 . 这可能导致停机!如果您运行的吊舱数量很少 而且所有这些都安排在同一个节点上,这将需要一些时间 要在其他节点上调度的POD


podcruptionbudget
minAvailable
在此类场景中非常有用,可以实现零停机时间
Replicaset
将仅确保
副本的数量不会增加
在此过程中在其他节点上创建

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

要使PodDisruptionBudget正常工作,必须至少有2个Pod 正在运行标签选择器,否则无法排空节点 优雅地,它将被强制驱逐时,宽限期结束


PodDisruptionBudget
有助于确保应用程序在
ReplicaSet
无法保证的情况下实现零停机时间

通过一个示例说明了
podcruptionbudget
如何有助于实现应用程序的零停机时间:

引用帖子,节点升级是一种正常情况,如中所述:

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

kubectl排水
在升级的一个节点上执行:

我们需要将节点1从池中移除,而这是我们无法做到的 立即分离,因为这将导致所有吊舱终止 在那里运行可以让服务停止。第一步 分离节点是为了使节点不计划

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

如果你用kubectl get pods快速检查pods,它会 立即终止节点1上计划的所有运行吊舱 . 这可能导致停机!如果您运行的吊舱数量很少 而且所有这些都安排在同一个节点上,这将需要一些时间 要在其他节点上调度的POD


podcruptionbudget
minAvailable
在此类场景中非常有用,可以实现零停机时间
Replicaset
将仅确保
副本的数量不会增加
在此过程中在其他节点上创建

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

要使PodDisruptionBudget正常工作,必须至少有2个Pod 正在运行标签选择器,否则无法排空节点 优雅地,它将被强制驱逐时,宽限期结束

那么,是什么给了我们预算呢

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

这两种情况都会造成破坏。PodDisruptionBudget可以限制后者,但两者都会计入预算

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

还存在非自愿中断,例如某个节点上的磁盘崩溃

那么,是什么给了我们预算呢

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

这两种情况都会造成破坏。PodDisruptionBudget可以限制后者,但两者都会计入预算

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

还存在非自愿中断,例如某个节点上的磁盘崩溃