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

如何通过nodeSelector在每个节点部署Pod?现有配置求最优方案

实现每个节点运行一个Pod的最佳方式

你的核心需求是在test-node节点池的每个节点上各运行一个Pod,结合你的现有配置,最优方案分两种情况:

优先选择:使用DaemonSet

Kubernetes的DaemonSet就是专门为「每个符合条件的节点必须运行一个Pod实例」这个场景设计的,完全不需要手动配置复杂的亲和性规则,它会自动处理:

  • 新节点加入test-node节点池时,自动在该节点部署Pod
  • 节点从池里移除时,自动删除对应Pod
  • 确保每个节点始终只有一个该Pod实例

示例配置如下:

apiVersion: apps/v1
kind: DaemonSet
metadata:
  name: test-daemonset
spec:
  selector:
    matchLabels:
      app: test-1 # 对应你的Pod标签,也可以是test-2
  template:
    metadata:
      labels:
        app: test-1
    spec:
      # 仅限制在test-node节点池运行
      affinity:
        nodeAffinity:
          requiredDuringSchedulingIgnoredDuringExecution:
            nodeSelectorTerms:
            - matchExpressions:
              - key: doks.digitalocean.com/node-pool
                operator: In
                values:
                - test-node
      containers:
      - name: test-container
        image: 你的镜像地址:版本号

特殊场景:用Deployment实现(不推荐)

如果因为业务限制必须用Deployment(比如需要自定义滚动更新策略),可以基于你的现有配置优化:

  1. 把replicas设置为test-node节点池的节点总数
  2. 调整podAntiAffinity确保同一节点不会部署多个同标签的Pod

示例配置:

apiVersion: apps/v1
kind: Deployment
metadata:
  name: test-deployment
spec:
  replicas: 3 # 替换成test-node节点池的实际节点数
  selector:
    matchLabels:
      app: test-1
  template:
    metadata:
      labels:
        app: test-1
    spec:
      affinity:
        # 禁止同一节点部署多个app=test-1的Pod
        podAntiAffinity:
          requiredDuringSchedulingIgnoredDuringExecution:
          - labelSelector:
              matchLabels:
                app: test-1
            topologyKey: "kubernetes.io/hostname"
        # 仅在test-node节点池运行
        nodeAffinity:
          requiredDuringSchedulingIgnoredDuringExecution:
            nodeSelectorTerms:
            - matchExpressions:
              - key: doks.digitalocean.com/node-pool
                operator: In
                values:
                - test-node
      containers:
      - name: test-container
        image: 你的镜像地址:版本号

注意:用Deployment的话,当节点池的节点数量变化时,你需要手动调整replicas数值,维护成本比DaemonSet高很多。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.24 08:07:46