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

Kubernetes DaemonSet结合PodAffinity实现仅在运行指定标签Pod的节点调度的问题求助

Kubernetes DaemonSet结合PodAffinity实现仅在运行指定标签Pod的节点调度的问题求助

各位Kubernetes开发者好,我碰到了一个DaemonSet调度的困扰,想请大家帮忙分析下:

我所在的集群里,用StatefulSet部署了Filebeat,它通过节点本地卷收集微服务的日志,再推送到我们的OpenSearch。但现在的问题是,并不是所有节点上都有需要收集日志的服务——只有运行着带有type: microservice标签Pod的节点,才需要Filebeat工作,这就导致很多节点上的Filebeat Pod完全是闲置状态,纯粹浪费资源。

我的想法是限制DaemonSet的调度范围,让它只在至少有一个type: microservice标签Pod运行的节点上启动自己的Pod。我查到了podAffinity这个配置,但关于DaemonSet使用podAffinity的资料特别少,甚至不确定这种需求到底能不能实现。

我先写了一个测试用的YAML配置,内容如下:

apiVersion: apps/v1
kind: DaemonSet
metadata:
  name: my-daemonset
  namespace: default
spec:
  selector:
    matchLabels:
      app: my-app
  template:
    metadata:
      labels:
        app: my-app
    spec:
      affinity:
        podAffinity:
          requiredDuringSchedulingIgnoredDuringExecution:
          - labelSelector:
              matchExpressions:
              - key: type
                operator: In
                values:
                - microservice
            topologyKey: "kubernetes.io/hostname"
      containers:
      - name: my-container
        image: test-image

但运行之后的结果并不符合预期:DaemonSet依然创建了和集群节点数一样多的Pod,而且这些Pod都无法被分配到任何节点上——哪怕有的节点明明运行着带有type: microservice标签的Pod。

想请教下大家,是我的配置哪里写错了?还是这种“让DaemonSet仅在存在特定Pod的节点上调度”的需求本身就无法实现?

备注:内容来源于stack exchange,提问作者Tamino Elgert

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.22 07:53:01