Kubernetes(k8s)之容忍与污点

发布于:2025-08-07 ⋅ 阅读:(18) ⋅ 点赞:(0)

上节我们分享了k8s之调度的知识,今天学习容忍与污点技术。持续更新,敬请关注!

Taint(污点) 则正好相反,它让Node拒绝Pod的运行。简单地说,被标记为Taint的节点就是存在问题的节点,比如磁盘要满、资源不足、存在安全隐患要进行升级维护,希望新的Pod不会被调度过来。

但被标记为Taint的节点并非故障节点,仍是有效的工作节点,所以仍需将某些Pod调度到这些节点上时,可以通过使用Toleration属性来实现。

01污点容忍设置

在默认情况下,在Node上设置一个或多个Taint之后,除非Pod明确声明能够容忍这些污点,否则无法在这些Node上运行。

[root@master ~]# kubectl describe node masterName: masterRoles: masterLabels: beta.kubernetes.io/arch=amd64beta.kubernetes.io/os=linuxkubernetes.io/hostname=masternode-role.kubernetes.io/master=......Taints: node-role.kubernetes.io/master:NoScheduleUnschedulable: false

可以使用上面的命令查看 master 节点的信息,其中有一条关于 Taints 的信息:noderole.kubernetes.io/master:NoSchedule,就表示给 master 节点打了一个污点的标记,其中影响的参数是NoSchedule,表示 pod 不会被调度到标记为 taints 的节点。

Node设置污点

可以用kubectl taint命令为Node设置Taint信息:

kubectl taint nodes node1 key=value:NoSchedule

备注:这个设置为node1加上了一个Taint,该Taint的键为key,值为value,Taint的效果是NoSchedule,这意味着除非Pod明确声明可以容忍这个Taint,否则不会被调度到node1上。​​​​​​​

# 设置污点并不允许 Pod 调度到该节点$ kubectl taint node k8s-master key1=value1:NoSchedule# 设置污点尽量阻止污点调度到该节点$ kubectl taint node k8s-master key2=value2:PreferNoSchedule# 设置污点,不允许普通 Pod 调度到该节点,且将该节点上已经存在的 Pod 进行驱逐$ kubectl taint node k8s-master key3=value3:NoExecute

删除污点


网站公告

今日签到

点亮在社区的每一天
去签到