Taints 与 Tolerations
2018-10-09 11:27
519 查看
节点亲和性是描述Pods如何分配到一个或一组节点的策略,与之相反 Taints 描述节点拒绝一个或一组Pods的策略。其实现原理为首先通过
kubectl taint命令为Node定义一些瑕疵,然后在Pod的描述文件中指定它的容忍度,即不能够容忍哪些瑕疵,这样在调度的时候Pod将不会被调度到哪些有瑕疵的Node上。
1. 设置与解除Taint
kubectl taint nodes node1 key=value:NoSchedule
这个命令的效果是任何Pod不会被调度到节点node1上,除非这个Pod具有相应的toleration。
通过下面的命令,可以删除这个策略。
kubectl taint nodes node1 key:NoSchedule-
2. 定义 Toleartions
tolerations: - key: "key" operator: "Equal" value: "value" effect: "NoSchedule"
tolerations: - key: "key" operator: "Exists" effect: "NoSchedule"
上面两个例子表示如果某个Node存在
key=value的瑕疵或者存在
key的瑕疵,Pod将不会调度到这样的节点。effect共有三个选项:
- NoSchedule
- NoExecute
- PreferNoScheduled,软性的限制,避免向有瑕疵的节点调度,但不是强制条件
在书写tolerations的时候有两种特殊情况:一是key为空operator为Exists,这种情况匹配所有的keys、values和effects,即对所有的瑕疵都无法忍受;二是effect为空,匹配所有key的瑕疵。
可以向单个Pod和Node增加多个tolerations和taints,Kubernetes采用类似过滤器的方式进行处理,首先遍历Node上的Taints,并与Pod的tolerations做匹配,如果有匹配的项目则忽略,最后根据剩下为匹配到的taints做判断:
- 如果至少有一个未匹配到的taints的效果是NoSchedule,则Pod不会被调度到Node上
- 如果仅有一个未匹配到的taints的效果是PreferNoSchedule,则尽量不向这个Node调度
- 如果至少有一个未匹配到的taints的效果是NoExecute,则Pod不会被调度到Node上,已经在Node上运行的Pod会被驱逐。通常,一个NoExcute添加到节点后,不能容忍的Pod会被立即驱逐,可以通过
tolerationSeconds
设置延时驱逐。
3. 例子
Taints和tolerations是避免Pods部署到Node,以及从Node中驱离Pod的灵活方法,有一些应用场景:
- 专用节点 Dedicated Nodes
- 特殊硬件的节点
- 节点出问题时进行Pod的驱逐(alpha特性)
在1.12版本中 TaintNodesByCondition 特性已经提升为 beta。
参考资料
相关文章推荐
- raid5磁盘阵列有3块硬盘掉线的解决方案-raid数据恢复案例
- 人工智能与未来工作
- 【ai·ps·word字体问题】
- Promise原理讲解 async+await应用(异步回调解决方案)
- 646. Maximum Length of Pair Chain
- 关于navicat ssh连接中ssh tunnel:the negotiation of encryption is failed的问题
- 单调队列(滑动窗口):纪念我因head tail的WA
- HDU-2473 Junk-Mail Filter(并查集删除节点)
- 人工智能非技术从业者必知的十件事
- LeetCode Day9 container_with_most_water
- 各位大佬,别再拿人工智能当春药了!
- 进程间操作 raise 与 kill
- 【问题解决:死锁】Lock wait timeout exceeded; try restarting transaction的问题
- 田奇:行人再识别的挑战和最新进展
- JedisDataException: ERR invalid longitude,latitude pair 0.589246,85.149780
- LeetCode-Algorithms #007 Reverse Integer, Database #182 Duplicate Emails
- 解决mei_me 0000:00:16.0:initialization failed.错误
- 使用UltraISO制作U启
- 人工智能在硬件及芯片层面不断创新被广泛应用的各个领域
- ChainLink 预言机已有测试版本|标准共识评级