有没有办法仅在具有活动部署的节点上部署DaemonSet?

问题描述 投票:0回答:2

我正在我的命名空间下部署我的服务。我们有一个工作节点群,我的服务将仅利用其节点的一小部分。

我想部署 cAdvisor 的 DaemontSet,但我只希望它们在与我的命名空间无关的节点中运行。如果可以的话,该怎么做?

谢谢!

kubernetes cadvisor
2个回答
2
投票

ScheduleDaemonSetPods
是一项 kubernetes 功能,允许您使用默认调度程序而不是 DaemonSet 控制器来调度 DaemonSet,方法是将
NodeAffinity
项添加到 DaemonSet pod,而不是
.spec.nodeName
项。 Kubernetes 文档

例如,下面的 k8s 清单将在带有

type=target-host-name
的节点上创建 Pod:

apiVersion: apps/v1
kind: DaemonSet
metadata:
  name: testdaemon
spec:
  template:
    metadata:
      labels:
        app: testdaemon
    annotations:
    spec:
      affinity:
        nodeAffinity:
          requiredDuringSchedulingIgnoredDuringExecution:
            nodeSelectorTerms:
            - matchExpressions:
              - key: type
                operator: In
                values:
                - target-host-name
      containers:
      - name: testdaemon
        image: nginx

-2
投票

DaemonSet 每个节点运行一个 pod。但是,您也可以控制它在选定的节点上运行。

如果指定 .spec.template.spec.nodeSelector,则 DaemonSet 控制器将在与该节点选择器匹配的节点上创建 Pod。

同样,如果您指定 .spec.template.spec.affinity,则 DaemonSet 控制器将在与该节点亲和力匹配的节点上创建 Pod。

如果您两者都不指定,则 DaemonSet 控制器将在所有节点上创建 Pod。

© www.soinside.com 2019 - 2024. All rights reserved.