k8s的pod调度之污点与污点容忍以及pod指定调度

目录

k8s的污点介绍

Taints案例,给节点添加污点

污点容忍, Tolerations

案例

删除污点

nodeName


k8s的污点介绍

         基于节点标签分配是站在Pod的角度上,通过在Pod上添加属性,来确定Pod是否要调度到指定的Node上,其实我们也可以站在 Node的角度上,通过在Node上添加污点属性,来避免Pod被分配到不合适的节点上。
          Taints:避免Pod调度到特定Node上 
         Tolerations:允许Pod调度到持有Taints的Node上
注意:master默认有污点,主要原因是处于安全性考虑,可以让master节点不运行业务容器

Taints案例,给节点添加污点

第一步:给节点添加污点 
格式:
kubectl taint node [node] key=value:[effect] 
例如:
kubectl taint node k8s-node1 gpu=yes:NoSchedule 

查看污点命令:
 kubectl describe node |grep Taint

验证:
kubectl describe node k8s-node1 |grep Taint
其中[effect] 可取值: 
• NoSchedule :一定不能被调度(新来的不要来,在这的就别动了)
 • PreferNoSchedule:尽量不要调度(尽量不要来,除非没办法) 
• NoExecute:不仅不会调度,还会驱逐Node上已有的Pod(新的不 要来,在这的赶紧走)
新建一个pod测试
kubectl run pod1 --image=nginx
自动被分配到了没有污点的node2
注意:如果所有节点都有污点,那新建pod状态会为pending,无法被分配
用途:一般作为负载比较多了的节点打上污点不让节点在分配

污点容忍, Tolerations

污点容忍是指在写pod的yaml文件时,写入污点容忍配置来允许pod被分配到已经打了污点的节点上
添加污点容忍(tolrations)字段到Pod配置中

案例

先把所有节点打上污点
写入一个创建pod的yaml,yaml的逻辑是将pod分配到一个污点名为tt,值为vv2的节点上去
apiVersion: v1
kind: Pod
metadata:
  creationTimestamp: null
  labels:
    run: pod1
  name: pod-tolerations
spec:
  tolerations:
  - key: "tt"
    operator: "Equal"
    value: "vv2"
    effect: "NoSchedule"
  containers:
  - image: nginx  # 主容器
    name: web
其中,作为污点容忍的主要是这一句
  tolerations:
  - key: "tt"
    operator: "Equal"
    value: "vv2"
    effect: "NoSchedule
可以看到,pod被分配到已经打了污点的node2上

删除污点

kubectl taint node [node] key:[effect]-

例如
kubectl taint node k8s-node1 tt:NoSchedule-

nodeName

nodeName:指定节点名称,用于将Pod调度到指定的Node上,不经过调度器。
使用场景:一般做测试用
案例:
apiVersion: v1
kind: Pod
metadata:
  creationTimestamp: null
  labels:
    run: pod1
  name: pod-nodename
spec:
  nodeName: k8s-node1
  containers:
  - image: nginx  # 主容器
    name: web
负责调度的是这一句,因为直接指定节点,所以不经过调度器,污点以及标签适配对他无效,直接被分配到指定的node1
nodeName: k8s-node1
  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值