【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. 定义…...

【大模型RAG】拍照搜题技术架构速览:三层管道、两级检索、兜底大模型
摘要 拍照搜题系统采用“三层管道(多模态 OCR → 语义检索 → 答案渲染)、两级检索(倒排 BM25 向量 HNSW)并以大语言模型兜底”的整体框架: 多模态 OCR 层 将题目图片经过超分、去噪、倾斜校正后,分别用…...
DeepSeek 赋能智慧能源:微电网优化调度的智能革新路径
目录 一、智慧能源微电网优化调度概述1.1 智慧能源微电网概念1.2 优化调度的重要性1.3 目前面临的挑战 二、DeepSeek 技术探秘2.1 DeepSeek 技术原理2.2 DeepSeek 独特优势2.3 DeepSeek 在 AI 领域地位 三、DeepSeek 在微电网优化调度中的应用剖析3.1 数据处理与分析3.2 预测与…...

Python实现prophet 理论及参数优化
文章目录 Prophet理论及模型参数介绍Python代码完整实现prophet 添加外部数据进行模型优化 之前初步学习prophet的时候,写过一篇简单实现,后期随着对该模型的深入研究,本次记录涉及到prophet 的公式以及参数调优,从公式可以更直观…...
linux 下常用变更-8
1、删除普通用户 查询用户初始UID和GIDls -l /home/ ###家目录中查看UID cat /etc/group ###此文件查看GID删除用户1.编辑文件 /etc/passwd 找到对应的行,YW343:x:0:0::/home/YW343:/bin/bash 2.将标红的位置修改为用户对应初始UID和GID: YW3…...
Java入门学习详细版(一)
大家好,Java 学习是一个系统学习的过程,核心原则就是“理论 实践 坚持”,并且需循序渐进,不可过于着急,本篇文章推出的这份详细入门学习资料将带大家从零基础开始,逐步掌握 Java 的核心概念和编程技能。 …...

使用 Streamlit 构建支持主流大模型与 Ollama 的轻量级统一平台
🎯 使用 Streamlit 构建支持主流大模型与 Ollama 的轻量级统一平台 📌 项目背景 随着大语言模型(LLM)的广泛应用,开发者常面临多个挑战: 各大模型(OpenAI、Claude、Gemini、Ollama)接口风格不统一;缺乏一个统一平台进行模型调用与测试;本地模型 Ollama 的集成与前…...

初学 pytest 记录
安装 pip install pytest用例可以是函数也可以是类中的方法 def test_func():print()class TestAdd: # def __init__(self): 在 pytest 中不可以使用__init__方法 # self.cc 12345 pytest.mark.api def test_str(self):res add(1, 2)assert res 12def test_int(self):r…...
Redis的发布订阅模式与专业的 MQ(如 Kafka, RabbitMQ)相比,优缺点是什么?适用于哪些场景?
Redis 的发布订阅(Pub/Sub)模式与专业的 MQ(Message Queue)如 Kafka、RabbitMQ 进行比较,核心的权衡点在于:简单与速度 vs. 可靠与功能。 下面我们详细展开对比。 Redis Pub/Sub 的核心特点 它是一个发后…...

佰力博科技与您探讨热释电测量的几种方法
热释电的测量主要涉及热释电系数的测定,这是表征热释电材料性能的重要参数。热释电系数的测量方法主要包括静态法、动态法和积分电荷法。其中,积分电荷法最为常用,其原理是通过测量在电容器上积累的热释电电荷,从而确定热释电系数…...

springboot整合VUE之在线教育管理系统简介
可以学习到的技能 学会常用技术栈的使用 独立开发项目 学会前端的开发流程 学会后端的开发流程 学会数据库的设计 学会前后端接口调用方式 学会多模块之间的关联 学会数据的处理 适用人群 在校学生,小白用户,想学习知识的 有点基础,想要通过项…...