是否可以让 Kubernetes 在启动后在节点上运行作业,并且在该作业完成之前不运行任何 Pod?
我的第一个想法是使用污点(启动节点时使用只有作业才能容忍的污点,然后在作业完成时删除污点)。但是,我正在使用 AWS EKS,如果可能的话,我想使用“托管节点”功能,这不允许指定节点污点。它也不允许使用自定义实例引导脚本,这是我的另一个选择。
答案1
我用来解决这个问题的东西是尼德霍格我会将“工作负载” Pod 保留在节点之外,直到 GPU 驱动程序和 CNI 引导完成
与您指定的“不使用污点”的区别在于,nidhogg 会动态应用和删除污点,并且不需要在节点配置时设置它们
可能需要调整你的工作量才能意识到 nidhogg 的污点将会应用
另一种方法是让你描述的作业在完成时将标签应用于节点(可以通过serviceAccount
注入 Pod 的 Token 来实现),然后nodeSelector:
在工作负载中使用仅针对具有该标签的节点