Sil*_*ris 4 google-cloud-platform kubernetes google-kubernetes-engine
我有一个在 GKE 上运行的集群。我创建了 2 个独立的节点池。我的第一个节点池(我们称之为main-pool)可从 1 个节点扩展到 10 个节点。第二个(我们称之为db-pool)可扩展为 0 到 10 个节点。这些db-pool节点有特定的需求,因为我必须动态创建一些相当大的数据库,请求大量内存,而这main-pool是针对“轻型”工作人员的。我使用节点选择器在正确的节点上创建我的工作人员,一切正常。
我遇到的问题是db-pool节点,因为它们请求大量内存,所以成本要高得多,我希望它们在没有数据库运行时缩小到 0。在我添加节点选择器之前它工作得很好(我不是 100% 确定,但似乎是在它发生的时候),但现在它不会缩小到少于 1 个节点。我相信这是因为一些 kube-system 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>
Run Code Online (Sandbox Code Playgroud)
有什么办法可以防止这种情况发生吗?
像 Fluentd 和(最终是 kube-proxy)这样的系统 Pod 是守护进程集,每个节点都需要它们;但这些不应该停止缩小规模。像 Heapster 和metrics-server 这样的 Pod 不是必需的,它们会阻止节点池缩小到 0。
阻止这些非节点关键系统 Pod 在昂贵的节点池上进行调度的最佳方法是使用taints 和 tolerations。污点将阻止 pod 被调度到节点,您只需通过设置容忍度和节点选择器来确保 db pod 确实被调度到更大的节点池上。
您应该在创建节点池时配置节点污点,以便在创建新节点时污点已就位。通过适当的污点和容忍,您的节点池应该能够毫无问题地缩小到 0。
| 归档时间: |
|
| 查看次数: |
1734 次 |
| 最近记录: |