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

 

posted @   吃吃吃大王  阅读(122)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· Manus爆火,是硬核还是营销?
· 终于写完轮子一部分:tcp代理 了,记录一下
· 别再用vector<bool>了!Google高级工程师:这可能是STL最大的设计失误
· 单元测试从入门到精通
点击右上角即可分享
微信分享提示