在闲置且仅在一个专用节点上部署Pod

时间:2019-06-02 13:38:27

标签: amazon-web-services kubernetes devops aws-eks

在AWS上,我有一个包含20个节点的K8S集群。我需要以某种方式进行流水线处理,以便仅将新Pod部署在一个专用节点上,并且一旦执行到特定阶段,便会将其从该节点中删除,使其处于空闲状态,以便可以使用另一个专用节点。部署在该节点上。

我尝试使用nodeName,这很好,但是我们需要使调度自动进行。在nodeName方法中,我必须查看是否有任何节点空闲,然后将其部署到那里。 另外,我需要检查是否对每个节点都执行了,如果完成了,请删除吊舱。这也是手动完成的。有没有办法使它自动化?

1 个答案:

答案 0 :(得分:0)

我很确定cluster-autoscaler将按照您的描述进行操作。您想要创建一个具有两个k8s.io/cluster-autoscaler/node-template/taint/my-special-key的Auto Scaling组:

  • whatever:NoSchedule和值k8s.io/cluster-autoscaler/node-template/label/my-special-label
  • whatever-you-want和值requests:(甚至是空白值)

然后,当您创建Pod时,将其memory:的大小恰好为cpu:nodeSelector以适合该节点,并包含{{1} }(或my-special-label: whatever-you-want)和污点的容忍度

然后,cluster-autoscaler将创建一个新的Node,因为它知道标签和异味限制,如果Pod不使用它,它将在10分钟后删除该Node(我确定是可以自定义的)。

没有其他Pod会触发该缩放事件,也不会将其他Pod调度到该节点上