欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 财经 > 创投人物 > k8s的污点与容忍度

k8s的污点与容忍度

2025/2/25 20:25:13 来源:https://blog.csdn.net/weixin_65562581/article/details/144413523  浏览:    关键词:k8s的污点与容忍度

污点(Taint)针对节点来说,和节点亲和性正好相对,节点亲和性使Pod被吸引到一类特定的节点,而污点则使节点能够排斥一类特定的Pod。

容忍度(Toleration)应用于Pod上,它用来允许调度器调度带有对应污点的节点。 容忍度允许调度但并不保证调度:作为其功能的一部分, 调度器也会评估其他参数。

污点和容忍度(Toleration)相互配合,可以避免Pod被分配到不合适的节点上。 每个节点上都可以应用一个或多个污点,这表示对于那些不能容忍这些污点的Pod, 是不会被该节点接受的。

设置污点命令格式:
kubectl taint node [node] key=value:[effect]说明:
其中[effect] 可取值:[ NoSchedule | PreferNoSchedule | NoExecute ]:
NoSchedule :一定不能被调度,已经在运行中的Pod不受影响。
PreferNoSchedule:尽量不要调度,实在没有节点可调度再调度到此节点。
NoExecute:不仅不会调度,还会驱逐Node上已有的Pod。清除污点命令格式:
kubectl taint node [node] key:[effect]-示例:
kubectl taint node k8s-worker1  name=liing:NoSchedule
root@k8s-master:/home/vagrant# kubectl describe nodes k8s-worker1 |grep Taint -A 5
Taints:             name=liing:NoSchedule
Unschedulable:      false
Lease:HolderIdentity:  k8s-worker1AcquireTime:     <unset>RenewTime:       Thu, 12 Dec 2024 00:40:43 +0800

设置容忍度的几种规则:
 

1)完全匹配
tolerations:
- key: "taintKey"      #和污点的key名字保持一致operator: "Equal"    #匹配类型,Equal表示匹配污点的所有值value: "taintValue"  #和污点key的值保持一致effect: "NoSchedule" #污点类型
说明:
Pod 的 Toleration 声明中的key和effect需要与Taint的设置保持一致。
Operator如果设置为Equal,则key和value,要和Taint的设置保持一致。2)不完全匹配
tolerations:
- key: "taintKey"      #和污点的key名字保持一致operator: "Exists"   #匹配类型,只要符合污点设置的key即可effect: "NoSchedule" #污点的类型
Operator如果设置为Exists,则不需要指定value,只看key名字3)大范围匹配
tolerations:
- key: "taintKey"      #和污点的key名字保持一致operator: "Exists"   
说明:
如果不设置effect,则只需要看key名字即可,不管Taint里的effect设置为什么都会匹配到4)匹配所有
tolerations:
- operator: "Exists"  
说明:
如果省略key和effect,则匹配所有Taint, 在k8s中的daemonsets资源默认情况下是容忍所有污点的。驱逐延缓时间设置
tolerations:
- key: "key1"operator: "Equal"value: "value1"effect: "NoExecute"tolerationSeconds: 3600说明:
如果这个Pod 正在运行,那么Pod还将继续在节点上运行3600秒,然后被驱逐。 如果在此之前上述污点被删除了,则Pod不会被驱逐。

完整Pod YAML示例:

vi pod.yamlapiVersion: v1
kind: Pod
metadata:name: nglabels:env: dev
spec:containers:- name: ngimage: nginx:1.21.0tolerations:- key: nameoperator: Existseffect: NoSchedule
root@k8s-master:/home/vagrant# kubectl taint node k8s-worker2 disk=vmve:NoSchedule
node/k8s-worker2 tainted
root@k8s-master:/home/vagrant# kubectl taint node k8s-worker1 name=liing:NoSchedule
node/k8s-worker1 tainted
root@k8s-master:/home/vagrant# kubectl create -f pod.yaml 
pod/ng created
root@k8s-master:/home/vagrant# kubectl get -f pod.yaml -o wide
NAME   READY   STATUS    RESTARTS   AGE   IP              NODE          NOMINATED NODE   READINESS GATES
ng     1/1     Running   0          11s   172.16.194.66   k8s-worker1   <none>           <none>

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com

热搜词