我已使用以下设置设置了广告连播:
Node-Selectors: <none>
Tolerations: node.kubernetes.io/memory-pressure:NoSchedule
node.kubernetes.io/not-ready:NoExecute for 300s
node.kubernetes.io/unreachable:NoExecute for 60s
role_va
吊舱已调度到该节点中:
Labels: balancer=true
beta.kubernetes.io/arch=amd64
beta.kubernetes.io/os=linux
cpu_avx2=true
cpu_avx512f=true
kubernetes.io/hostname=p20b-sr3-r5-k8s-node4
master=true
worker=true
Annotations: node.alpha.kubernetes.io/ttl=0
volumes.kubernetes.io/controller-managed-attach-detach=true
Taints: <none>
请帮我理解原因。 如果我没有记错的话,必须将容忍度为“ role_va”的豆荚安排为仅仅到有此异味的节点上。 在我的情况下,该节点没有此异味,但无论如何都将吊舱调度到该节点中。为什么?
答案 0 :(得分:1)
正如 Malgorzata 所说,Taints 和 Tolerations 仅对接受某种 Pod 的节点有用。例如。具有“蓝色”污点的节点只能接受具有“蓝色”容忍度的 pod。但是,这并不意味着具有“蓝色”容忍度的 pod 只会在具有“蓝色”污点的节点中结束。 Kube-Scheduler 可能会选择任何其他没有污点的节点(因此对 pod 类型没有偏好)。
以下是实现您的要求的两种可能方法。
应用带有污点的节点和具有该容忍度的 pod。并且还为 pod 声明节点亲和性,这是 pod 在特定节点上获取调度的偏好。这两个配置一起将确保您的 pod 将被安排在特定节点上。并且该节点将只拥有具有特定容忍度的 Pod。
如果您有三个节点,请在其中一个节点上应用“蓝色”污点,在其余节点上应用“红色”污点。这将迫使具有“蓝色”容忍度的 pod 只有一种选择才能继续使用具有“蓝色”污点的节点。因为其他节点有“红色”污点,而 Pod 没有“红色”容忍度。
答案 1 :(得分:0)
您的问题的答案包含在Kubernetes文档的{strong>污染和容忍定义中:Taints and Tolerations
Kubernetes处理多个污点和容差的方式就像过滤器:从节点的所有污点开始,然后忽略吊舱具有匹配容差的污点;其余不可忽视的污渍对豆荚有明显的作用
这意味着,如果节点没有有污点,它将接受每个吊舱,无论将在其中定义什么公差。