概念

先来看一个容忍标记和污点标记的调度关系图:

  • 与 亲和性(点击查看) 不同的是:Taints(污点)恰恰相反,它可以 Pod 不被调度到污点 Node,甚至将已经在污点中运行的 Pod 驱逐掉。

  • Taints(污点)是Node的一个属性,设置了 Taints 后,因为有了污点,所以 Kubernetes 是不会将Pod调度到这个Node上的,但是有时候我们还想让系统稍微 “人情化/灵活一些”,于是Kubernetes又给Pod设置了 Tolerations(容忍)这样的属性,只要 Pod 能够容忍Node上的污点,那么Kubernetes就会忽略Node上的污点,就还是能够(不是必须)把Pod调度过去。

  • 因为污点默认排斥所有Pod的特性,我们有时候可以反向利用一下这个规则。比如给某一个特定Node标记污点后,然后给特定的Pod设置对应的容忍规则,来实现让这个Node只给这个Pod使用的目的(就好比一个集群里有100个Node,如果使用亲和性来实现,你得为99台机器设定规则,而使用 “污点+容忍度+亲和性组合配置相应的策略” 就可以只处理1台机器的规则就可以了)。

  • Taints 通常与 Tolerations 配合使用。

实例

污点

1、设置污点

语法:kubectl taint nodes [node_name] key=value:[effect]

其中[effect] 可取值 NoSchedulePreferNoScheduleNoExecute

  • NoSchedule:Pod 不会被调度到标记为 Taints 节点,只会影响新的 Pod 调度,当前已经在Node上的 Pod 保持不受影响。

  • PreferNoSchedule:这是一个NoSchedule 的软策略版本,系统会尽量(非强制)避免在节点上放置一个不能容忍污点的 Pod。

  • NoExecute:该选项意味着一旦 Taint 生效,如该节点内正在运行的 Pod 没有对应 Tolerations 设置,会直接被逐出。

示例:kubectl taint node myk8s-node1 test=node1:NoSchedule

一个 node 上可以设置多个污点标记。

2、查看已经设置的污点

语法:kubectl describe node [node_name]

在输出的信息中查看 Taints 信息

示例:kubectl describe node myk8s-node1

3、删除污点

语法:kubectl taint nodes [node_name] key[:effect]-

去除污点标记,使用对应规则后增加一个 “减号符号”,根据 key及effect 信息去除,不需要指定 value,有两种去除方式:

示例:
1、去除指定 key 下的指定 effect 类型的污点:kubectl taint nodes myk8s-node1 test:NoSchedule-
2、去除指定 key 下的所有污点:kubectl taint nodes myk8s-node1 test-

Pod 容忍度

1、规则说明

对于 tolerations 属性的写法,主要包括 key、operator、value、effect、 五个字段,其中 key、value、effect 这3个字段要与 Node 中设置的 Taint 保持一致。

其中 operator 对应 Exists 和 Equal 可选,要点如下:

  • 如果 operator 的值是Exists(存在),则 value 属性不应该提供。

  • 如果 operator 的值是Equal(等于),则表示其 key 和 value 应分别等于 Node 中 Taint 的 key 和
    value 才表示规则对应。

  • 如果不指定operator属性,则默认值为Equal。

另外,还有两个特殊情况:

  • 空的 key 如果再配合 Exists 就能匹配所有的key与value ,也是是能容忍所有 node 的所有 Taints。

  • 空的 effect 匹配所有的 effect。

最后,字段 tolerationSeconds 为可选字段(应对 NoExecute 规则的污点),用来设置当规则符合驱逐条件的情况下,Pod 还可以在这个 Node 之上运行多久,给它们一点宽限的时间,到时间才驱逐(默认是立即驱逐)。

2、Pod 配置示例

spec:tolerations:- key: "test"operator: "Equal" #如果操作符为Exists,那么 value 属性不应该提供value: "node1"effect: "NoExecute"tolerationSeconds: 180  # 符合强制驱逐条件下,宽限时间为180秒- key: "test1"  # 必须不能调度到污点配置 “存在test1这个key” 的节点上operator: "Exists" effect: "NoSchedule"- key: "test2"  # 必须不能调度到污点配置 “test2=node99” 的节点上operator: "Equal"value: "node99"effect: "NoSchedule"- key: "test3"  # 尽量不要调度到污点配置 “test3=node88” 的节点上operator: "Equal"value: "node88"effect: "PreferNoSchedule"

(END)

K8s 污点(Taints)与容忍(Tolerations)相关推荐

  1. Kubernetes 污点 Taint 和容忍 Toleration

    参考地址: kubernetes 官方文档 Taint And Toleration 系统环境: kubernetes 版本:1.16.6 一.介绍 在 Kubernetes 中,节点亲和性 Node ...

  2. Kubernetes K8S之Taints污点与Tolerations容忍详解

    Kubernetes K8S之Taints污点与Tolerations容忍详解与示例 主机配置规划 服务器名称(hostname) 系统版本 配置 内网IP 外网IP(模拟) k8s-master C ...

  3. 【项目实战23】k8s(9)—k8s调度(节点亲和性,Taint污点,pod容忍性)

    k8s调度 一.k8s调度背景介绍 二.nodeName方式调度 三.nodeSelector方式调度 (1).使用方式 (2).节点亲和性 四.Taints污点 (1).介绍 (2).使用 五.to ...

  4. 为k8s-master节点添加/移除污点taints

    手动部署的k8s集群, 需要为master节点手动设置taints 设置taint 语法: kubectl taint node [node] key=value[effect] 其中[effect] ...

  5. Kubernetes资源调度之污点与Pod容忍度

    Kubernetes资源调度之污点与Pod容忍度 概述 污点是定义在节点之上的键值型属性数据,用于让节点有能力主动拒绝调度器将Pod调度运行到节点上,除非该Pod对象具有接纳节点污点的容忍度.容忍度( ...

  6. Kubernetes调度器-Pod分配给节点(Taint污点和Toleration容忍)

    Taint和Toleration 节点亲和性是pod的一种属性(偏好或硬性要求),它使pod被吸引到一类特定的节点.Taint则相反,它使节点能够排斥一类特定的pod. Taint和toleratio ...

  7. 节点污点 Taint 和容忍度 Toleration在生产中的使用

    目录 一.前言 二.节点设置taints 1.设置taint 2.查看taint 3.删除taint 三.配置toleration及测试 1.没配置tiant时,Pod正常调度 2.配置taint时, ...

  8. k8s污点容忍度概念介绍

    1. 概念介绍 污点(Taint) 应用于node身上,表示该节点有污点了,如果不能忍受这个污点的pod,你就不要调度/运行到这个节点上.如果是不能运行到这个节点上,那就是污点驱逐了. 容忍度(Tol ...

  9. K8S 污点和容忍度

    污点和容忍度 节点亲和性(详见这里) 是 Pod 的一种属性,它使 Pod 被吸引到一类特定的节点. 这可能出于一种偏好,也可能是硬性要求. Taint(污点)则相反,它使节点能够排斥一类特定的 Po ...

最新文章

  1. CF1406D:Three Sequences(贪心、构造)
  2. JDK源码学习笔记——TreeMap及红黑树
  3. mybatis 不同格式日期比较大小_怎样创建一个命令函数来获得不同国家和应用程序所要求的大多数日期格式...
  4. Qt4_派生对话框类
  5. [转载] 如何用一个Python示例入门TensorFlow?
  6. 关于STM32L100xx, STM32L151xx, STM32L152xx ,STM32L162xx 的Power Control
  7. php酒店预订源码,如家快捷酒店预订源码 for php
  8. puzzle(102)数独
  9. SDL_ttf库显示字体
  10. FOC控制中电流环带宽
  11. PTA求100以内的素数
  12. Redis-NoSql结构化数据库
  13. c语言 重新输入,C语言函数重新输入
  14. tomcat配置-超有效-80岁奶奶用了都说好
  15. java从零到项目实战(八)
  16. 计算机的发展史英语作文,选择一种计算机英语作文:求一篇关于计算机发展史的英语作文...
  17. linux 移动某个文件夹及其所有子文件夹内指定类型的文件
  18. 使用 easypoi 导出 excel 实现动态列,完美解决!
  19. 纯CSS3实现3D动画导航,html5 webRTC技术实现免费网页电话拨打
  20. realtek高清晰音频管理器没有声音设置?

热门文章

  1. 24. 两两交换链表中的节点-两两反转链表-LeetCode
  2. 无线上网设备大集合,看看你的设备最适合哪种?
  3. 【链表】两个无序链表合并成递增有序链表(利用原表空间)
  4. mysql创建表说明_MYSQL库表的创建以及说明
  5. 一个隐藏在角落的文章
  6. H.266/VVC测试软件VTM
  7. 2022稳定学习年度研究进展系列报告丨精华观点总结
  8. 在Illustrator和手绘文章中创建矢量图形
  9. linux pptpd源码,Centos 7 源码安装pptpd
  10. 初一数学绩差,需要补习初一数学吗?