避免在运行VM的同一物理主机上调度多个Pod实例作为节点

时间:2018-07-17 10:11:54

标签: kubernetes

这不是当前的实际问题,而是理论问题。假设K8S工作节点 N1,N2,N3..Nn 实际上是物理主机 H1,H2,H3 上的虚拟机,因此 N1 和< em> N2 当前位于 H1 上。当我要计划我的Pod P1 的5个实例时,在K8S中是否对底层物理主机 H1 有任何了解?或者有可能将所有5个实例安排在 N1 N2 上-导致所有5个( P1 )都位于 H1上

1 个答案:

答案 0 :(得分:1)

首先,让我们说“不”。如果是“裸机”(或裸机上的VM),Kubernetes仅“知道”他的节点(etcd,master,worker),而对VM所在的物理主机一无所知。但是,您可以使用一些键/值对来标记您的节点,这将确保此VM属于物理主机。

其次,我们说“是”。如何将Pod的任何部署调度到节点上,这是k8s scheduler 的任务,它是k8s主服务器控制平面的一部分。 默认调度程序具有一种算法,该算法可以检测最合适的k8s节点进行部署。因此,理论上H1可以托管您应用程序的所有5个实例。

好消息,这真的不太可能。此外,Kubernetes使您能够使用自己的用于调度的逻辑来创建自己的自定义调度程序,并将其仅用于特定的部署。这就是为什么很难相信会有安排您无法解决的计划的原因。

P.S:实际上,k8s调度-太笼统了,无法描述。应该分配足够的时间来检查您的案件。尝试从阅读“ kubernetes预先计划”开始: https://kubernetes.io/blog/2017/03/advanced-scheduling-in-kubernetes/

好的,它将帮助您前进。祝你好运!