Kubernetes 引入了PodDisruptionBudget,它可以防止我们的应用程序的功能因手动和自动垂直(节点)扩展而中断。
假设我们正在使用HozirontalPodAutoscaler。另外使用 PDB 的价值是什么?PodDisruptionBudget minAvailable
和HozirontalPodAutoscaler minReplicas
之间有什么区别?
Kubernetes 引入了PodDisruptionBudget,它可以防止我们的应用程序的功能因手动和自动垂直(节点)扩展而中断。
假设我们正在使用HozirontalPodAutoscaler。另外使用 PDB 的价值是什么?PodDisruptionBudget minAvailable
和HozirontalPodAutoscaler minReplicas
之间有什么区别?
它们的作用不同。HorizontalPodAutoscaler 根据某些指标控制 Deployment 的
replicas:
数量。PodDisruptionBudget 主要影响节点是否可以下线。假设您有一个云托管集群,并且您的集群管理员想要升级集群节点上的基本操作系统。为此,他们需要“封锁”每个节点(防止新的 Pod 被安排到该节点)并“排空”该节点(重新定位该节点上的所有 Pod),然后才能重新启动该节点。
同时,我们再假设您的应用程序部署有
replicas: 3
,PodDisruptionBudget 指定minReplicas: 2
,并且恰巧两个副本位于即将终止的同一节点上。排空操作将删除这些副本并在其他节点上重新创建它们。PDB 将保持其中一个副本运行,直到另一个副本被删除并重新创建。您“应该”有一个 PodDisruptionBudget,但是在集群管理员故意删除节点的场景之外,您不会注意到它。
minReplicas:
PDB 独立于 HPA。我要指出的一个相互作用是,将 PDB 设置为高于 HPA是没有意义的minReplicas:
(如果您可以容忍自动缩放到 1 个副本,那么您也可以支持由于中断而使用 1 个副本)。如果 PDBminReplicas:
是一个百分比,则它就是 Deployment 的百分比replicas:
,这意味着它将跟踪 HPA 所做的更改。