我正在运行一个具有 1 个主节点和 1 个节点的集群。现在,当我运行 daemon set 时,它只显示 1 个所需的节点,而它应该是 2 个。我在描述/日志中的任何地方都找不到错误,但是 daemonset 只选择 1 个节点来运行。我正在使用 Kubernetes 1.9.1。
知道我做错了什么吗?或者如何调试?TIA。
我正在运行一个具有 1 个主节点和 1 个节点的集群。现在,当我运行 daemon set 时,它只显示 1 个所需的节点,而它应该是 2 个。我在描述/日志中的任何地方都找不到错误,但是 daemonset 只选择 1 个节点来运行。我正在使用 Kubernetes 1.9.1。
知道我做错了什么吗?或者如何调试?TIA。
如果 k8s 主节点只有node-role.kubernetes.io/master: NoSchedule
污点而不容忍它,就会发生这种情况。
在the node-role.kubernetes.io/master: NoSchedule
k8s 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/中。
默认情况下,出于安全原因,您的集群不会在 master 上调度 pod。如果您希望能够在 master 上调度 pod,例如用于开发的单机 Kubernetes 集群,请运行:
kubectl taint nodes --all node-role.kubernetes.io/master-