2

我正在运行一个具有 1 个主节点和 1 个节点的集群。现在,当我运行 daemon set 时,它只显示 1 个所需的节点,而它应该是 2 个。我在描述/日志中的任何地方都找不到错误,但是 daemonset 只选择 1 个节点来运行。我正在使用 Kubernetes 1.9.1。

知道我做错了什么吗?或者如何调试?TIA。

4

2 回答 2

18

如果 k8s 主节点只有node-role.kubernetes.io/master: NoSchedule污点而不容忍它,就会发生这种情况。

the node-role.kubernetes.io/master: NoSchedulek8s 1.6 或更高版本中需要容忍以在主节点上调度守护进程。

在 YAML 文件中为守护程序集添加以下容忍度,以使 k8s 在主节点上调度守护程序集:

...
kind: DaemonSet
spec:
  ...
  template:
   ...
    spec:
      tolerations:
      - key: node-role.kubernetes.io/master
        effect: NoSchedule

可以通过以下方式检查主节点的污点:

kubectl describe node <master node>

可以通过以下方式检查 pod 的容差:

kubectl describe pod <pod name>

有关 daemonsets 的更多信息在https://kubernetes.io/docs/concepts/workloads/controllers/daemonset/中。

于 2018-02-11T08:33:23.040 回答
9

默认情况下,出于安全原因,您的集群不会在 master 上调度 pod。如果您希望能够在 master 上调度 pod,例如用于开发的单机 Kubernetes 集群,请运行:

kubectl taint nodes --all node-role.kubernetes.io/master-

于 2018-02-11T08:17:52.693 回答