You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何基于Pod名称将指定Pod调度到K8s集群特定节点?

基于Pod名称定向调度的values.yaml示例及说明

前提准备

先给目标节点打好对应标签:

  • 节点1打标签 node-group: group1
  • 节点2打标签 node-group: group2
  • 节点3打标签 node-group: group3

执行标签命令:

kubectl label nodes node1 node-group=group1
kubectl label nodes node2 node-group=group2
kubectl label nodes node3 node-group=group3

values.yaml 示例(StatefulSet场景)

你的Pod名称是固定有序的(mypod-0至mypod-5),用StatefulSet适配性最佳,以下是完整配置:

statefulset:
  name: mypod
  replicas: 6
  template:
    spec:
      affinity:
        nodeAffinity:
          # 调度阶段必须满足规则,Pod运行后节点标签变化不影响
          requiredDuringSchedulingIgnoredDuringExecution:
            nodeSelectorTerms:
              # 规则1:mypod-0、mypod-3 调度到带group1标签的节点
              - matchExpressions:
                  - key: node-group
                    operator: In
                    values: ["group1"]
                matchFields:
                  - key: metadata.name
                    operator: In
                    values: ["mypod-0", "mypod-3"]
              # 规则2:mypod-1、mypod-4 调度到带group2标签的节点
              - matchExpressions:
                  - key: node-group
                    operator: In
                    values: ["group2"]
                matchFields:
                  - key: metadata.name
                    operator: In
                    values: ["mypod-1", "mypod-4"]
              # 规则3:mypod-2、mypod-5 调度到带group3标签的节点
              - matchExpressions:
                  - key: node-group
                    operator: In
                    values: ["group3"]
                matchFields:
                  - key: metadata.name
                    operator: In
                    values: ["mypod-2", "mypod-5"]
      containers:
        - name: my-app-container
          image: your-app-image:latest
          # 此处添加容器端口、环境变量等自定义配置

关键用法说明

  1. nodeSelector的局限性:
    nodeSelector只能单纯匹配节点标签,无法关联Pod自身的名称,没法实现“特定Pod对应特定节点”的定向调度,因此必须用节点亲和性(nodeAffinity)。

  2. nodeAffinity规则逻辑:

    • requiredDuringSchedulingIgnoredDuringExecution:确保调度阶段必须满足规则,Pod运行后即使节点标签变化,也不会被驱逐。
    • 每个nodeSelectorTerms是一组或条件,满足任意一组即可匹配;组内的matchExpressions(节点标签)和matchFields(Pod名称)是与条件,必须同时满足才会调度到对应节点。
  3. 反亲和性的适用场景:
    你的场景不需要反亲和性,反亲和性主要用于避免Pod调度到同一节点(如多副本分散部署),或避免与特定Pod/节点共存,和当前定向调度需求无关。

内容的提问来源于stack exchange,提问作者anhal

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.07 06:45:28