kubectl describe pod <pod-name> 命令,则获取到的事件信息如下:$ kubectl describe pod tikv-0...Events:Type Reason Age From Message---- ------ ---- ---- -------Warning FailedScheduling 3m (x106 over 33m) default-scheduler 0/4 nodes are available: 1 node(s) had no available volume zone, 2 Insufficient cpu, 3 Insufficient memory.
kubectl describe node <node-name>
Allocatable:表示此节点能够申请的资源总和。Allocated resources:表示此节点已分配的资源(Allocatable 减去节点上所有 Pod 总的 Request)。nodeAffinity:节点亲和性,可以看作增强版的 nodeSelector,用于限制 Pod 只允许被调度到某一部分符合条件的 Node。podAffinity:Pod 亲和性,用于将一系列有关联的 Pod 调度到同一个地方,即同一个节点或同一个可用区的节点等。podAntiAffinity:Pod 反亲和性,防止某一类 Pod 调度到同一个地方,可以有效避免单点故障。例如,将集群 DNS 服务的 Pod 副本分别调度到不同节点,可避免因一个节点出现故障而造成整个集群 DNS 解析失败,甚至使业务中断。kubectl describe node <node-name> 命令查看 Node 已设置污点。示例如下:$ kubectl describe nodes host1...Taints: special=true:NoSchedule...
special。kubectl taint nodes host1 special-
nginx)添加容忍为例。nginx 所在的云服务器。 kubectl edit deployment nginx
template 中的 spec 处添加容忍。例如,增加已存在 special 污点所对应的容忍:tolerations:- key: "special"operator: "Equal"value: "true"effect: "NoSchedule"

kube-scheduler 的 bug 导致的,该情况可以通过升级调度器版本进行解决。kube-scheduler 是否运行正常,如异常可尝试重启临时恢复。$ kubectl taint node host1 special=true:NoSchedulenode "host1" tainted
node.kubernetes.io/unschedulable 污点。TaintNodesByCondition 特性,controller manager 将会检查 Node 的 Condition。Node 运行状态异常时,当检查的 Condition 符合如下条件(即符合 Condition 与 Taints 的对应关系),将自动给 Node 加上相应的污点。
例如,检查 Condition 为 OutOfDisk 且 Value 为 True,则 Node 会自动添加 node.kubernetes.io/out-of-disk 污点。
Condition 与污点的对应关系如下:Conditon Value Taints-------- ----- ------OutOfDisk True node.kubernetes.io/out-of-diskReady False node.kubernetes.io/not-readyReady Unknown node.kubernetes.io/unreachableMemoryPressure True node.kubernetes.io/memory-pressurePIDPressure True node.kubernetes.io/pid-pressureDiskPressure True node.kubernetes.io/disk-pressureNetworkUnavailable True node.kubernetes.io/network-unavailable
OutOfDisk 为 True,表示节点磁盘空间不足。Ready 为 False,表示节点不健康。Ready 为 Unknown,表示节点失联。在 node-monitor-grace-period 所确定的时间周期内(默认40s)若节点没有上报状态,controller-manager 就会将 Node 状态置为 Unknown。MemoryPressure 为 True,表示节点内存压力大,实际可用内存很少。PIDPressure 为 True,表示节点上运行了太多进程,PID 数量不足。DiskPressure 为 True,表示节点上的磁盘可用空间不足。NetworkUnavailable 为 True,表示节点上的网络没有正确配置,无法跟其他 Pod 正常通信。node.cloudprovider.kubernetes.io/uninitialized 污点,待节点初始化成功后再自动移除此污点,以避免 Pod 被调度到未初始化好的节点。文档反馈