Kubernetes-复制集与播客预算
我想知道PodDisruptionBudget有什么附加值 据我所知,PodDisruptionBudget承诺一定数量的节点将始终保留在集群中,同时有两个选项来决定如何使用:minAvailable/maxUnavailableKubernetes-复制集与播客预算,kubernetes,kubernetes-pod,replicaset,Kubernetes,Kubernetes Pod,Replicaset,我想知道PodDisruptionBudget有什么附加值 据我所知,PodDisruptionBudget承诺一定数量的节点将始终保留在集群中,同时有两个选项来决定如何使用:minAvailable/maxUnavailable 现在,当我定义ReplicaSet时,我定义了需要多少副本。例如,如果我定义了2个副本,那么将有不少于2个副本。那么是什么给了PodDisruptionBudget呢?PodDisruptionBudget有助于确保应用程序的零停机时间,而这是ReplicaSet无法
现在,当我定义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都将被终止并调度到不同的节点
还存在非自愿中断,例如某个节点上的磁盘崩溃