<分区>
我正在运行一个包含 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
污点且不容忍,就会发生这种情况。
k8s 1.6 或更高版本需要 the node-role.kubernetes.io/master: NoSchedule
容忍度来调度主节点上的守护进程。
在 YAML 文件中为 daemonset 添加以下容忍度,使 k8s 也能在主节点上调度 daemonsets:
...
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/ 中.
关于Kubernetes ds 不会在主节点上运行 pod,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48729580/