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

问题描述 投票:0回答:2

我有一个带有两个节点的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
kubernetes kubernetes-pod kubernetes-deployment
2个回答
0
投票

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

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

0
投票

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

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

PodAffinity或PodAntiAffinity

关于Pod调度,您需要注意的两件事是,Pod应该与其他内容co-located,或者Pod应该避免位于同一地点。例如。您可能希望将应用程序副本安排在不同的节点上,以实现容错/高可用性。

请参见Pod Affinity and Pod Anti-Affinity

© www.soinside.com 2019 - 2024. All rights reserved.