使用 nodeSelector 的 Kubernetes FailedScheduling

Kubernetes FailedScheduling using nodeSelector

我已经使用 Rancher 设置了一个 On-Prem Kubernetes 集群,有 3 个 Centos 节点和 1 个 Windows 节点。 我想在 Windows 节点上设置一个永远不会 运行 的 Deployment,所以我在 Deployment spec.template.spec.nodeSelector: kubernetes.io/os: linux

似乎 运行 但部署卡在待定状态,并出现此错误:

Warning FailedScheduling default-scheduler 0/4 nodes are available: 1 node(s) didn't match node selector, 3 node(s) had taint {cattle.io/os: linux}, that the pod didn't tolerate.

有什么见解吗?

调度程序无法在 linux 个节点上调度 pod,因为这些节点有污点。所以需要在deployment的pod spec中添加tolerations

  tolerations:
  - key: "cattle.io/os"
    operator: "Equal"
    value: "linux"
    effect: "NoSchedule"

同时向 windows 节点添加特定污点,以便只有具有特定容忍度的特定 pods 才能调度到 windows 节点

kubectl taint nodes windowsnode cattle.io/os=windows:NoSchedule