在AWS上,我有一个包含20个节点的K8S集群。我需要以某种方式进行流水线处理,以便仅将新Pod部署在一个专用节点上,并且一旦执行到特定阶段,便会将其从该节点中删除,使其处于空闲状态,以便可以使用另一个专用节点。部署在该节点上。
我尝试使用nodeName,这很好,但是我们需要使调度自动进行。在nodeName方法中,我必须查看是否有任何节点空闲,然后将其部署到那里。 另外,我需要检查是否对每个节点都执行了,如果完成了,请删除吊舱。这也是手动完成的。有没有办法使它自动化?
答案 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调度到该节点上