我有一个在GKE上运行的集群。我创建了2个单独的节点池。我的第一个节点池(我们称其为main-pool
)从1个节点扩展到10个节点。第二个节点(我们称其为db-pool
)从0到10个节点。 db-pool
节点有特定的需求,因为我必须动态创建一些非常大的数据库,这需要大量的内存,而main-pool
是供“轻型”工作人员使用的。我在我的工作人员中使用了节点选择器,以便在正确的节点上创建它,并且一切正常。
我遇到的问题是db-pool
节点,因为它们需要大量内存,所以它们的价格要贵得多,并且我希望在没有数据库运行时将它们缩减为0。在添加节点选择器之前,它一直运行良好(我不确定100%,但是似乎是在何时发生),但是现在它不会缩减到少于1个节点。我相信这是因为一些kube系统pod正在此节点上运行:
NAME READY STATUS RESTARTS AGE IP NODE NOMINATED NODE
heapster-v1.6.0-beta.1-6c9dfdb9f5-2htn7 3/3 Running 0 39m 10.56.18.22 gke-padawan-cluster-ipf-db-pool-bb2827a7-99pm <none>
metrics-server-v0.3.1-5b4d6d8d98-7h659 2/2 Running 0 39m 10.56.18.21 gke-padawan-cluster-ipf-db-pool-bb2827a7-99pm <none>
fluentd-gcp-v3.2.0-jmlcv 2/2 Running 0 1h 10.132.15.241 gke-padawan-cluster-ipf-db-pool-bb2827a7-99pm <none>
kube-proxy-gke-padawan-cluster-ipf-db-pool-bb2827a7-99pm 1/1 Running 0 1h 10.132.15.241 gke-padawan-cluster-ipf-db-pool-bb2827a7-99pm <none>
prometheus-to-sd-stfz4 1/1 Running 0 1h 10.132.15.241 gke-padawan-cluster-ipf-db-pool-bb2827a7-99pm <none>
有什么方法可以防止它发生吗?
答案 0 :(得分:2)
Fluentd和(最终是kube-proxy)之类的系统Pod是守护程序集,在每个节点上都是必需的;这些不应该停止缩减规模。不需要像Heapster和Metrics-server这样的Pod,它们可以阻止节点池缩小到0。
阻止这些非节点关键系统Pod在昂贵的节点池上进行调度的最佳方法是使用taints and tolerations。污点将阻止将Pod安排到节点上,您只需要通过与节点选择器一起设置容差来确保db Pod确实在较大的节点池上进行了安排。
您应该配置node taints when you create the node pool,以便在已有污点的情况下创建新节点。有了适当的污点和容忍度,您的节点池应该可以缩小到0,而不会出现问题。