k8s 节点亲和力文档解释了如何通过使用标签标记节点并使用nodeSelector来选择节点,从而将pod部署到特定节点。
但是,我有一个用例,在集群中有40-50个部署,我希望向集群中添加一个新节点,并将该节点设置为其中一个部署/pod,而不更改没有指定任何nodeSelector的所有部署。
例如,假设我有3个部署,没有定义nodeSelector,还有3个工作节点。这意味着k8s决定在何处部署豆荚,并且可以部署在这3个节点中的一个。现在我必须创建一个第4部署,并添加第4服务器,我希望将第4部署专用于第4服务器,还希望确保k8s不会将前3次部署安排到第4节点。我怎样才能做到这一点,而不通过所有这3种部署方案,并应用nodeSelector过滤器来避免在第4节点上部署?(在3种部署中执行此更改是可以的,但我指的是实际场景中的50多个部署)
我唯一能想到的就是污点节点,但是如果我这样做,就不会有任何一个豆荚被安排在那里。
这里是否有更好的办法来实现我所不知道的目标?
发布于 2020-05-21 13:26:02
您可以使用接纳控制器在运行时动态地将NodeSelector添加到pod规范中,而不是修改现有的部署yaml。您可以在变异网钩中编写任何自定义逻辑来满足您的用例。例如,您可以在新的部署规范中有一个标签/注释,并且基于这个标签/注释的存在,您可以动态地添加一个NodeSelector。
PodNodeSelector准入网络钩子是一个很好的例子,值得参考.
https://stackoverflow.com/questions/61935477
复制相似问题