定义了 HPA 的 kubernetes 集群是否需要 PDB?

Is PDB required for a kubernetes cluster for which HPA is defined?

我有一个 Kubernetes 集群。通过策略,我确保所有服务都定义了请求、限制和 HPA,这样我就可以顺利进行自动缩放。我还定义了 ResourceQuota。这样的场景,是不是也需要定义PDB呢?请指教

当然,PDB 旨在补充您的副本集,以确保节点操作不会通过同时从 运行 中删除所有必需的实例来降低您的服务。它是一种资源,隐藏在 运行 副本的数量上,并利用 pod 标签选择器(与服务相同)来确定您的 PDB 应该查看哪个 pod

在节点操作期间,drain 将停止并等待所有 PDB 在执行 pod 驱逐时得到遵守。 Pods 如果逐出会导致 PDB 无效,将等到条件有效。

你需要注意的是要有正确的定义。具有单个副本的部署的 PDB 很可能会导致节点操作永远不会成功。

详情请看这篇文章

https://blog.gruntwork.io/avoiding-outages-in-your-kubernetes-cluster-using-poddisruptionbudgets-ef6a4baa5085

以及有关资源清单的完整详细信息

https://kubernetes.io/docs/tasks/run-application/configure-pdb/