三种 effect 的差别
污点的作用强度由 effect 决定:影响新调度的、只是软性回避的、以及会主动驱逐存量 Pod 的。强度依次递增,使用风险也随之上升。给节点加污点前先想清楚:是只挡住新来的负载,还是要把已经在跑的业务请走。
基本信息
| 适用平台 | Kubernetes 1.20+,由调度器与节点控制器执行 |
|---|---|
| 组成 | 键、值、作用效果 |
| 配套机制 | 工作负载通过容忍匹配污点 |
| 系统污点 | 节点压力与不可达状态由系统自动维护 |
| 查看方式 | 读取节点规格中的污点字段 |
作用效果对照
| 作用效果 | 对已运行 Pod | 常见用途 |
|---|---|---|
| 不调度 | 不驱逐,仅影响新调度 | 节点专池、渐进隔离 |
| 倾向不调度 | 不驱逐,软性回避 | 空闲节点尽量少用 |
| 不执行 | 驱逐不容忍的 Pod,可用容忍时长控制 | 节点下线、故障隔离 |
查看与设置
查看与设置
kubectl get nodes -o custom-columns='NODE:.metadata.name,TAINTS:.spec.taints' # 查看现有污点
kubectl taint node node1 dedicated=gpu:NoSchedule # 只挡新调度
kubectl taint node node1 maintenance=true:NoExecute # 连存量一起请走
kubectl taint node node1 dedicated=gpu:NoSchedule- # 去掉污点
kubectl describe node node1 | grep -i taint # 确认结果典型使用场景
- 把显卡或大内存节点保留给特定业务专用
- 节点进入维护前先隔离,避免新 Pod 被调度进来
- 故障节点快速隔离:让不容忍的工作负载迁走
- 测试环境用软性回避,让普通负载尽量不去占用稀缺节点
- 区分自建集群与托管集群的系统污点,避免误删
容忍匹配之后 Pod 可以落到该节点,但不代表一定落上去。要保证专池行为,通常还需要节点亲和把工作负载拉过来,两者配合才稳定。
带驱逐效果的污点可以配容忍时长:容忍里写明的秒数表示容许继续运行的时间,超过后才被驱逐;不写这个字段则表示可以一直运行下去,节点维护时会一直等在那里。
带有驱逐效果的系统污点由节点控制器自动维护,手工删除没有实际意义:只要压力条件仍然存在,它很快会被重新加上。