Taints和Tolerations(污点和容忍)

Taints和Tolerations的引入


  • NodeAffinity节点亲和性,是在Pod上定义的一种属性, 使得Pod能够被调度到某些Node上运行(优先选择或强制要求)。Taint 则正好相反,它让Node拒绝Pod的运行
  • Taint需要和Toleration配合使用,让Pod避开那些不合适的Node。在 Node上设置一个或多个Taint之后,除非Pod明确声明能够容忍这些污点,否则无法在这些Node上运行。Toleration是Pod的属性,让Pod能够 (注意,只是能够,而非必须)运行在标注了Taint的Node上

可以用kubectl taint 命令为node设置Taint信息

kubectl taint nodes nodename key=value:NoSchedule

 kubectl taint nodes 192.168.8.130 version=v1:NoSchedule

查看node上面的的Taintsd

[root@promote archive]# kubectl describe nodes 192.168.8.130 |grep Taints        
Taints:             version=v1:NoSchedule

这个设置为node1加上了一个Taint。该Taint的键为key,值为 value,Taint的效果是NoSchedule。这意味着除非Pod明确声明可以容忍这个Taint,否则就不会被调度到192.168.8.130上

设置可以容忍污点使得Pod能够调度到node1上

apiVersion: v1
kind: Pod
metadata:
  labels:
    test: nginx
  name: nginx
spec:
  containers:
  - name: nginx
    image: nginx
    ports:
    - name: http
      containerPort: 80
  tolerations:
  - key: version  #key是taint key,如果该值为空匹配所有的taints的key,而且 operator的是必须为Exists
    operator: Equal # Valid operators are Exists and Equal
    value: v1
    effect: NoSchedule 

验证:
在这里插入图片描述
或者

apiVersion: v1
kind: Pod
metadata:
  labels:
    test: nginx
  name: nginx
spec:
  containers:
  - name: nginx
    image: nginx
    ports:
    - name: http
      containerPort: 80
  tolerations:
  - key: version
    operator: Exists  #可以容忍特定类别的所以污点
    effect: NoSchedule    

Pod的Toleration声明中的key和effect需要与Taint的设置保持一致, 并且满足以下条件之一
operator的值是Exists(无须指定value)
operator的值是Equal并且value相等
如果不指定operator,则默认值为Equal
◎ 空的key配合Exists操作符能够匹配所有的键和值。
◎ 空的effect匹配所有的effect。

补充:effect的值

  • effect的取值为NoSchedule,还可以取值为 PreferNoSchedule,这个值的意思是优先,也可以算作NoSchedule的软限制版本—一个Pod如果没有声明容忍这个Taint,则系统会尽量避免把 这个Pod调度到这一节点上,但不是强制的

延伸
根据上面实验,继续给node加上一个污点,根据下图发现,pod继续在原来的node上面运行
在这里插入图片描述
加上NoExecute污点,发现之前在192.168.8.130的pod,正在被驱逐。也不会在另外的node节点上面创建新的。
在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值