关于Kubernetes Pod分配给节点的概念的问题

时间:2020-04-15 10:11:06

标签: kubernetes kubernetes-pod

我是Kuberenetes的初学者,想问一些与kuberenetes荚分配相关的概念。

假设要进行部署,需要3个副本集。

(1)

假定有4个节点,每个节点都是具有不同CPU和内存的不同物理服务器。

部署完成后,kubernetes将如何将pod分配到节点上?

会不会出现在同一台服务器上没有服务器分配的情况下将多个Pod放在同一台服务器上的情况?

(2)

假定有4个节点(在4个相同的物理服务器上),并且在这4个节点中的每个节点上创建了1个容器。

假设现在其中一个节点出现故障。 kuberenetes将如何处理呢?会否基于其他三个节点之一上的可用资源来重新创建Pod?



谢谢您提前提出建议。

2 个答案:

答案 0 :(得分:2)

Kubernetes文档中对Kubernetes Scheduler进行了简短的讨论。通常,调度是相当不透明的,但是您也倾向于将目标放在负载良好的节点上。从应用程序的角度来看,重要的是在pod规范中设置适当的资源requests:。只要每个节点上有足够的空间来满足资源请求,通常对选择哪个节点都没有关系。

在您描述的场景中,(1)有可能将两个副本放置在同一节点上,因此两个节点将不使用。如果节点不相同且具有资源限制,则尤其如此:如果您的Pod需要4 GB的RAM,但是您有一些节点的内存少于该值(在考虑了系统Pod和守护程序设置的Pod之后),这些Pod可以没有安排在那里。

如果节点发生故障(2),Kubernetes将自动重新计划在该节点上运行的Pod。 “失败”是一个广义的情况,可以包括故意停止升级或替换的节点。在后一种情况下,您可以控制集群的行为。请参阅文档中的Disruptions

许多环境将运行cluster autoscaler。这可能会导致节点自动来回移动:如果您尝试安排一个Pod,但它不适合,则自动缩放器将分配一个新节点;如果某个节点的利用率低于50%,它将被删除(及其Pod)重新安排)。在第一种情况下,您可能只从一个节点开始,但是当吊舱副本不完全适合时,自动缩放器将创建一个新节点,一旦可用,多余的吊舱可以在此处进行调度。

答案 1 :(得分:0)

  1. Kubernetes将尝试将Pod部署到多个节点,以提高可用性和弹性。这将基于节点的资源可用性。因此,如果任何节点没有足够的容量来承载Pod,则有可能将Pod的多个副本计划到同一节点中。

  2. Kubernetes会将Pod从发生故障的节点重新调度到其他具有足够容量来承载Pod的可用节点。再次在此过程中,如果没有足够的节点可以承载副本,则可能在同一节点上调度了多个副本。

您可以阅读有关调度算法here的更多信息。

您可以通过node and pod affinity and antiaffinity

影响计划程序
相关问题