【k8s】:深入理解 Kubernetes 中的污点(Taints)与容忍度(Tolerations)
【k8s】:深入理解 Kubernetes 中的污点(Taints)与容忍度(Tolerations)
- 1、污点(Taints)
- 2、容忍度(Tolerations)
- 3、示例演示-测试污点的具体应用场景
- 3.1 给节点打污点,创建pod
- 3.2 删除节点污点
| 💖The Begin💖点点关注,收藏不迷路💖 |
在 Kubernetes(k8s)中,污点(Taints)与容忍度(Tolerations)是两个重要的概念,它们用于控制 Pod 对节点的调度行为。污点允许节点标记自身,以指示它们不接受特定类型的 Pod,而容忍度允许 Pod 标记自身,以指示它们可以容忍特定类型的节点。
本文将深入探讨污点与容忍度的概念、用法以及如何在 Kubernetes 集群中使用它们。
1、污点(Taints)
污点是 Kubernetes 中节点的一个属性,它用于标记节点不接受哪些类型的 Pod。节点上的污点会阻止具有相同键值对的 Pod 被调度到该节点上。用在节点上,定义的是污点。
组成结构:key=value:Effect
1、查看节点(Node)资源对象的 spec.taints 字段的详细说明kubectl explain node.spec.taints
污点包含以下几个关键属性:
1、Key(键): 污点的键,用于唯一标识污点。
2、Value(值): 污点的值,与键一起构成键值对,用于具体指定污点的类型。
3、Effect(效果): 污点的效果,表示当 Pod 与节点的污点匹配时所采取的行动。常见的效果包括:
- NoSchedule:阻止调度新的 Pod 到节点上。
- PreferNoSchedule:尽量避免调度新的 Pod 到节点上,但不是强制性的。
- NoExecute:将节点上已有的 Pod 驱逐出去,直到 Pod 满足对应的容忍度规则。
4、timeAdded: 表示污点(Taint)被添加的时间,这个字段只有在 NoExecute 类型的污点中才会被写入。这意味着它仅在节点上已经存在的 Pod 需要被驱逐时才会记录。
污点的效果详解:


# 添加污点到节点
kubectl taint nodes <node-name> <key>=<value>:<effect># 删除节点污点
kubectl taint nodes <node-name> key-key- 表示要删除的污点的键。在键后面加上 -,以表示删除该键对应的污点。# 查看节点的污点信息
kubectl describe nodes <node-name>kubectl describe nodes k8s-master

例如:查看 kube-apiserver-k8s-master Pod 的详细信息
kubectl describe pod kube-apiserver-k8s-master


2、容忍度(Tolerations)
容忍度是 Pod 的一个属性,它允许 Pod 在调度时容忍具有指定污点的节点。通过为 Pod 添加容忍度,可以让 Pod 在特定类型的节点上运行。
用在Pod上,定义的是容忍度,能容忍哪些污点。
# 在 Pod 的规范中添加容忍度
tolerations:
- key: <key>operator: <operator>value: <value>effect: <effect>tolerationSeconds: <seconds>例如:apiVersion: v1 # 指定 Kubernetes API 版本为 v1
kind: Pod # 定义资源类型为 Pod
metadata: # 元数据部分,包含 Pod 的名称等信息name: special-pod # 指定 Pod 的名称为 special-pod
spec: # Pod 的规格部分,包含容器和容忍度等信息containers: # 容器部分,定义 Pod 中的容器- name: special-container # 容器的名称为 special-containerimage: nginx # 容器使用的镜像为 nginxtolerations: # 容忍度部分,定义 Pod 的容忍度- key: special-node # 定义容忍度的键为 special-nodeoperator: Exists # 定义容忍度的操作符为 Exists,表示只要存在该键即可容忍effect: NoSchedule # 定义容忍度的效果为 NoSchedule,表示节点上有特定污点时不会调度该 Pod
3、示例演示-测试污点的具体应用场景
3.1 给节点打污点,创建pod
1、不定义容忍度
1、使用 kubectl taint 命令来给节点打上污点。以下是具体的命令:[root@k8s-master ~]# kubectl taint nodes k8s-node01 special-node=true:NoSchedule
node/k8s-node01 tainted
[root@k8s-master ~]### 为 k8s-node01 的节点打上一个名为 special-node 的污点,值为 true,效果为 NoSchedule,## 即表示这个节点上的 Pod 将不会被调度,除非它们定义了对应的容忍度。2、创建pod,不定义容忍度,yaml清单:apiVersion: v1
kind: Pod
metadata:name: nginx-pod
spec:containers:- name: nginx-containerimage: nginx## 定义了一个简单的 Pod,其中包含一个名为 nginx-container 的容器,使用了 Nginx 的镜像。## 由于没有定义任何容忍度,因此这个 Pod 将会尝试在集群中的任何节点上被调度。3、更新资源文件kubectl apply -f nginx-pod.yaml4、查看pod
kubectl get pods -o wide

2、定义污点效果-设置排斥等级
1、删除前面创建的污点
kubectl taint nodes k8s-node01 special-node-2、定义排斥等级,效果为 NoExecute
kubectl taint nodes k8s-node01 special-node=true:NoExecute这意味着该节点上的 Pod 如果不满足容忍度条件,将会被驱逐(Evicted)。
3、定义容忍度
创建一个名为 nginx-pod 的 Pod,并定义容忍度以允许在带有 special-node=true:NoExecute 污点的节点上调度:
apiVersion: v1
kind: Pod
metadata:name: nginx-pod
spec:containers:- name: nginx-containerimage: nginx
tolerations:
- key: special-node # 污点的键值operator: Equal # 操作符,这里使用等于value: "true" # 污点的值为 trueeffect: NoExecute # 污点的效果为 NoExecute,即会驱逐不满足容忍度的 Pod# 在spec 部分的 tolerations 字段中定义了容忍度,指定了对于带有 special-node=true:NoExecute 污点的节点的容忍度。
3.2 删除节点污点
要删除节点上的污点,使用 kubectl taint 命令,并指定 - 作为值。
# 删除 k8s-node01 的节点上名为 special-node 的污点。kubectl taint nodes k8s-node01 special-node-

| 💖The End💖点点关注,收藏不迷路💖 |
相关文章:
【k8s】:深入理解 Kubernetes 中的污点(Taints)与容忍度(Tolerations)
【k8s】:深入理解 Kubernetes 中的污点(Taints)与容忍度(Tolerations) 1、污点(Taints)2、容忍度(Tolerations)3、示例演示-测试污点的具体应用场景3.1 给节点打污点&…...
Angular 使用DomSanitizer防范跨站脚本攻击
跨站脚本Cross-site scripting 简称XSS,是代码注入的一种,是一种网站应用程序的安全漏洞攻击。它允许恶意用户将代码注入到网页上,其他用户在使用网页时就会收到影响,这类攻击通常包含了HTML和用户端脚本语言(JS&…...
(八)PostgreSQL的数据库管理
PostgreSQL的数据库管理 基础信息 OS版本:Red Hat Enterprise Linux Server release 7.9 (Maipo) DB版本:16.2 pg软件目录:/home/pg16/soft pg数据目录:/home/pg16/data 端口:57771 创建数据库 CREATE DATABASE创建一…...
外包干了30天,技术倒退明显
先说情况,大专毕业,18年通过校招进入湖南某软件公司,干了接近6年的功能测试,今年年初,感觉自己不能够在这样下去了,长时间呆在一个舒适的环境会让一个人堕落! 而我已经在一个企业干了四年的功能…...
ruoyi-nbcio-plus基于vue3的flowable的自定义业务单表例子的升级修改
更多ruoyi-nbcio功能请看演示系统 gitee源代码地址 前后端代码: https://gitee.com/nbacheng/ruoyi-nbcio 演示地址:RuoYi-Nbcio后台管理系统 http://122.227.135.243:9666/ 更多nbcio-boot功能请看演示系统 gitee源代码地址 后端代码:…...
【ENSP】华为三层交换机配置AAA认证,开启telnet服务
配置步骤 1.给交换机配置ip地址,以便登陆 2.配置AAA,用户名,密码,服务类型,用户权限 3.配置接入设备的数量 4.开启telnet服务 LSW2交换机配置 u t m #关闭提示 sys …...
collections模块下的Counter函数讲解
📚博客主页:knighthood2001 ✨公众号:认知up吧 (目前正在带领大家一起提升认知,感兴趣可以来围观一下) 🎃知识星球:【认知up吧|成长|副业】介绍 ❤️感谢大家点赞👍&…...
HarmonyOS开发实例:【分布式邮件】
概述 基于TS扩展的声明式开发范式编程语言编写的一个分布式邮件系统,可以由一台设备拉起另一台设备,每次改动邮件内容,都会同步更新两台设备的信息。效果图如下: 搭建OpenHarmony开发环境 完成本篇Codelab我们首先要完成开发环境…...
llama2.c与chinese-baby-llama2语言模型本地部署推理
文章目录 简介Github文档克隆源码英文模型编译运行中文模型(280M)main函数 简介 llama2.c是一个极简的Llama 2 LLM全栈工具,使用一个简单的 700 行 C 文件 ( run.c ) 对其进行推理。llama2.c涉及LLM微调、模型构建、推理端末部署(…...
008、Python+fastapi,第一个后台管理项目走向第8步:ubutun 20.04下安装vscode+python环境配置
一、说明 白飘了3个月无影云电脑,开始选了个windows server 非常不好用,后台改为ubuntu想升级到22,没成功,那就20.04吧。 今天先安装下开发环境,后续2个月就想把他当做开发服务器,不知道行不行,…...
2024.4.16 驱动开发
思维导图...
如何在 Ubuntu 14.04 上更改 PHP 设置
简介 PHP 是一种服务器端脚本语言,被许多流行的 CMS 和博客平台如 WordPress 和 Drupal 所使用。它也是流行的 LAMP 和 LEMP 堆栈的一部分。更新 PHP 配置设置是设置基于 PHP 的网站时的常见任务。定位确切的 PHP 配置文件可能并不容易。通常在服务器上会有多个 PH…...
【光伏企业】光伏项目怎么做才能提高效率?
一、精细化项目管理 项目规划:在项目启动前,进行充分的调研和规划,明确项目的目标、规模、预算和时间表,确保各项资源得到合理分配。 团队建设:组建一支高效、专业的项目团队,确保团队成员具备光伏领域的…...
毕设选51还是stm32?51太简单?
如果你更倾向于挑战和深入学习,STM32可能是更好的选择。如果你希望更专注于底层硬件原理,51可能更适合。我这里有一套嵌入式入门教程,不仅包含了详细的视频讲解,项目实战。如果你渴望学习嵌入式,不妨点个关注ÿ…...
ip addr和ifconfig区别
ip addr和ifconfig都是用于配置和管理网络接口的工具 1. ifconfig ifconfig是较旧的网络配置工具,属于net-tools套件的一部分。 该命令主要用于配置、显示和控制网络接口的参数,如IP地址、子网掩码、广播地址等。 ifconfig命令的功能相对有限ÿ…...
Springboot+Vue项目-基于Java+MySQL的房产销售系统(附源码+演示视频+LW)
大家好!我是程序猿老A,感谢您阅读本文,欢迎一键三连哦。 💞当前专栏:Java毕业设计 精彩专栏推荐👇🏻👇🏻👇🏻 🎀 Python毕业设计 &…...
向量数据库中的向量是什么?
在向量数据库中,向量通常指的是高维空间中的点或方向,它们由一组数值组成,这些数值表示该点在空间中的位置或方向。在机器学习和人工智能领域,向量经常用于表示各种类型的数据,如文本、图像、音频等。 具体来说&#x…...
【重回王座】ChatGPT发布最新模型gpt-4-turbo-2024-04-09
今天,新版GPT-4 Turbo再次在大型模型排行榜上荣登榜首,成功超越了此前领先的Claude 3 Opus。另外,新模型在处理长达64k的上下文时,性能竟能够与旧版在处理26k上下文时的表现相当。 目前GPT-4 Turbo仅限于ChatGPT Plus的用户&…...
NL2SQL基础系列(1):业界顶尖排行榜、权威测评数据集及LLM大模型(Spider vs BIRD)全面对比优劣分析[Text2SQL、Text2DSL]
NL2SQL基础系列(1):业界顶尖排行榜、权威测评数据集及LLM大模型(Spider vs BIRD)全面对比优劣分析[Text2SQL、Text2DSL] Text-to-SQL(或者Text2SQL),顾名思义就是把文本转化为SQL语言,更学术一…...
深度学习基础——计算量、参数量和推理时间
深度学习基础——计算量、参数量和推理时间 在深度学习中,计算量、参数量和推理时间是评估模型性能和效率的重要指标。本文将介绍这三个指标的定义、计算方法以及如何使用Python进行实现和可视化展示,以帮助读者更好地理解和评估深度学习模型。 1. 定义…...
BERT-base-uncased完全指南:从基础原理到实战应用
BERT-base-uncased完全指南:从基础原理到实战应用 【免费下载链接】bert-base-uncased 项目地址: https://ai.gitcode.com/hf_mirrors/ai-gitcode/bert-base-uncased 一、认知铺垫:为什么BERT改变了NLP格局? 1.1 BERT的突破性意义何…...
ViGEmBus虚拟手柄驱动:Windows内核级游戏控制器模拟核心技术解析与应用指南
ViGEmBus虚拟手柄驱动:Windows内核级游戏控制器模拟核心技术解析与应用指南 【免费下载链接】ViGEmBus Windows kernel-mode driver emulating well-known USB game controllers. 项目地址: https://gitcode.com/gh_mirrors/vi/ViGEmBus ViGEmBus作为Windows…...
MVC / MVVM 和 Vue3、React18 到底啥关系?
MVC / MVVM 和 Vue3、React18 到底啥关系? 我用最直白、最贴合你日常写代码的方式讲清楚,保证你瞬间通透。一、先给结论(最重要) Vue3 标准的 MVVM 框架(官方自己定义的)React18 借鉴 MVVM 思想ÿ…...
形态学操作进阶:手把手教你设计Hit-or-Miss内核检测十字/直角结构
形态学操作进阶:手把手教你设计Hit-or-Miss内核检测十字/直角结构 在计算机视觉领域,形态学操作一直是图像处理中不可或缺的技术手段。其中,Hit-or-Miss变换作为一种高级形态学操作,能够精准定位二值图像中的特定结构模式。想象一…...
【STM32-HAL库】火焰传感器实战:从原理到智能火灾预警系统搭建(基于STM32F407ZGT6)
1. 火焰传感器原理与选型指南 火焰传感器作为火灾预警系统的"眼睛",其核心原理是利用光电效应检测火焰特有的光谱特征。我经手过的工业项目中,90%的火灾误报都源于传感器选型不当。市面上常见的火焰传感器主要分为三类: 红外型&…...
3分钟搞定网易云音乐加密文件:NCMD解密工具终极指南
3分钟搞定网易云音乐加密文件:NCMD解密工具终极指南 【免费下载链接】ncmdump 项目地址: https://gitcode.com/gh_mirrors/ncmd/ncmdump 还在为网易云音乐的NCM加密文件无法在其他播放器播放而烦恼吗?今天我要为你介绍一款简单高效的音频解密神器…...
数据库连接优化:DBeaver连接阻塞问题的系统解决方案
数据库连接优化:DBeaver连接阻塞问题的系统解决方案 【免费下载链接】dbeaver DBeaver 是一个通用的数据库管理工具,支持跨平台使用。* 支持多种数据库类型,如 MySQL、PostgreSQL、MongoDB 等;提供 SQL 编辑、查询、调试等功能&am…...
企业级React UI组件库实战指南:Element React深度解析与最佳实践
企业级React UI组件库实战指南:Element React深度解析与最佳实践 【免费下载链接】element-react Element UI 项目地址: https://gitcode.com/gh_mirrors/el/element-react Element React作为一款专业的企业级React UI组件库,为现代前端开发提供了…...
RVC 技术指南:从问题解决到效率提升
RVC 技术指南:从问题解决到效率提升 【免费下载链接】rvc RVC is a Linux console UI for vSphere, built on the RbVmomi bindings to the vSphere API. 项目地址: https://gitcode.com/gh_mirrors/rvc/rvc 问题场景→核心原理→分步方案→进阶技巧 一、环…...
Frida安装后别急着‘玩’!这5个必做的环境验证与排错步骤你做了吗?
Frida安装后必做的5个环境验证与排错步骤 当你兴冲冲地按照教程安装完Frida和Server,准备开始"玩耍"时,却发现frida-ps -U毫无反应,或者遇到各种连接失败的问题。这种"安装成功却用不了"的尴尬,往往源于环境…...
