防止Kube系统Pod在特定节点上运行

时间:2019-07-16 14:25:09

标签: kubernetes google-cloud-platform google-kubernetes-engine

我有一个在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>

有什么方法可以防止它发生吗?

1 个答案:

答案 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,而不会出现问题。