十、Kubernetes调度-污点和容忍Taint&Toleration

NodeAffinity节点亲和性,是在Pod上定义的一种属性,使得Pod能够被调度到某些Node上运行(优先选择或强制要求)。Taint则正好相反,它让Node拒绝Pod的运行。简单地说,被标记为Taint的节点就是存在问题的节点,比如磁盘要满、资源不足、存在安全隐患要进行升级维护,希望新的Pod不会被调度过来,但被标记为Taint的节点并非故障节点,仍是有效的工作节点,所以仍需将某些Pod调度到这些节点上时,可以通过使用Toleration属性来实现。

在默认情况下,在Node上设置一个或多个Taint之后,除非Pod明确声明能够容忍这些污点,否则无法在这些Node上运行。


一、容忍和污点Taint和Toleration

官 方 文 档
https://kubernetes.io/docs/concepts/scheduling-eviction/taint-and-toleration/

设计理念
Taint(锁)污点在一类服务器上打上污点, 作用在节点上,让不能容忍这个污点的Pod不能部署在打了污点的服务器上。

Toleration(钥匙)容忍是让Pod容忍节点上配置的污点, 作用在pod上,可以让一些需要特殊配置的Pod能够调用到具有污点和特殊配置的节点上。

生产环境并非随便调度
在这里插入图片描述

部署容忍和污点Taint和Toleration
在这里插入图片描述

二、Taint配置解析

创建一个污点(一个节点可以有多个污点)如果node节点上有多个Taint,每个Taint都需要容忍才能部署上去。

示例:

kubectl taint nodes NODE_NAME TAINT_KEY=TAINT_VALUE:EFFECT

# 举例:
# kubectl taint nodes k8s-node01 ssd=true:NoSchedule

[root@k8s-master01 taint]#kubectl taint nodes k8s-node01 ssd=true:NoSchedule
node/k8s-node01 tainted

该Taint的键为ssd,值为true,Taint的效果是NoSchedule。这意味着除非Pod明确声明可以容忍
这个Taint,否则不会被调度到node1上。


重要解释:

  • NoSchedule:禁止调度到该节点,已经在该节点上的Pod不受影响。

  • NoExecute:禁止调度到该节点,如果不符合这个污点,会立马被驱逐(或在一段时间后)。

  • PreferNoSchedule:尽量避免将Pod调度到指定的节点上,如果没有更合适的节点,可以部署到该节点。

  • tolerationSeconds:它指的是Pod能够容忍某个节点污点的时间长度。


三、Toleration配置解析

作用在pod上

方式一:完全匹配,key和value、effect都和taint一样

tolerations:
- key: "taintKey"
  operator: "Equal"
  value: "taintValue"
  effect: "NoSchedule"

方式二:不完全匹配,只需要key和effect就可以,不需要匹配value。比如GPU,可能有很多种类。

tolerations:
- key: "taintKey"
  operator: "Exists"
  effect: "NoSchedule"  

方式三:大范围匹配,只需匹配key,(不推荐key为内置Taint

- key: "taintKey"
  operator: "Exists"

方式四:匹配所有(不推荐)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Cyan_Jiang

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值