OpenShift项目Pod调度配置问题:默认CPU节点,指定GPU节点
解决OpenShift集群默认CPU调度、指定GPU调度的冲突问题
我来帮你搞定这个调度配置的问题——你之前踩的坑其实是对OpenShift的节点选择器和调度控制逻辑理解有点偏差,咱们一步步调整到正确的方案:
为什么之前的配置失效/报错?
先理清楚你遇到的两个问题根源:
defaultNodeSelector导致冲突:这个配置是给项目下所有Pod强制加上节点选择器,相当于所有Pod必须满足graphic=cpu,当你在DeploymentConfig里指定graphic=gpu时,两个选择器完全矛盾,自然会报冲突错误。nodeSelectorLabelBlacklist无效:这个配置的作用是禁止用户使用某些标签作为节点选择器,而不是阻止Pod被调度到带有这些标签的节点。所以它根本不会影响默认调度逻辑,Pod还是可能被调度到GPU节点。
推荐方案一:节点亲和性(Preferred Affinity)
这个方案既能实现默认优先CPU节点,又允许你在需要时指定GPU节点,不会有冲突:
- 清理旧配置:先移除
master-config.yaml里的defaultNodeSelector和nodeSelectorLabelBlacklist,然后重启OpenShift Master组件(如果是新版OpenShift,也可以用oc edit scheduler cluster来修改调度器配置)。 - 确保节点标签正确:确认你的CPU节点都有
graphic=cpu标签,GPU节点有graphic=gpu标签:# 给CPU节点加标签(替换成你的节点名) oc label node cpu-node-1 graphic=cpu oc label node cpu-node-2 graphic=cpu oc label node cpu-node-3 graphic=cpu # 给GPU节点加标签 oc label node gpu-node-1 graphic=gpu - 设置默认偏好性节点亲和:在
master-config.yaml的projectConfig里添加默认Pod模板的亲和配置,让所有新项目的Pod默认优先调度到CPU节点:
这里的projectConfig: defaultPodTemplate: spec: affinity: nodeAffinity: preferredDuringSchedulingIgnoredDuringExecution: - weight: 100 preference: matchExpressions: - key: graphic operator: In values: - cpupreferred表示这是一个偏好策略,不是强制要求——如果没有CPU节点可用,调度器还是会调度到其他节点,但正常情况下会优先选CPU节点。 - 部署到GPU节点的配置:当你需要部署到GPU节点时,直接在DeploymentConfig的Pod模板里添加强制节点选择器即可,因为偏好策略不会覆盖强制选择:
apiVersion: v1 kind: DeploymentConfig metadata: name: gpu-app spec: template: spec: nodeSelector: graphic: gpu # 其他容器配置...
推荐方案二:污点与容忍(Taints & Tolerations)
这个方案更直接,通过污点阻止默认Pod调度到GPU节点,只有主动添加容忍的Pod才能调度过去:
- 给GPU节点加污点:
这个污点会让所有没有对应容忍的Pod无法被调度到该节点。oc adm taint nodes gpu-node-1 graphic=gpu:NoSchedule - 默认Pod无需修改:因为默认Pod没有这个污点的容忍,所以会自动被调度到CPU节点。
- 部署GPU应用时添加容忍+节点选择器:
这样只有这个Pod能被调度到GPU节点,完美实现你的需求。apiVersion: v1 kind: DeploymentConfig metadata: name: gpu-app spec: template: spec: tolerations: - key: "graphic" operator: "Equal" value: "gpu" effect: "NoSchedule" nodeSelector: graphic: gpu # 其他容器配置...
总结
两种方案都能解决你的问题:
- 如果希望只是优先CPU节点(极端情况允许调度到GPU),选节点亲和性方案;
- 如果希望严格禁止默认Pod调度到GPU节点,选污点与容忍方案。
内容的提问来源于stack exchange,提问作者alixander
相关产品推荐
相关产品推荐

