集群自动伸缩器需要为系统Pod分配哪个PDB?

时间:2018-10-23 11:50:32

标签: kubernetes autoscaling

在使用集群自动缩放器时,我注意到由于标准的k8s转接盒,缩小无法正常工作:

Fast evaluation: node aks-nodepool1-37748512-0 cannot be removed: non-daemonset, non-mirrored, non-pdb-assignedkube-system pod present: kube-dns-v20-8748686c5-27psn

对于kube-dns,什么是适当的PodDisruptionBudget?对于标准系统POD PDB,是否有最佳实践?为什么默认情况下不配置它们?

1 个答案:

答案 0 :(得分:2)

有关Disruptions的Kubernetes文档中,我们可以阅读:

  

应用程序所有者可以为每个应用程序创建一个PodDisruptionBudget对象(PDB)。 PDB限制了由于自愿中断而同时下降的复制应用程序的数量。例如,基于仲裁的应用程序希望确保运行的副本数绝不会低于仲裁所需的数目。 Web前端可能要确保服务于负载的副本数量绝不低于总数的一定百分比。

您可以在Kubernetes文档的Autoscale the DNS Service in a Cluster中看到有关如何为kube-dns正确启用,调整和禁用PodDisruptionBudget的示例。

马顿·塞雷格(Marton Sereg)也写了一篇有关Draining Kubernetes nodes的好文章,他在其中解释了排水的工作原理以及集群内部的情况。

关于配置默认值,我可以找到此讨论Reasonable defaults with eviction and PodDisruptionBudget #35318