kubernetes 可以用podAffinity调度DaemonSet吗?

cnh2zyt3  于 2023-10-17  发布在  Kubernetes
关注(0)|答案(2)|浏览(109)

我想在某些特定Pod/Service所在的特定节点上调度DaemonSet。我的想法是,我可以在Pod上标记特定的标签'app.type=with-aemon',然后我可以在daemoSet中指定PodAffinity,如下所示:

spec:
      affinity:
        podAffinity:
          requiredDuringSchedulingIgnoredDuringExecution:
          - labelSelector:
              matchExpressions:
              - key: app.type
                operator: In
                values:
                - with-daemon
            topologyKey: "kubernetes.io/hostname"

我确实看到DaemonSet Pod在特定节点中运行,但我也看到k8尝试在所有其他节点中调度DaemonSet Pod,因此这些Pod状态始终为Pending。
所以我的问题是:k8s支持用podAffinity调度DaemonSet吗?我的上述用法是一种常见用法吗?

cyvaqqii

cyvaqqii1#

通常,守护程序设置默认行为是在所有可用节点上进行调度,但设置了污点的节点除外。
我正在使用污点+节点亲和性在特定节点类型上调度POD,但在这种情况下使用部署比使用Daemonset更好。
在您的用例中,您可以使用Pod affinityAnti-affinity,如果希望特定的POD与特定类型的POD一起运行。

例如:如果你想在节点上分散POD,并在连接了GPU的节点上运行,那么你可以使用节点亲和度+污点+ POD反亲和度的多个选项。

但是使用Daemonset将是一个坏主意,除非您需要在所有可用节点上运行或在扩展期间加入新节点。

sc4hvdpw

sc4hvdpw2#

一个DaemonSet,就其本质而言,被调度到每个节点上(除了有污点的地方,在这种情况下,你需要有一个宽容来覆盖它)
如果您希望这些pod位于特定节点上,DaemonSet不是要使用的正确资源,您需要Deployment或StatefulSet。

相关问题