十二、K8S之污点和容忍

污点和容忍

一、概念

k8s 集群中可能管理着非常庞大的服务器,这些服务器可能是各种各样不同类型的,比如机房、地理位置、配置等,有些是计算型节点,有些是存储型节点,此时我们希望能更好的将 pod 调度到与之需求更匹配的节点上。

此时就需要用到污点(Taint)和容忍(Toleration),这些配置都是 key: value 类型的。

K8S的污点和容忍是其中一种高级调度功能,作用是让 Kubernetes 集群中的节点有选择地接受或拒绝来自不同类型 Pod 的调度请求,可以帮助运维人员更好地管理、调度和控制应用程序的部署。

二、污点

在节点上设置污点,当我们在一个节点上打上污点以后,k8s 会认为尽量不要将 pod 调度到该节点上。

配置污点主要分为两类

  • NoSchedule

设置了 NoSchedule 污点的节点将不会被调度器分配新的 Pod,但已经运行的 Pod 不受影响。这个污点用于标记节点暂时无法接受新的 Pod 的情况,例如节点维护或故障。

  • NoExecute

设置了 NoExecute 污点的节点将不会被调度器分配新的 Pod,并且已经运行在该节点上的 Pod,如果它们不容忍该污点,则会被驱逐出该节点。这个污点用于标记节点上的某些服务或资源已经不再可用,而正在运行的 Pod 需要尽快迁移到其他节点。

  • PreferNoSchedule

“软性”的 NoSchedule,尽量避免往该节点上调度,但不能保证完全避免

2.1、使用到的命令
# 为节点打上污点, 这里的key和value是自定义的标签,主要作用是为了解释为什么打污点
kubectl taint node k8s-master key=value:NoExecute# 移除污点,就是打污点的命令后面加一个-
kubectl taint node k8s-master key=value:NoSchedule-# 查看污点
kubectl describe no k8s-master
------------------- 看Taints数据
Taints:             node-role.kubernetes.io/master:NoSchedule
2.2、示例

在K8S中,master节点默认有一个NoSchedule类型的污点,现在我是想通过配置污点的方式将一个运行在节点1的pod转移到 master节点上。

  • 1、去除master污点

    kubectl taint node  node-role.kubernetes.io/master:NoSchedule-
    
  • 2、给节点1添加一个NoExecute 类型的污点

    kubectl taint node k8s-node1 ceshi=t:NoExecute
    

做完这两步之后就会发现pod转移到master节点上运行了

三、容忍

容忍是标注在 pod 上的,当 pod 被调度时,如果没有配置容忍,则该 pod 不会被调度到有污点的节点上,只有该 pod 上标注了满足某个节点的所有污点,则可能会被调度到这些节点

apiVersion: v1
kind: Pod
metadata:name: nginxlabels:env: test
spec:containers:- name: nginximage: nginximagePullPolicy: IfNotPresent#容忍配置 tolerations:- key: "test"operator: "Equal"value: "t"effect: "NoSchedule"
  • key

表示要匹配的污点的键(Key),就是标签的key。必须与节点上设置的污点键一致。

  • operator

表示匹配操作符,可以取值为 “Equal”、“Exists” 或 “DoesNotExist”,分别表示完全匹配、存在匹配和不存在匹配。如果为Exists,则不需要value

  • value

标签的值

  • effect

表示匹配效果(Effect),可以取值为 “NoSchedule”、“PreferNoSchedule” 或 “NoExecute”,分别表示不可调度、尽量避免调度和驱逐。

这四个参数中,前三个主要是为了匹配标签的key-value,effect匹配污点类型

存在两种特殊情况:

如果一个容忍度的 key 为空且 operatorExists, 表示这个容忍度与任意的 key、value 和 effect 都匹配,即这个容忍度能容忍任何污点。

如果 effect 为空,则可以与所有键名 key1 的效果相匹配。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/586650.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

AI绘画工具Midjourney绘画提示词Prompt分享

一、Midjourney绘画工具 SparkAi创作系统是基于ChatGPT进行开发的Ai智能问答系统和Midjourney绘画系统,支持OpenAI-GPT全模型国内AI全模型。本期针对源码系统整体测试下来非常完美,可以说SparkAi是目前国内一款的ChatGPT对接OpenAI软件系统。那么如何搭…

Python-01-print、input、#

目录 1、print函数的使用 2、input函数的使用 3、python中的注释 1、print函数的使用 print:基本输出函数 print(输出内容) eg: a100 b50 print(90) print(a) print(a*b) print("北京欢迎你")#字符串要引号引起…

Chapter 7 - 8. Congestion Management in Ethernet Storage Networks以太网存储网络的拥塞管理

Stomped CRC Counters Stomped CRC counters help in finding the location of bit errors in a network that uses cut-through switches. More precisely, these counters help in finding where bit errors do not exist. Stomped CRC 计数器有助于在使用直通式交换机的网络…

《微信小程序开发从入门到实战》学习六十六

6.5 界面API 6.5.2 导航栏菜单API 使用wx.getMenuButtonBoundingClientRect接口可以获取导航栏菜单按钮(右上角“胶囊”按钮)的布局位置信息。 坐标信息以屏幕左上角为原点。调用该接口不传入参数,返回值为Object类型,包含属性…

数据的复制

基本概念 数据的复制指的是通过网络链接的多台机器保留相同的副本 为什么要进行数据的复制 使得用户和数据在地理上比较接近,因为大数据要求我们将计算安排在数据存放的位置和我们基本的内存模型不是很一样 ,比如磁盘调入内存之类的。即使系统的一部分…

将本地工作空间robot_ws上传到gitee仓库

git config --global user.name "geniusChinaHN" git config --global user.email "12705243geniuschinahnuser.noreply.gitee.com" cd ~/robot_ws #git init#创建原始仓库时候用 git add . git commit -m "上传文件内容描述" #git remote add r…

EOS链Ubuntu环境Install Prebuilt Binaries(安装预构建的二进制文件)的安装

[TOC](EOS链Ubuntu环境Install Prebuilt Binaries(安装预构建的二进制文件)的安装) EOS官网:https://eos.io/ 第一步 Ubuntu安装命令: 以下有两种安装方式,可以任选其一: 本文章已经上传绑定资源,也可以用命令安装。…

学生数据可视化与分析工具 vue3+flask实现

目录 一、技术栈亮点 二、功能特点 三、应用场景 四、结语 学生数据可视化与分析工具介绍 在当今的教育领域,数据驱动的决策正变得越来越重要。为了满足学校、教师和学生对于数据深度洞察的需求,我们推出了一款基于Vue3和Flask编写的学生数据可视化…

【PyQt】(自定义类)QIcon派生,更易用的纯色Icon

嫌Qt自带的icon太丑,自己写了一个,主要用于纯色图标的自由改色。 当然,图标素材得网上找。 Qt原生图标与现代图标对比: 没有对比就没有伤害 Qt图标 网络素材图标 自定义类XJQ_Icon: from PyQt5.QtGui import QIc…

LeetCode---377周赛---Floyd算法+字典树

题目列表 2974. 最小数字游戏 2975. 移除栅栏得到的正方形田地的最大面积 2976. 转换字符串的最小成本 I 2977. 转换字符串的最小成本 II 一、最小数字游戏 这题看懂题意就好,可以结合示例模拟一下,你就会发现规律,本质就是将数组排序&a…

后端程序员React初接触1

后端程序员React初接触 学习react基础与相关库的使用学习 包括react基础 路由 组件库等等 react是用于构建用户界面的JavaScript库 发送请求获取数据处理数据操作dom呈现页面(react帮忙操作dom) 数据渲染为视图 有facebook打造并开源 解决的问题 dom操…

Java 动态树的实现思路分析

Java 动态树的实现 目录概述需求: 设计思路实现思路分析1. 简单Java实现:2.建立父子表存储3.前端的对应的json 字符串方式 参考资料和推荐阅读 Survive by day and develop by night. talk for import biz , show your perfect code,full busy&#xff0…

力扣:63. 不同路径 II(动态规划)

题目: 一个机器人位于一个 m x n 网格的左上角 (起始点在下图中标记为 “Start” )。 机器人每次只能向下或者向右移动一步。机器人试图达到网格的右下角(在下图中标记为 “Finish”)。 现在考虑网格中有障碍物。那…

推荐的 Web 性能计时:多长时间才算太长?

对于加载页面时的缓慢速度没有明确的规定,但有具体的指导原则来指示内容将加载(1 秒)、空闲(50 毫秒)、动画(16.7 毫秒)和响应用户输入(50 到 50 毫秒)。 200 毫秒&#…

SVN下载安装(服务器与客户端)

1.下载 服务器下载:Download | VisualSVN Server 客户端下载:自行查找 2. 服务器安装 双击执行 运行 下一步 同意下一步 下一步 选中安装目录 3. 客户端安装 双击执行 下一步 4. 服务器创建仓库 5. 服务器创建用户 6. 客户端获取资源 文件夹右键

用idea跑起十多年前的项目

一、eclipse的项目 先删掉一些eclipse的配置文件 二、在idea中导入项目 1、导入成功后,先【锤一下】 2、然后发现编译不通过,非常多的报错信息,逐一解决报错 (1)tomcat7配置报错 (2)先删除tom…

java springboot将接口查询数据放在系统中 一小时系统更新一次 避免用户访问接口查询数据库缓慢

真到了公司 很多数据库表 特别是常用的功能业务对应的 都是几百万条起步的数据 查询会比较缓慢 那么 我们就可以不用每次都真的查询数据库 例如 我这里有一个接口 通过 封装的 IBookService.list 函数去查询数据库 接口返回是这样的 我们先在启动类 条件装配上 这个接口所在的…

vivado CDC约束-“设置总线倾斜”对话框

“设置总线倾斜”对话框 在AMD Vivado™ IDE中,可以通过多种方式设置总线偏斜约束: •通过时间约束编辑器。选择窗口 → 时间限制 → 断言 → 设置总线倾斜。从“时序约束编辑器”中,可以添加、删除或修改总线扭曲约束。 注意&#…

【C++】循环结构中的变量的生命周期

在C中&#xff0c;循环结构中变量的生命周期取决于变量的作用域和声明位置。 for(int i 0; i < 5; i) //i为循环变量&#xff0c;在循环结构刚开始时被创建&#xff0c;在整个循环结构结束时被销毁 {int x i; // x为循环体中的变量&#xff0c;在每次开始循环体时会被创…

day11--java高级编程:反射

4 Day18–反射 本章专题与脉络 1. 反射(Reflection)的概念 1.1 反射的出现背景 Java程序中&#xff0c;所有的对象都有两种类型&#xff1a;编译时类型和运行时类型&#xff0c;而很多时候对象的编译时类型和运行时类型不一致&#xff08;多态&#xff09;。 Object obj n…