如何在kubernetes集群中的master + worker和仅worker节点之间负载平衡pod分配

时间:2019-12-14 08:08:26

标签: kubernetes kubernetes-pod kubernetes-deployment

我有一个带有两个节点的k8s集群。一个节点可以说A是主节点+工人,而另一个B仅是工人。现在,每当发生新部署时,它将转到工作节点(B)。我尝试了多种部署,每个部署仅部署在工作节点(B)上。

我认为调度程序的行为是调度工作节点上的部署并保持主节点尽可能低的利用率。

我想以循环方式分发部署,以便如果我有6个部署,则每个节点将收到3个。我知道我可以通过在部署文件中定义节点约束来做到这一点,但是我想知道是否还有其他方法可以实现吗?

注:我尝试了具有两个副本的部署,并且两个节点都收到一个pod。但是,单个副本并非如此。它始终仅部署在工作节点(B)上。

节点A(主节点+工作节点)污染配置

CreationTimestamp:  Thu, 18 Apr 2019 11:38:54 +0200
Taints:             <none>
Unschedulable:      false

节点B(仅适用于工作人员)污染配置

CreationTimestamp:  Tue, 10 Dec 2019 08:37:25 +0100
Taints:             <none>
Unschedulable:      false

2 个答案:

答案 0 :(得分:0)

您可以在主节点和所有节点上运行以下命令删除污点

kubectl taint node --all node-role.kubernetes.io/master:NoSchedule-

答案 1 :(得分:0)

  

我想以循环方式分发部署,以便如果我有6个部署,则每个节点将收到3个。我知道我可以通过在部署文件中定义节点约束来做到这一点,但是我想知道是否还有其他方法可以实现吗?

首先;您不应该关心计划的底层细节。让Kubernetes对此负责。

PodAffinity或PodAntiAffinity

关于广告连播安排,您需要注意的两件事是:广告连播应该与其他东西进行共置,或者如果广告连播应该避免共置 强>有一些东西。例如。您可能希望将应用程序副本安排在不同的节点上,以实现容错/高可用性。

请参见Pod Affinity and Pod Anti-Affinity