目录

一、前言

二、节点设置taints

1、设置taint

2、查看taint

3、删除taint

三、配置toleration及测试

1、没配置tiant时,Pod正常调度

2、配置taint时,不配置容忍度 toleration

3、配置tolerations

四、总结


一、前言

在生产环境使用中,有时会遇到一些使用场景需求,当集群中存在多种节点类型的情况,如master节点、ssd硬盘类型的node节点,或者是高计算性能的node节点,这个时候,只想某些节点上只运行指定类型的pod,不想让其它pod调度到这些节点上,则可以使用节点污点(Taint)的方式,配合容忍度(Toleration),实现指定节点只运行特定类型的pod服务。

小结如下:

节点污点(Taint):使节点能够排斥特定的 Pod

容忍度(Toleration):应用于 Pod 上,允许Pod 调度到带有与之匹配的污点的节点上。

污点和容忍度(Toleration)相互配合,可以用来避免 Pod 被分配到不合适的节点上。 每个节点上都可以应用一个或多个污点,这表示对于那些不能容忍这些污点的 Pod,是不会被该节点接受的。


二、节点设置taints

1、设置taint

可以使用命令 kubectl taint 给节点增加一个污点

kubectl taint node [node] key=value[effect]   # [effect] 可取值: NoSchedule: 一定不能被调度PreferNoSchedule: 尽量不要调度NoExecute: 不仅不会调度, 还会驱逐Node上已有的Pod

Tips:
当节点维护并驱逐时,节点控制器会在相应的节点添加带有 NoExecute 效应的污点,实现基于污点的驱逐功能,一般来说,用的多的还是NoSchedule和toleration的方式相结合

示例: 设置节点minikube tiant标签,当标签key为master,值为true时,禁止Pod调度到节点上

2、查看taint

kubectl describe node [node] | grep Taints

3、删除taint

# 删除指定effect标签
kubectl taint node [node] key:[effect]-  # 删除指定key所有effect标签
kubectl taint node [node] key-

例: 删除节点taint


三、配置toleration及测试

当节点配置了taint时,如果Pod上没配置对应 tiant 的容忍度配置,Pod将无法调度到节点上

1、没配置tiant时,Pod正常调度

2、配置taint时,不配置容忍度 toleration

Pod将无法正常调度到节点,处于Pending状态

可以查看Pod事件看到,无节点满足调度条件

3、配置tolerations

可以看到Pod正常调度到节点

nginx.yaml增加tolerations字段,文件配置如下

apiVersion: v1
kind: Pod
metadata:creationTimestamp: nulllabels:run: nginx-no-tolerationname: nginx-no-toleration
spec:containers:- image: nginxname: nginx-no-tolerationports:- containerPort: 80resources: {}dnsPolicy: ClusterFirstrestartPolicy: Alwaystolerations:- key: "master"operator: "Equal"value: "true"effect: "NoSchedule"

四、总结

通过污点 taint 和 容忍度 toleration 相结合,可以灵活地实现 Pod 避开某些节点或者将 Pod 从某些节点驱逐。生产环境中比较常用的使用场景是指定专用节点,即节点只给某些指定的服务或用户使用,具体用法如下:

将某些节点专门分配给特定的服务使用,可以给这些节点添加一个污点( kubectl taint nodes nodename dedicated=AppName:NoSchedule), 然后给对应服务的 Pod 添加一个相对应的 toleration。 拥有上述容忍度的 Pod 就能够被分配到上述专用节点,同时也能够被分配到集群中的其它节点。注意,如果你希望这些 Pod 只能被分配到上述专用节点,那么可以给这些专用节点添加一个和污点类似的 label (例如:dedicated=AppName),同时,在 Pod 配置中增加节点亲和性要求或使用节点选择 NodeSelector ,实现上述 Pod 只能被分配到添加了 dedicated=AppName 标签的节点上。

以上是基于污点和容忍度的理解及生产中使用的解析

觉得有用的点个收藏和关注吧~

节点污点 Taint 和容忍度 Toleration在生产中的使用相关推荐

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

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

  2. Kubernetes 污点 Taint 和容忍 Toleration

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

  3. 《Kubernetes知识篇:Kubernetes污点和容忍度》

    文章目录 一.简介 二.pod对象的排斥等级 三.污点且无容忍度 3.1.污点之排斥等级NoSchedule 3.2.污点之排斥等级NoExecute 3.3.污点之排斥等级PreferNoSched ...

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

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

  5. Kubernetes Pod调度进阶:Taints(污点)和Tolerations(容忍)

    [注意]最后更新于 2 years ago,文中内容可能已过时,请谨慎使用. 污点(Taint)和容忍(Toleration)是从Kubernetes 1.6开始提供的高级调度功能. 在Kuberne ...

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

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

  7. 污点(Taint )和容忍(Toleration)

    污点(Taint) 1.污点的组成 使用kubectl taint命令可以给某个 Node 节点设置污点,Node 被设置上污点之后就和 Pod 之间存在了一种相斥的关系,可以让 Node 拒绝 Po ...

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

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

  9. K8S 污点和容忍度

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

最新文章

  1. git遇到错误: Failed connect to github.com:443
  2. synchronized锁升级
  3. 常用的SSH注解标签
  4. PHP 发邮件《转》
  5. linux内核mtd分区,linux-kernel – ubifs卷与mtd分区
  6. pip install 镜像_pypi私有镜像仓库部署
  7. Python画图库Turtle库详解篇
  8. java 蓝桥杯 石子游戏(题解)
  9. 用位运算实现有符号16bit数据clamp
  10. 鹏业软件CAD云服务转图纸没反应的说明
  11. 数字逻辑——时序逻辑电路
  12. 利用Excel Power Query获取基金历史净值、估值和日增长率等信息
  13. 读 孙卫琴《Tomcat与Javaweb开发技术详解》
  14. 怎样恢复被删除的文件
  15. vue和socket.io开发简单web聊天室
  16. 3D打印喷嘴大小如何选择0.2-0.5mm喷嘴
  17. Citrix XenApp/XenDesktop 7.8 版本新功能介绍
  18. 测试经理谈软件测试行业(想学习转行的看收益颇多)
  19. 检查服务器是否支持ipv6
  20. java程序线上故障排查及解决方案

热门文章

  1. EVE-NG模拟器社区版网络模拟环境搭建教程
  2. 运行ant-design-pro报错ERROR in ./node_modules/swagger-ui-react/swagger-ui.js 2:107055-107070Module not
  3. 【C++】Big Five: 构造函数、拷贝构造函数、拷贝赋值函数、移动构造函数、析构函数
  4. 虚拟机VMware安装Ubuntu记录
  5. JVM垃圾清理机制详解 ✨ 每日积累
  6. 9月赠书活动名单公布啦!
  7. AAA与AAM指令代码实验
  8. java高仿新浪微博短链接地址生成工具ShortUrlGenerator.java
  9. 时间煮雨,人生浅笑嫣然
  10. 《 iOS-checkIPA 》ipa 文件信息检查工具