调度程序不在主节点中为DaemonSet调度Pod

时间:2018-01-29 06:06:10

标签: kubernetes daemonset

我想部署DaemonSet以进行监控。所以这些Pod需要部署在所有节点中。

  

DaemonSet确保所有(或某些)节点都运行Pod的副本。

我正在使用DaemonSet,以便所有节点都能获得副本。

    spec:
      containers:
      - name: fluentd
        image: aerocloud.io/containers/fluentd:0.0.1
        volumeMounts:
        - name: varlog
          mountPath: /var/log
      volumes:
      - name: varlog
        hostPath:
          path: /var/log

当我在Kubernetes集群中创建此DaemonSet时,我看不到Pod在我的主节点中运行。

此DaemonSet的Pod正在除主节点之外的所有节点中运行。

我在这里缺少什么?如何强制调度程序在主节点中安排Pod?

1 个答案:

答案 0 :(得分:13)

自Kubernetes 1.6起,DaemonSet默认情况下不会在主节点上进行调度。为了在master上安排它,你必须在Pod规范部分添加一个容忍:

tolerations:
- key: node-role.kubernetes.io/master
  effect: NoSchedule

有关更多详细信息,请查看Kubernetss DeamonSet docu中的示例YAML文件。在如何守望守护程序 一章中也提到了它。