当前位置: 首页 > news >正文

【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】&#xff1a;深入理解 Kubernetes 中的污点&#xff08;Taints&#xff09;与容忍度&#xff08;Tolerations&#xff09; 1、污点&#xff08;Taints&#xff09;2、容忍度&#xff08;Tolerations&#xff09;3、示例演示-测试污点的具体应用场景3.1 给节点打污点&…...

Angular 使用DomSanitizer防范跨站脚本攻击

跨站脚本Cross-site scripting 简称XSS&#xff0c;是代码注入的一种&#xff0c;是一种网站应用程序的安全漏洞攻击。它允许恶意用户将代码注入到网页上&#xff0c;其他用户在使用网页时就会收到影响&#xff0c;这类攻击通常包含了HTML和用户端脚本语言&#xff08;JS&…...

(八)PostgreSQL的数据库管理

PostgreSQL的数据库管理 基础信息 OS版本&#xff1a;Red Hat Enterprise Linux Server release 7.9 (Maipo) DB版本&#xff1a;16.2 pg软件目录&#xff1a;/home/pg16/soft pg数据目录&#xff1a;/home/pg16/data 端口&#xff1a;57771 创建数据库 CREATE DATABASE创建一…...

外包干了30天,技术倒退明显

先说情况&#xff0c;大专毕业&#xff0c;18年通过校招进入湖南某软件公司&#xff0c;干了接近6年的功能测试&#xff0c;今年年初&#xff0c;感觉自己不能够在这样下去了&#xff0c;长时间呆在一个舒适的环境会让一个人堕落&#xff01; 而我已经在一个企业干了四年的功能…...

ruoyi-nbcio-plus基于vue3的flowable的自定义业务单表例子的升级修改

更多ruoyi-nbcio功能请看演示系统 gitee源代码地址 前后端代码&#xff1a; https://gitee.com/nbacheng/ruoyi-nbcio 演示地址&#xff1a;RuoYi-Nbcio后台管理系统 http://122.227.135.243:9666/ 更多nbcio-boot功能请看演示系统 gitee源代码地址 后端代码&#xff1a…...

【ENSP】华为三层交换机配置AAA认证,开启telnet服务

配置步骤 1.给交换机配置ip地址&#xff0c;以便登陆 2.配置AAA&#xff0c;用户名&#xff0c;密码&#xff0c;服务类型&#xff0c;用户权限 3.配置接入设备的数量 4.开启telnet服务 LSW2交换机配置 u t m #关闭提示 sys …...

collections模块下的Counter函数讲解

&#x1f4da;博客主页&#xff1a;knighthood2001 ✨公众号&#xff1a;认知up吧 &#xff08;目前正在带领大家一起提升认知&#xff0c;感兴趣可以来围观一下&#xff09; &#x1f383;知识星球&#xff1a;【认知up吧|成长|副业】介绍 ❤️感谢大家点赞&#x1f44d;&…...

HarmonyOS开发实例:【分布式邮件】

概述 基于TS扩展的声明式开发范式编程语言编写的一个分布式邮件系统&#xff0c;可以由一台设备拉起另一台设备&#xff0c;每次改动邮件内容&#xff0c;都会同步更新两台设备的信息。效果图如下&#xff1a; 搭建OpenHarmony开发环境 完成本篇Codelab我们首先要完成开发环境…...

llama2.c与chinese-baby-llama2语言模型本地部署推理

文章目录 简介Github文档克隆源码英文模型编译运行中文模型&#xff08;280M&#xff09;main函数 简介 llama2.c是一个极简的Llama 2 LLM全栈工具&#xff0c;使用一个简单的 700 行 C 文件 ( run.c ) 对其进行推理。llama2.c涉及LLM微调、模型构建、推理端末部署&#xff08…...

008、Python+fastapi,第一个后台管理项目走向第8步:ubutun 20.04下安装vscode+python环境配置

一、说明 白飘了3个月无影云电脑&#xff0c;开始选了个windows server 非常不好用&#xff0c;后台改为ubuntu想升级到22&#xff0c;没成功&#xff0c;那就20.04吧。 今天先安装下开发环境&#xff0c;后续2个月就想把他当做开发服务器&#xff0c;不知道行不行&#xff0c;…...

2024.4.16 驱动开发

思维导图...

如何在 Ubuntu 14.04 上更改 PHP 设置

简介 PHP 是一种服务器端脚本语言&#xff0c;被许多流行的 CMS 和博客平台如 WordPress 和 Drupal 所使用。它也是流行的 LAMP 和 LEMP 堆栈的一部分。更新 PHP 配置设置是设置基于 PHP 的网站时的常见任务。定位确切的 PHP 配置文件可能并不容易。通常在服务器上会有多个 PH…...

【光伏企业】光伏项目怎么做才能提高效率?

一、精细化项目管理 项目规划&#xff1a;在项目启动前&#xff0c;进行充分的调研和规划&#xff0c;明确项目的目标、规模、预算和时间表&#xff0c;确保各项资源得到合理分配。 团队建设&#xff1a;组建一支高效、专业的项目团队&#xff0c;确保团队成员具备光伏领域的…...

毕设选51还是stm32?51太简单?

如果你更倾向于挑战和深入学习&#xff0c;STM32可能是更好的选择。如果你希望更专注于底层硬件原理&#xff0c;51可能更适合。我这里有一套嵌入式入门教程&#xff0c;不仅包含了详细的视频讲解&#xff0c;项目实战。如果你渴望学习嵌入式&#xff0c;不妨点个关注&#xff…...

ip addr和ifconfig区别

ip addr和ifconfig都是用于配置和管理网络接口的工具 1. ifconfig ifconfig是较旧的网络配置工具&#xff0c;属于net-tools套件的一部分。 该命令主要用于配置、显示和控制网络接口的参数&#xff0c;如IP地址、子网掩码、广播地址等。 ifconfig命令的功能相对有限&#xff…...

Springboot+Vue项目-基于Java+MySQL的房产销售系统(附源码+演示视频+LW)

大家好&#xff01;我是程序猿老A&#xff0c;感谢您阅读本文&#xff0c;欢迎一键三连哦。 &#x1f49e;当前专栏&#xff1a;Java毕业设计 精彩专栏推荐&#x1f447;&#x1f3fb;&#x1f447;&#x1f3fb;&#x1f447;&#x1f3fb; &#x1f380; Python毕业设计 &…...

向量数据库中的向量是什么?

在向量数据库中&#xff0c;向量通常指的是高维空间中的点或方向&#xff0c;它们由一组数值组成&#xff0c;这些数值表示该点在空间中的位置或方向。在机器学习和人工智能领域&#xff0c;向量经常用于表示各种类型的数据&#xff0c;如文本、图像、音频等。 具体来说&#x…...

【重回王座】ChatGPT发布最新模型gpt-4-turbo-2024-04-09

今天&#xff0c;新版GPT-4 Turbo再次在大型模型排行榜上荣登榜首&#xff0c;成功超越了此前领先的Claude 3 Opus。另外&#xff0c;新模型在处理长达64k的上下文时&#xff0c;性能竟能够与旧版在处理26k上下文时的表现相当。 目前GPT-4 Turbo仅限于ChatGPT Plus的用户&…...

NL2SQL基础系列(1):业界顶尖排行榜、权威测评数据集及LLM大模型(Spider vs BIRD)全面对比优劣分析[Text2SQL、Text2DSL]

NL2SQL基础系列(1)&#xff1a;业界顶尖排行榜、权威测评数据集及LLM大模型&#xff08;Spider vs BIRD&#xff09;全面对比优劣分析[Text2SQL、Text2DSL] Text-to-SQL&#xff08;或者Text2SQL&#xff09;&#xff0c;顾名思义就是把文本转化为SQL语言&#xff0c;更学术一…...

深度学习基础——计算量、参数量和推理时间

深度学习基础——计算量、参数量和推理时间 在深度学习中&#xff0c;计算量、参数量和推理时间是评估模型性能和效率的重要指标。本文将介绍这三个指标的定义、计算方法以及如何使用Python进行实现和可视化展示&#xff0c;以帮助读者更好地理解和评估深度学习模型。 1. 定义…...

深入剖析AI大模型:大模型时代的 Prompt 工程全解析

今天聊的内容&#xff0c;我认为是AI开发里面非常重要的内容。它在AI开发里无处不在&#xff0c;当你对 AI 助手说 "用李白的风格写一首关于人工智能的诗"&#xff0c;或者让翻译模型 "将这段合同翻译成商务日语" 时&#xff0c;输入的这句话就是 Prompt。…...

Java 语言特性(面试系列1)

一、面向对象编程 1. 封装&#xff08;Encapsulation&#xff09; 定义&#xff1a;将数据&#xff08;属性&#xff09;和操作数据的方法绑定在一起&#xff0c;通过访问控制符&#xff08;private、protected、public&#xff09;隐藏内部实现细节。示例&#xff1a; public …...

React Native 导航系统实战(React Navigation)

导航系统实战&#xff08;React Navigation&#xff09; React Navigation 是 React Native 应用中最常用的导航库之一&#xff0c;它提供了多种导航模式&#xff0c;如堆栈导航&#xff08;Stack Navigator&#xff09;、标签导航&#xff08;Tab Navigator&#xff09;和抽屉…...

解决Ubuntu22.04 VMware失败的问题 ubuntu入门之二十八

现象1 打开VMware失败 Ubuntu升级之后打开VMware上报需要安装vmmon和vmnet&#xff0c;点击确认后如下提示 最终上报fail 解决方法 内核升级导致&#xff0c;需要在新内核下重新下载编译安装 查看版本 $ vmware -v VMware Workstation 17.5.1 build-23298084$ lsb_release…...

生成 Git SSH 证书

&#x1f511; 1. ​​生成 SSH 密钥对​​ 在终端&#xff08;Windows 使用 Git Bash&#xff0c;Mac/Linux 使用 Terminal&#xff09;执行命令&#xff1a; ssh-keygen -t rsa -b 4096 -C "your_emailexample.com" ​​参数说明​​&#xff1a; -t rsa&#x…...

LLM基础1_语言模型如何处理文本

基于GitHub项目&#xff1a;https://github.com/datawhalechina/llms-from-scratch-cn 工具介绍 tiktoken&#xff1a;OpenAI开发的专业"分词器" torch&#xff1a;Facebook开发的强力计算引擎&#xff0c;相当于超级计算器 理解词嵌入&#xff1a;给词语画"…...

云原生玩法三问:构建自定义开发环境

云原生玩法三问&#xff1a;构建自定义开发环境 引言 临时运维一个古董项目&#xff0c;无文档&#xff0c;无环境&#xff0c;无交接人&#xff0c;俗称三无。 运行设备的环境老&#xff0c;本地环境版本高&#xff0c;ssh不过去。正好最近对 腾讯出品的云原生 cnb 感兴趣&…...

HDFS分布式存储 zookeeper

hadoop介绍 狭义上hadoop是指apache的一款开源软件 用java语言实现开源框架&#xff0c;允许使用简单的变成模型跨计算机对大型集群进行分布式处理&#xff08;1.海量的数据存储 2.海量数据的计算&#xff09;Hadoop核心组件 hdfs&#xff08;分布式文件存储系统&#xff09;&a…...

vulnyx Blogger writeup

信息收集 arp-scan nmap 获取userFlag 上web看看 一个默认的页面&#xff0c;gobuster扫一下目录 可以看到扫出的目录中得到了一个有价值的目录/wordpress&#xff0c;说明目标所使用的cms是wordpress&#xff0c;访问http://192.168.43.213/wordpress/然后查看源码能看到 这…...

Neko虚拟浏览器远程协作方案:Docker+内网穿透技术部署实践

前言&#xff1a;本文将向开发者介绍一款创新性协作工具——Neko虚拟浏览器。在数字化协作场景中&#xff0c;跨地域的团队常需面对实时共享屏幕、协同编辑文档等需求。通过本指南&#xff0c;你将掌握在Ubuntu系统中使用容器化技术部署该工具的具体方案&#xff0c;并结合内网…...