K8S调度-标签、污点和容忍
想要让某个Pod被调度到指定的Node,最简单的方法就是给Node1打标签,Pod增加以下配置
kubectl label node <nodename> type=app-server
spec: containers: - name: myapp-container image: myregistry/myapp:v1 nodeSelector: type: app-server
但是这样无法阻止其它Pod也被调度到Node1节点,比如把Nginx服务调度到Node1节点,Tomcat服务调度到Node2节点,其它服务在没有配置容忍的情况下,不会被调度到Node1和Node2
污点(Taint)
污点是用来配置节点亲和性的,是Pod的一种属性(偏好),它使Pod被吸引到某一类特点的节点,也就是说我想让Pod被调度到指定的节点
具体方法:
1、在Node1节点添加污点设置app=nginx:NodSchedule,在Node2节点添加app=tomcat:NodSchedule
kubectl taint node node1 app=nginx:NoSchedule
kubectl taint node node2 app=tomcat:NoSchedule
2、容忍
Equal和Exists是两种不同的操作符类型:总的来说,Equal需要污点的键和值都匹配,而Exists只需要污点的键存在即可匹配,不关注其具体值
tolerations: - key: "app" operator: "Equal" value: "nginx" effect: "NoSchedule"
tolerationSeconds: 60
tolerations: - key: "app" operator: "Equal" value: "tomcat" effect: "NoSchedule"
tolerationSeconds: 60
删除节点上的污点配置
kubectl taint node node1 app=nginx:NoSchedule-
查看节点上的污点配置
kubectl describe node node1|grep taint
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· Manus爆火,是硬核还是营销?
· 终于写完轮子一部分:tcp代理 了,记录一下
· 别再用vector<bool>了!Google高级工程师:这可能是STL最大的设计失误
· 单元测试从入门到精通