是一种机制,用于标记一个节点(Node)不可被调度的状态。它可以将一个污点标记添加到节点上,以防止 Pod
被调度到该节点上。污点可以用于实现各种策略,例如分离故障节点、预留节点、限制资源等。
下面是一个使用污点的案例:
假设我们有一个 Kubernetes 集群,其中有一些节点的 CPU 和内存资源使用率较高,我们希望避免在这些节点上启动新的
Pod,以防止导致负载过高。我们可以通过在这些节点上添加污点来实现这一目标,例如:
kubectl taint nodes cpu=high:NoSchedule
kubectl taint nodes memory=high:NoSchedule
这将在节点上添加两个污点:cpu=high 和 memory=high,它们的值都是 NoSchedule,表示任何带有这些污点的 Pod
都不能被调度到这些节点上。
然后,我们可以在需要避免这些节点的 Pod 上添加对应的容忍度(toleration),例如:
apiVersion: v1
kind: Pod
metadata:name: my-pod
spec:containers:- name: my-containerimage: my-imagetolerations:- key: cpuoperator: Equalvalue: higheffect: NoSchedule- key: memoryoperator: Equalvalue: higheffect: NoSchedule
这个 Pod 的 toleration 指定了,只有当它的 cpu 和 memory 污点值为 NoSchedule
时,才能被调度到节点上。
通过这种方式,我们就可以通过使用污点和容忍度来控制 Pod 的调度,避免将 Pod 分配到负载过高的节点上。