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

Kubernetes如何限制新建节点池仅运行指定Pod 无需重打所有Pod标签

Kubernetes多集群合并专属节点池隔离方案

核心逻辑

采用K8s原生的污点(Taint) + 容忍度(Toleration) 搭配节点亲和性实现隔离,全程不需要修改/重新部署现有集群的普通业务Pod,也不需要给普通Pod新增任何标签。


具体操作步骤

1. 给专属节点池配置污点

直接在节点池的初始化配置中添加专属污点,后续新扩容的节点会自动继承该配置,不需要手动逐个给节点打污点:

  • 污点规则示例:dedicated=cluster2-migrated:NoSchedule
  • 手动给已有节点打污点的命令:
kubectl taint nodes [节点名称] dedicated=cluster2-migrated:NoSchedule

该污点的作用是:所有没有对应容忍度的Pod,都无法被调度到这些节点上,节点上已运行的无对应容忍度的Pod也会被自动驱逐。

2. 给迁移的集群2业务配置匹配规则

迁移原集群2的工作负载(Deployment/StatefulSet等)时,仅需要给这部分资源新增两类配置即可:

  1. 新增污点容忍度,允许其调度到专属节点:
tolerations:
- key: "dedicated"
  operator: "Equal"
  value: "cluster2-migrated"
  effect: "NoSchedule"
  1. 新增节点亲和性规则,保证这部分Pod只会调度到你提前打了专属标签的节点池上(避免被调度到普通业务节点):

假设你给专属节点池打的标签为 node-role.kubernetes.io/cluster2-dedicated: "true"

affinity:
  nodeAffinity:
    requiredDuringSchedulingIgnoredDuringExecution:
      nodeSelectorTerms:
      - matchExpressions:
        - key: node-role.kubernetes.io/cluster2-dedicated
          operator: In
          values:
          - "true"

额外说明

  • 如果需要监控、日志采集、CNI插件等系统级DaemonSet正常运行在专属节点上,只需要给对应DaemonSet新增上述容忍度即可,无其他额外配置。
  • 原集群2的业务全部迁移完成后,直接删除专属节点池即可完成下线,无残留配置。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.06 04:24:04