K8S调度器之污点和容忍

news2024/11/18 15:37:41

1. Taint和Toleration

  • 节点亲和性,是pod的一种属性(偏好或硬性要求),它使pod被吸引到一类特定的节点。Taint则相反,它使节点能够排斥一类特定的pod。
  • TaintToleration相互配合,可以用来避免pod被分配到不合适的节点上。每个节点上都可以应用一个或多个taint,这表示对于那些不能容忍这些taint的pod,是不会被该节点接爱的。如果将toleration应用于pod上,则表示这些pod可以(但不要求)被调度到具有匹配taint的节点上

2. 污点(Taint)

2.1. 污点(Taint)的组成

  • 使用kubectl taint命令可以给某个Node节点设置污点,Node被设置上污点之后就和Pod之间存在了一种相斥的关系,可以让Node拒绝Pod的调度执行,甚至将Node已经存在的Pod驱逐出去

  • 每个污点的组成如下:

key=value:effect
  • 每个污点有一个keyvalue作为污点的标签,其中value可以为空,effect描述污点的作用。当前taint effect支持如下三个选项:

    • NoSchedule:表示k8s将不会将Pod调度到具有该污点的Node上
    • PreferNoSchedule:表示k8s将尽量避免将Pod调度到具有该污点的Node上
    • NoExecute:表示 k8s将不会将 Pod调度到具有该污点的Node上,同时会将Node上已经存在的Pod驱逐出去

2.2. 污点的设置、查看和去除

//设置污点:
[root@master1 scheduler]# kubectl taint nodes node1 check=yangshuang:NoExecute     ---在"node1"的节点上添加一个名为"check=yangshuang"的污点(taint),并指定该污点的效果为"NoExecute",即将污点节点上的Pod驱逐(Evict)
node/node1 tainted


//去除污点:
[root@master1 scheduler]# kubectl taint nodes node1 check=yangshuang:NoExecute-
node/node1 untainted

//去除master的污点
kubectl taint nodes --all node-role.kubernetes.io/master-

3. 容忍(Tolerations)

  • 设置了污点的 Node将根据 tainteffect: NoSchedule、PreferNoSchedule、 NoExecute和Pod之间产生互斥的关系,Pod将在一定程度上不会被调度到Node上。但我们可以在Pod上设置容忍(Toleration),意思是设置了容忍的Pod将可以容忍污点的存在,可以被调度到存在污点的Node上。
//在node1上添加污点:
[root@master1 scheduler]# kubectl taint nodes node1 check=yangshuang:NoExecute

vim  node-affinity-pod-1.yaml

apiVersion: v1  #指定使用的Kubernetes API版本
kind: Pod    #指定资源的类型,这里是Pod
metadata:    #包含有关Pod元数据的信息,如名称和标签
  name: my-nginx  #指定pod的名称
  labels:  #Pod定义标签,用于标识和组织Pod
    app: my-nginx
spec:   #定义了Pod的规范
  affinity:   #指定节点亲和性配置
    nodeAffinity:    #定义节点亲和性规则
      requiredDuringSchedulingIgnoredDuringExecution:  #指定在调度过程中必须满足的节点亲和性规则
        nodeSelectorTerms:  #定义节点选择器的条件
        - matchExpressions:  #定义节点选择器的匹配表达式
          - key: kubernetes.io/hostname   #指定用于匹配的节点标签键
            operator: In  #指定匹配操作符。在此示例中,使用的是In,表示匹配具有指定值的节点
            values:  #指定要匹配的节点的值列表。在此示例中,匹配名为node1的节点,意思是在node1节点创建该pod
            - node1
  containers:   #容器列表
  - name: my-nginx  #容器名称
    image: nginx   #容器使用的镜像
  tolerations:    #指定Pod容忍的规则
  - key: check   #指定用于匹配的标签的键
    operator: Equal  #指定匹配操作符
    value: yangshuang   #指定用于匹配的标签值
    effect: NoExecute   #指定容忍的效果,可以是NoSchedule、PreferNoSchedule或NoExecute
    tolerationSeconds: 3600   #指定容忍的时间持续秒数

//创建pod
[root@master1 scheduler]# kubectl apply -f node-affinity-pod-1.yaml
pod/my-nginx created

//查看pod是否创建成功
[root@master1 scheduler]# kubectl get pod -o wide
NAME       READY   STATUS    RESTARTS   AGE   IP            NODE    NOMINATED NODE   READINESS GATES
my-nginx   1/1     Running   0          9s    10.244.1.65   node1   <none>           <none>

---可以看的出来pod在node1上创建的,这样就达到了容忍的效果。
  • 其中key、vaule、effect要与Node上设置的taint保持一致,如图所示:
    在这里插入图片描述

  • operator的值为Exists将会忽略value值

  • tolerationSeconds用于描述当pod需要被驱逐时可以在Node上继续保留运行的时间

  • 当不指定key值时,表示容忍所有污点key:

tolerations:
- operator: Exists
  • 当不指定effect值时,表示容忍所有的污点作用
tolerations:
- key: key
  operator: Exists

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

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

相关文章

阿里云ECS服务器vCPU什么意思?

阿里云ECS服务器vCPU和CPU是什么意思&#xff1f;CPU和vCPU有什么区别&#xff1f;一台云服务器ECS实例的CPU选项由CPU物理核心数和每核线程数决定&#xff0c;CPU是中央处理器&#xff0c;一个CPU可以包含若干个物理核&#xff0c;通过超线程HT&#xff08;Hyper-Threading&am…

chatgpt赋能python:Python中如何合并相同key的元素?

Python 中如何合并相同 key 的元素&#xff1f; 在 Python 编程中&#xff0c;很多时候需要对列表或字典进行合并相同 key 的操作&#xff0c;这篇文章将介绍合并相同 key 的方法及应用。 什么是相同 key 合并&#xff1f; 相同 key 合并指的是将具有相同 key 的元素合并为一…

关于防火墙配置长连接的设置

长连接的使用场景 当业务中客户端和服务器长时间无数据交互&#xff0c;空闲时间超过1800秒&#xff0c;会话会因超时被清除。后续客户端没有重新发起连接&#xff0c;直接发送控制报文时导致数据不通。常见于数据库连接。 重点说明 以天为单位的会话超时需要开启长效会话比例…

考研高数考点总结

一.极限 1.函数的四性&#xff1a; 单调性、周期性、奇偶性、有界性&#xff1a; 周期性、奇偶性各记住一个结论。 有界性判定&#xff1a; 1.定义法&#xff1a;-M<绝对值<M2.函数性质&#xff1a;函数在闭区间上连续一定有界 闭区间连续》开区间连续加左端点右极限…

ML算法——最优化|凸优化随笔【机器学习】【端午节创作】

文章目录 数学预备知识1、最优化问题2、凸优化2.1、梯度下降2.2、牛顿法2.3、阻尼牛顿法2.4、拟牛顿法2.5、总结 数学预备知识 1、最优化问题 最优化问题指的是在给定条件下&#xff0c;找到一个目标函数的最优解&#xff0c;即找到能够使目标函数取得最大值或最小值的变量取…

​LeetCode解法汇总1254. 统计封闭岛屿的数目

目录链接&#xff1a; 力扣编程题-解法汇总_分享记录-CSDN博客 GitHub同步刷题项目&#xff1a; https://github.com/September26/java-algorithms 原题链接&#xff1a;力扣 描述&#xff1a; 二维矩阵 grid 由 0 &#xff08;土地&#xff09;和 1 &#xff08;水&#xf…

HuggingFace-RL-Unit2-Part2——初探Q-Learning

初探Q-Learning 文章目录 初探Q-Learning什么是Q-Learning&#xff1f;Q-Learning 算法第一步: 初始化Q-表第二步: 使用epsilon贪心策略选择一个动作第三步: 执行动作At, 得到奖励Rt1和下一个状态St1第四步: 更新Q(St, At) 异策略 vs 同策略Q-Learning算法实例第一步: 初始化Q-…

drone、gogs、docker与项目集成实现自动化部署

目录 前言项目目录结构目录结构测试文件 文件内容Dockerfilerun.shdrone.yml 测试打包部署中查看容器访问项目成功 常见问题Gogs 推送 URL 被解析到默认禁用的本地网络地址1、drone登录没有权限2、cannot ping the remote server3、推送代码以后不能自动clone4、maven编译报错F…

SynchronousQueue源码

介绍 SynchronousQueue作为阻塞队列的时候&#xff0c;对于每一个take的线程会阻塞直到有一个put的线程放入元素为止&#xff0c;反之亦然。在SynchronousQueue内部没有任何存放元素的能力。所以类似peek操作或者迭代器操作也是无效的&#xff0c;元素只能通过put类操作或者ta…

JDBC 和数据库连接池

JDBC 和数据库连接池 1. JDBC 概述 1.1 基本介绍 JDBC为访问不同的数据库提供了统一的接口&#xff0c;为使用者屏蔽了细节问题Java程序员使用JDBC&#xff0c;可以连接任何提供了JDBC驱动程序的数据库系统&#xff0c;从而完成对数据库的各种操作。JDBC的基本原理图[重要!]…

【编译、链接、装载十三】内存中的栈——图解栈的运行过程

【编译、链接、装载十三】内存中的栈——图解栈的运行过程 一、程序的内存布局二、栈1、什么是栈2、寄存器 三、函数执行四、结合汇编——分析函数调用1、demo2、反汇编3、反汇——图解反汇编、栈帧、寄存器 一、程序的内存布局 看看加上动态链接之后进程的地址空间是如何分布…

详解Spring配置文件

⭐作者介绍&#xff1a;大二本科网络工程专业在读&#xff0c;持续学习Java&#xff0c;努力输出优质文章 ⭐作者主页&#xff1a;逐梦苍穹 ⭐所属专栏&#xff1a;JavaEE、Spring Spring配置文件 1、简介2、XML3、\<Bean\>3.1、Bean标签范围配置3.2、生命周期3.3、⭐实例…

word文档批量生成工具(附免费软件)(按Excel表格内容自动替换内容生成文档)

批量生成word文档是让人无比厌恶但有时又不得不做的事情。比如学校要给拟录取的学生发通知书&#xff0c;就可能需要批量生成一批只有“姓名”、“学院”和“专业”不同&#xff0c;其他内容都相同的word文档以供打印&#xff08;事实上直接生成pdf是更好的选择&#xff0c;这个…

chatgpt赋能python:Python如何计算p值?

Python如何计算p值&#xff1f; 在统计学中&#xff0c;p值是估计观察到的结果是由随机因素导致的概率。在Python中&#xff0c;我们可以使用一些统计库来计算p值。 常见的统计库 Python中有很多统计库可以用来计算p值。其中&#xff0c;SciPy是最常用的统计库之一。它包含了…

【American English】去超市买东西常用对话,物品名字

不懂不丢人&#xff0c;不懂装懂才丢人。最近有点犯这毛病&#xff0c;多写一些东西消除一下。 无论什么知识都是多了才能成体系&#xff0c;更多自己在美国的小总结可见专栏&#xff1a;English。 文章目录 找寻物品优惠或折扣试吃结账退货离开 找寻物品 Excuse me, where can…

Linux——文件的概念、操作和理解

引言 文件 文件内容 文件属性 要操作文件&#xff0c;就要先打开文件。根据冯诺依曼体系&#xff0c;只能操作内存中的数据。因此要先把文件内容加载到存储器&#xff0c;即内存中。 文件接口 语言层面的文件接口 FILE* fopen(const char *path, const char *mode); int …

网页3行字,成立4周就快成独角兽!大模型创业狂飙中

先来看看这家公司的官网截图&#xff1a; 对的&#xff0c;你没有看错&#xff0c;加上公司名字也就只有4行字。 人工智能正在迅速发展&#xff1a;一家成立仅四周的初创公司获得了1.13亿美元的种子轮融资&#xff0c;将与OpenAI竞争&#xff0c;在构建、训练和应用大型语言模…

Ubuntu 如何启动、停止或重启服务

在本文中&#xff0c;我们向您介绍在 Ubuntu 中启动、停止和重启服务的方法。 列出 Ubuntu 中的所有服务 在开始之前&#xff0c;先获取计算机上所有服务的列表&#xff0c;因为我们需要知道服务名称来管理服务。 service --status-all 它将显示 Ubuntu 上的完整服务列表。…

八卦图总结

第一阶段知识汇总 版本号&#xff1a;V1.1 作 者 姓 名&#xff1a; 学 科 专 业&#xff1a; 软件测试 文 档 类 型&#xff1a;第一阶段 汇 总 测 试 基 础 …

strapi系列--如何建表并在原有官方自动生成的api基础上扩展接口,定制化自己的业务逻辑

为什么要进行后端定制呢&#xff1f; 在实际开发过程中&#xff0c;项目中有些需求需要我们定制化自己的业务逻辑&#xff0c;那么我们该如何处理这个需求呢&#xff1f;本文以图文并茂的形式&#xff0c;基于原有官方自动生成的api&#xff0c;定制一个我们自己的业务逻辑接口…