k8s-----23、Taint和Toleration、污点和容忍
1、使用场景
生产环境部署规则
1、master节点不允许部署其他类型的pod节点
2、新增node节点需要经过测试才可投入使用,才允许pod部署在该节点
3、维护/升级node节点时,需要将节点上的pod提前进行迁移
4、特殊节点:比如这个节点是SSD/GPU类型的。 不能随便一个pod都部署在这个节点
设置了污点和容忍后,并一定就必须按照这个污点和容忍去走,并不一定非要部署在有污点的节点,类似于回家有5个门,有些门设置了污点,也就是有锁的,但是有些门没有设置,刚好没锁,然后刚好走到了这个门,直接就可以进去了。所以pod并不会一定走到这个节点。
2、概念
Taint能够使节点排斥一类特定的Pod,Taint和Toleration相互配合可以用来避免Pod被分配到不合适的节点,比如Master节点不允许部署系统组件之外的其他Pod。每个节点上都可以应用一个或多个Taint,这表示对于那些不能容忍这些Taint的Pod是不会被该节点接受的。如果将Toleration应用于Pod上,则表示这些Pod可以(但不要求)被调度到具有匹配Taint的节点上。
2.1 taint 污点
污点:针对的是node节点
Taint在一类服务器上打上污点,让不能容忍这个污点的Pod不能部署 在打了污点的服务器上。
2.2 Toleration容忍
容忍:针对的是pod
Toleration是让Pod容忍节点上配置的污点,可以让一些 需要特殊配置的Pod能够调用到具有污点和特殊配置的节点上。
2.3 官网
官网文档
3、配置解析
3.1 Taint配置解析
创建一个污点(一个节点可以有多个污点):kubectl taint nodes NODE_NAME TAINT_KEY=TAINT_VALUE:EFFECT #nodes表示节点主机名,key 和 value,冒号后面是调度策略
比如:kubectl taint nodes k8s-node01 ssd=true:PreferNoSchedule #示例
调度策略:
NoSchedule:禁止调度到该节点,已经在该节点上的Pod不受影响
NoExecute:禁止调度到该节点,如果不符合这个污点,会立马被驱逐(或在一段时间后)
PreferNoSchedule:尽量避免将Pod调度到指定的节点上,如果没有更合适的节点,可以部署到该节点
3.2 Toleration配置解析
策略:
方式1 完全匹配:key value effect完全和污点的节点相同tolerations:- key: "taintKey"operator: "Equal" value: "taintValue" effect: "NoSchedule"
方式2 不完全匹配:满足key的就可以调度到这个节点上tolerations:- key: "taintKey"operator: "Exists" effect: "NoSchedule"
方式3 大范围匹配(不推荐key为内置Taint)tolerations:- key: "taintKey" operator: "Exists"
方式4 匹配所有(不推荐)tolerations:- operator: "Exists"
停留时间配置:tolerations: - key: "key1"operator: "Equal"value: "value1"effect: "NoExecute" #驱逐tolerationSeconds: 3600 # 可以在node上停留的时间,不会立即驱逐
4、使用案例
有一个节点是纯SSD硬盘的节点,现需要只有一些需要高性能存储的Pod才能调度到该节点上
#给节点打上污点和标签:
1. kubectl taint nodes k8s-node01 ssd=true:NoExecute(此时会驱逐没有容忍该污点的Pod)
2. kubectl taint nodes k8s-node01 ssd=true:NoSchedule
3. kubectl label node k8s-node01 ssd=true
#配置pod
apiVersion: v1
kind: Pod
metadata:name: nginx labels:env: testspec:containers:- name: nginx image: nginximagePullPolicy: IfNotPresent nodeSelector:ssd: "true" tolerations: - key: "ssd"operator: "Exists"
5、内置污点
➢ node.kubernetes.io/not-ready:节点未准备好,相当于节点状态Ready的值为False。
➢ node.kubernetes.io/unreachable:Node Controller访问不到节点,相当于节点状态Ready的值为Unknown。
➢ node.kubernetes.io/out-of-disk:节点磁盘耗尽。
➢ node.kubernetes.io/memory-pressure:节点存在内存压力。
➢ node.kubernetes.io/disk-pressure:节点存在磁盘压力。
➢ node.kubernetes.io/network-unavailable:节点网络不可达。
➢ node.kubernetes.io/unschedulable:节点不可调度。
➢ node.cloudprovider.kubernetes.io/uninitialized:如果Kubelet启动时指定了一个外部的cloudprovider,它将给当前节点添加一个Taint将其标记为不可用。在cloud-controller-manager的一个controller初始化这个 节点后,Kubelet将删除这个Taint。
节点不健康,6000秒后再驱逐(默认是300秒): 这里的时间需要合理配置,有时候由于网络抖动导致的,所以时间设置不可以太短,但是时间设置过长,可能导致业务受损。
tolerations:
- key: "node.kubernetes.io/unreachable"operator: "Exists" effect: "NoExecute" tolerationSeconds: 6000 #只容忍这么长时间
6、taint命令常用示例
创建一个污点(一个节点可以有多个污点):kubectl taint nodes NODE_NAME TAINT_KEY=TAINT_VALUE:EFFECT
比如:
查看一个节点的污点:kubectl get node k8s-node01 -o go-template --template {{.spec.taints}}kubectl describe node k8s-node01 | grep Taints -A 10
删除污点(和label类似):基于Key删除: kubectl taint nodes k8s-node01 ssd-基于Key+Effect删除: kubectl taint nodes k8s-node01 ssd:PreferNoSchedule-
修改污点(Key和Effect相同):kubectl taint nodes k8s-node01 ssd=true:PreferNoSchedule --overwrite
相关文章:
k8s-----23、Taint和Toleration、污点和容忍
1、使用场景 生产环境部署规则 1、master节点不允许部署其他类型的pod节点 2、新增node节点需要经过测试才可投入使用,才允许pod部署在该节点 3、维护/升级node节点时,需要将节点上的pod提前进行迁移 4、特殊节点:比如这个节点是SSD/GPU类型…...
全面解析优化企业Microsoft 365网络的加速方案
您的员工是否有因为Microsoft 365频繁掉线、卡顿、无法登录而向IT部门抱怨过? 很多时候企业会以为是自身网络带宽不足才导致访问失败,但是在采取增加带宽的方案后,办公文档协同打开仍旧很慢,文件分享依旧需要等待较长的时间&…...
Xilinx MicroBlaze定时器中断无法返回主函数问题解决
最近在使用Xilinx 7系列FPGA XC7A100T时,运行MicroBlaze软核处理器,添加了AXI TIMER IP核,并使能定时器溢出中断,发现定时器触发中断后,无法返回主函数的问题,最后发现修改编译器优化等级就正常了。 FPGA型…...
Spark SQL概述与基本操作
目录 一、Spark SQL概述 (1)概念 (2)特点 (3)Spark SQL与Hive异同 (4)Spark的数据抽象 二、Spark Session对象执行环境构建 (1)Spark Session对象 (2)代码演…...
KDChart3.0编译过程-使用QT5.15及QT6.x编译
文章目录 参考原文一、下载KDChart源文件二、下载安装CMake三、编译Qt5.15.0 编译Qt6.x 编译使用Qt6.X编译的直接看这最快 四、使用测试方法一:测试方法二: 参考原文 记录我的KDChart3.0编译过程 系统:win11,Qt5.15 ,编…...
一、PHP环境搭建[phpstorm]
一、安装 1.php编写工具 地址:https://www.jetbrains.com/phpstorm/download/#sectionwindows 图示: 2.php环境 解释:建议使用phpstudy进行安装,安装较为简单 链接:https://www.xp.cn/ 图示: 二、第…...
光影之梦2:动画渲染前后对比,揭示视觉艺术的惊人转变!
动画渲染是影视艺术中不可或缺的一环,它赋予了角色和场景鲜活的生命。渲染过程中的光影、色彩、材质等元素,像是画家的调色板,将平淡无奇的线条和形状转化为充满韵味与情感的画面。动画角色仿佛拥有了自己的灵魂,无论是一颦一笑&a…...
pytorch_lightning:Validation sanity check: 0%| | 0/2 [00:00<?, ?it/s]
在使用Lighting架构辅助训练时,对于出现的下述情况的原因: 解释: 注意到“ Validation sanity check ”。这是因为Lightning在开始训练之前进行了两批验证。这是一种单元测试,以确保如果你在验证循环中有一个bug,你不…...
2、Linux权限理解
个人主页:Lei宝啊 愿所有美好如期而遇 目录 前言 Linux权限的概念 1.文件访问者的分(人) 2.文件类型和访问权限(事物属性) 3.文件权限值的表示方法 4.文件访问权限的相关设置方法 file指令 目录的权限 粘滞位 关于权限的总结 前言 在开始Linux权限理…...
Linux 通过 sed 命令过滤指定日期的日志文件并输出到新文件
sed -n /2023-10-18T09:00:00/,/2023-10-18 12:00:00/p mysql_slow.log > out.log...
景联文科技:针对敏感数据的安全转录服务,护航信息安全
针对数据的安全转录服务,主要是为了确保数据在转录过程中的安全性和隐私保护。这些服务通常会采用一系列严格的安全措施,如数据加密、访问控制、数据脱敏等,以确保敏感数据不会被泄露或滥用。 景联文科技提供特定的数据转录服务,以…...
Excel宏(VBA)自动化标准流程代码
自动化流程 我们对一个报表进行自动化改造会经历的固定流程,这里称为“流水线”,通常包含以下流程: 打开一个表格选择打开的表格选择表格中的Sheet选择Sheet中的单元格区域 (有时候需要按条件筛选)复制某个区域 粘贴…...
vue vue3开发 vue2和vue3的选择
现在vue新建项目,官方给出的命令是 npm create vuelatest项目默认vue3,他是不支持IE11 如果想支持IE11用下面方法,项目vue2.7.7 npm create vuelegacy他们的打包工具默认vite,不是webpack。老手要注意生成的项目中的示例组件使…...
华为OD 数列描述(100分)【java】A卷+B卷
华为OD统一考试A卷+B卷 新题库说明 你收到的链接上面会标注A卷还是B卷。目前大部分收到的都是B卷。 B卷对应往年部分考题以及新出的题目。 我将持续更新最新题目 我精选了一部分题目免费分享给大家,可前往夸克网盘转存,请点击以下链接进入: 我用夸克网盘分享了「华为OD题库J…...
μCOS-Ⅲ中断管理,这样理解非常简单!
μCOS-Ⅲ中断管理,这样理解非常简单! 文章目录 μCOS-Ⅲ中断管理,这样理解非常简单!前言一、中断源与中断优先级二、μCOS-Ⅲ的中断管理方式三、中断屏蔽与中断控制1、μCOS-Ⅲ中断开关2、μCOS-Ⅲ中断屏蔽应用——临界区4、μCOS…...
Vue 项目进行 SEO 优化
SSR 服务器渲染 服务端渲染, 在服务端 html 页面节点, 已经解析创建完了, 浏览器直接拿到的是解析完成的页面解构 关于服务器渲染:Vue 官网介绍 ,对 Vue 版本有要求,对服务器也有一定要求,需要支持 nodejs 环境。 优势: 更好的 …...
【C++入门篇】保姆级教程篇【上】
目录 一、第一个C程序 二、C命名空间 1)什么是命名空间? 2)命名空间的使用 3) std库与namespace展开 4)命名空间的嵌套使用 三、输入输出方式 四、缺省参数 1)什么是缺省参数? 2࿰…...
用傲梅分区软件分割分区重启系统蓝屏BAD_SYSTEM_CONFIG_INFO,八个解决参考方案
环境: Win11 专业版 HP 笔记本 傲梅分区软件 闪迪16G U盘 Win10 官方镜像文件 Win11PE 系统安装U盘 USB固态硬盘盒 问题描述: 起因 开始使用windows自动磁盘管理工具压缩不了磁盘,提示无法将卷压缩到超出任何不可移动的文件所在点,关闭系统保护还原,删除系统创建…...
7-1、S曲线加减速原理【51单片机控制步进电机-TB6600系列】
摘要:本节介绍步进电机S曲线相关内容,总共分四个小节讨论步进电机S曲线相关内容 根据上节内容,步进电机每一段的速度可以任意设置,但是每一段的速度都会跳变,当这个跳变值比较大的时候,电机会发生明显的…...
golang 通過ssh連接遠程服務器 控制
1.下載依賴 go get golang.org/x/crypto/ssh 2.import import ("fmt""log""time""golang.org/x/crypto/ssh" )3.使用 func pwdConnect(sshHost, sshUser, sshPassword string, sshPort int) (*ssh.Client, error) {// 创建ssh登录…...
使用VSCode开发Django指南
使用VSCode开发Django指南 一、概述 Django 是一个高级 Python 框架,专为快速、安全和可扩展的 Web 开发而设计。Django 包含对 URL 路由、页面模板和数据处理的丰富支持。 本文将创建一个简单的 Django 应用,其中包含三个使用通用基本模板的页面。在此…...
日语学习-日语知识点小记-构建基础-JLPT-N4阶段(33):にする
日语学习-日语知识点小记-构建基础-JLPT-N4阶段(33):にする 1、前言(1)情况说明(2)工程师的信仰2、知识点(1) にする1,接续:名词+にする2,接续:疑问词+にする3,(A)は(B)にする。(2)復習:(1)复习句子(2)ために & ように(3)そう(4)にする3、…...
Cilium动手实验室: 精通之旅---20.Isovalent Enterprise for Cilium: Zero Trust Visibility
Cilium动手实验室: 精通之旅---20.Isovalent Enterprise for Cilium: Zero Trust Visibility 1. 实验室环境1.1 实验室环境1.2 小测试 2. The Endor System2.1 部署应用2.2 检查现有策略 3. Cilium 策略实体3.1 创建 allow-all 网络策略3.2 在 Hubble CLI 中验证网络策略源3.3 …...
Mac软件卸载指南,简单易懂!
刚和Adobe分手,它却总在Library里给你写"回忆录"?卸载的Final Cut Pro像电子幽灵般阴魂不散?总是会有残留文件,别慌!这份Mac软件卸载指南,将用最硬核的方式教你"数字分手术"࿰…...
DBAPI如何优雅的获取单条数据
API如何优雅的获取单条数据 案例一 对于查询类API,查询的是单条数据,比如根据主键ID查询用户信息,sql如下: select id, name, age from user where id #{id}API默认返回的数据格式是多条的,如下: {&qu…...
数据库分批入库
今天在工作中,遇到一个问题,就是分批查询的时候,由于批次过大导致出现了一些问题,一下是问题描述和解决方案: 示例: // 假设已有数据列表 dataList 和 PreparedStatement pstmt int batchSize 1000; // …...
自然语言处理——循环神经网络
自然语言处理——循环神经网络 循环神经网络应用到基于机器学习的自然语言处理任务序列到类别同步的序列到序列模式异步的序列到序列模式 参数学习和长程依赖问题基于门控的循环神经网络门控循环单元(GRU)长短期记忆神经网络(LSTM)…...
高效线程安全的单例模式:Python 中的懒加载与自定义初始化参数
高效线程安全的单例模式:Python 中的懒加载与自定义初始化参数 在软件开发中,单例模式(Singleton Pattern)是一种常见的设计模式,确保一个类仅有一个实例,并提供一个全局访问点。在多线程环境下,实现单例模式时需要注意线程安全问题,以防止多个线程同时创建实例,导致…...
《C++ 模板》
目录 函数模板 类模板 非类型模板参数 模板特化 函数模板特化 类模板的特化 模板,就像一个模具,里面可以将不同类型的材料做成一个形状,其分为函数模板和类模板。 函数模板 函数模板可以简化函数重载的代码。格式:templa…...
AGain DB和倍数增益的关系
我在设置一款索尼CMOS芯片时,Again增益0db变化为6DB,画面的变化只有2倍DN的增益,比如10变为20。 这与dB和线性增益的关系以及传感器处理流程有关。以下是具体原因分析: 1. dB与线性增益的换算关系 6dB对应的理论线性增益应为&…...
