我有一个带有两个节点的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
您可以在命令上运行以下命令,删除主节点和所有节点上的污点
kubectl taint node --all node-role.kubernetes.io/master:NoSchedule-
我想以循环方式分发部署,以便如果我有6个部署,每个节点将收到3。我知道可以通过在部署文件中定义节点约束来做到这一点,但是我想知道是否存在还有其他方法可以实现吗?
首先;您不应该关心计划的底层细节。让Kubernetes对此负责。
关于Pod调度,您需要注意的两件事是,Pod应该与其他内容co-located,或者Pod应该避免位于同一地点。例如。您可能希望将应用程序副本安排在不同的节点上,以实现容错/高可用性。