在Kubernetes中添加节点后重新分配pod

时间:2017-05-18 08:04:14

标签: kubernetes

将节点添加到Kubernetes群集后,我该如何处理pod?

我的意思是,理想情况下,我希望其中一些停止并在新添加的节点上启动。我是否必须手动选择一些停止并希望它们将被安排在新添加的节点上重新启动?

我不关心亲和力,只关心半均匀分配。

也许有办法让pod的数量始终等于节点数量?

为了举个例子:

我正在使用juju在AWS上配置小型Kubernetes集群。一个主人和两个工人。这只是一个游乐场。

我的应用程序是apache服务PHP和静态文件。所以我有一个部署,一个NodePort类型的服务和一个使用nginx-ingress-controller的入口。

我已经关闭了其中一个工作器实例,我的应用程序窗格重新创建了一个仍在工作的应用程序窗格。

然后我启动了实例,主人把它拿起并在那里启动了nginx入口控制器。但是当我尝试删除我的应用程序窗格时,它们会在继续运行的实例上重新创建,而不是在重新启动的实例上重新创建。

不确定它是否重要,但我没有任何DNS设置。刚刚将其中一个实例的IP添加到/ etc / hosts,其中包含来自我的入口的主机值。

2 个答案:

答案 0 :(得分:0)

添加新节点时,Kubernetes中会自动重新分发。您可以通过删除单个pod并使用基于主机的反亲和策略来强制重新分发单个pod。否则,Kubernetes将更喜欢使用新节点进行调度,从而实现随时间的重新分配。

您手动触发重新分发的原因是什么?

答案 1 :(得分:0)

descheduler [1]一个kuberenets孵化器项目可能会有所帮助。以下是简介

由于Kubernetes集群非常动态,并且它们的状态会随着时间而变化,因此出于各种原因,可能希望将已经在运行的pod移至其他节点:

  • 某些节点的利用率不足或过度。
  • 最初的调度决策不再成立,因为将污点或标签添加到节点或从节点上删除了,不再满足pod /节点亲和力要求。
  • 某些节点发生故障,并且吊舱已移至其他节点。
  • 新节点已添加到集群。

[1] https://github.com/kubernetes-incubator/descheduler