Kubernetes-Taint (污点)和 Toleration(容忍)

news2024/12/26 13:33:19

目录

一、Taint(污点)

1.污点的组成

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

3.污点实验:

二、Toleration(容忍)

1.容忍设置的方案

2.容忍实验:


       Taint 和 toleration 相互配合,可以用来避免 pod 被分配到不合适的节点上。每个节点上都可以应用一个或多个 taint ,这表示对于那些不能容忍这些 taint 的 pod,是不会被该节点接受的。如果将 toleration 应用于 pod 上,则表示这些 pod 可以(但不要求)被调度到具有匹配 taint 的节点上。

一、Taint(污点)

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

1.污点的组成

         key=value:effect

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

NoSchedule:表示 k8s 将不会将 Pod 调度到具有该污点的 Node 上

PreferNoSchedule:表示 k8s 将尽量避免将 Pod 调度到具有该污点的 Node 上

NoExecute:表示 k8s 将不会将 Pod 调度到具有该污点的 Node 上,同时会将 Node 上已经存在的 Pod 驱逐出去。

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

kubectl taint nodes node1 key1=value1:NoSchedule
    # 设置污点

kubectl describe node  node-name
    # 节点说明中,查找 Taints 字段

kubectl taint nodes node1 key1:NoSchedule-
    # 去除污点

3.污点实验:

kubectl describe node k8s-master01
    #主节点自带污点,所以master节点不能被调度

kubectl taint node k8s-master01 node-role.kubernetes.io/master=:NoSchedule-
	#取消master节点的污点

kubectl describe node k8s-master01
    #查看污点已被删除

kubectl create deployment taint_deploy --image=nginx:latest
    #创建名为taint_deploy的deployment,使用nginx:latest作为pod内容器创建的镜像。

kubectl scale deployment taint_deploy --replicas=20
    #设置刚刚创建的deployment的pod副本数为20

kubectl get pod -o wide
    #观察刚刚创建的pod,因为取消了master节点的污点,所以pod可以被调度到master节点运行了
    #master节点没有污点的情况下,运行daemonset,master节点也会运行一个daemonset。

二、Toleration(容忍)

       设置了污点的 Node 将根据 taint 的 effect:NoSchedule、PreferNoSchedule、NoExecute 和 Pod 之间产生互斥的关系,Pod 将在一定程度上不会被调度到 Node 上。 但我们可以在 Pod 上设置容忍 ( Toleration ) ,意思是设置了容忍的 Pod 将可以容忍污点的存在,可以被调度到存在污点的 Node 上。

pod.spec.tolerations

1.容忍设置的方案

tolerations:	#容忍

第一种方案:
- key: "key1"	#指定污点的key1
  operator: "Equal"	#运算符等于
  value: "value1"	#value是污点value1
  effect: "NoSchedule"	#策略是NoSchedule
#这种写法的含义是key,value,effect必须全部匹配,有一个不一样都匹配不到。

第二种方案:
- key: "key1"
  operator: "Equal"
  value: "value1"
  effect: "NoExecute"
  tolerationSeconds: 3600	#容忍3600秒

第三种方案:
- key: "key2"		#只要匹配到key和dffect,value是什么无所谓。
  operator: "Exists"
  effect: "NoSchedule"

例:

Ⅰ、当不指定 key 值时,表示容忍所有的污点 key:** 
tolerations:
- operator: "Exists"		#只写一个存在,只要有污点,就能容忍

Ⅱ、当不指定 effect 值时,表示容忍所有的污点作用**
tolerations:
- key: "key"
  operator: "Exists"		#只要key匹配到了,其他的无所谓

Ⅲ、有多个 Master 存在时,防止资源浪费,可以如下设置
kubectl taint nodes Node-Name node-role.kubernetes.io/master=:PreferNoSchedule

2.容忍实验:

kubectl taint node k8s-master01 node-role.kibernetes.io/master=:NoSchedule	
	#将主节点的污点恢复回来

kubectl get daemonset -n kube-system
    #查看有哪些daemonset资源

kubectl get daemonset -n kube-system calico-node -o yaml
    #查看calico的容忍
    #策略NoSchedule,运算符Exists(存在),key和value无所谓
	#value和策略无所谓
	#还能容忍NoExecute策略的,value和key无所谓

kubectl describe node k8s-master01
    #查询master节点的key

vim tolerations_daemonset.yaml

apiVersion: apps/v1
kind: DaemonSet
metadata:
  name: tolerations-daemonset
  labels:
    app: daemonset
spec:
  selector:
    matchLabels:
      name: tolerations-daemonset-pod
  template:
    metadata:
      labels:
        name: tolerations-daemonset-pod
    spec:
      tolerations:
      - key: "node-role.kubernetes.io/master"    #master节点的污点的key。
        operator: "Exists"    #匹配规则为exists,存在key就容忍。
      containers:
      - name: tolerations-daemonset-pod
        image: nginx:latest
        imagePullPolicy: IfNotPresent

kubectl apply -f tolerations_daemonset.yaml

kubectl get daemonset
    #查看创建的daemonset

kubectl get pod -o wide
    #查看daemonset的pod是否调度在master上。

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

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

相关文章

VUE3好看的我的家乡网站模板源码

文章目录 1.设计来源1.1 首页界面1.2 旅游导航界面1.3 上海景点界面1.4 上海美食界面1.5 上海故事界面1.6 联系我们界面1.7 在线留言界面 2.效果和结构2.1 动态效果2.2 代码结构 源码下载 作者:xcLeigh 文章地址:https://blog.csdn.net/weixin_43151418/…

虹科方案丨湿热灭菌工艺验证解决方案,确保所有产品和容器达到无菌要求

来源:虹科环境监测技术 虹科方案丨湿热灭菌工艺验证解决方案,确保所有产品和容器达到无菌要求 原文链接:https://mp.weixin.qq.com/s/O-pKQdehB9mHSETpU8egbA 欢迎关注虹科,为您提供最新资讯! #蒸汽灭菌 #高压灭菌 …

小程序直播系统源码_报价与开发_OctShop

近几年,随着直播的火热,人们对于直播带货是相当的熟悉了,逐渐渗透到各行各业中,小程序直播可以实时的更全面的传递商品信息,同时还可以与主播进行互动,可以通过直播聚集的人气打造团购气氛,通过…

LSTM时间序列预测

本文借鉴了数学建模清风老师的课件与思路,可以点击查看链接查看清风老师视频讲解:【1】演示:基于LSTM深度学习网络预测时间序列(MATLAB工具箱)_哔哩哔哩_bilibili % Forecast of time series based on LSTM deep learn…

win 下使用 cmd 运行 jar 包

1、使用 Win R 输入 cmd 命令打开命令提示符 2、在 cmd 窗口中输入以下命令 java -jar xxxxxx.jar 运行 jar 包,控制台出现中文乱码 原因是 windows 默认使用 GBK 编码格式,程序使用 UTF-8 编码格式 将编码格式改为 UTF-8 编码,在 cmd 窗…

C#中IsNullOrEmpty和IsNullOrWhiteSpace的区别?

前言 今天我们一起来探讨C#中两个常用的字符串处理方法:IsNullOrEmpty和IsNullOrWhiteSpace。这两个方法在处理字符串时非常常见,但是它们之间存在一些细微的区别。在本文中,我们将详细解释这两个方法的功能和使用场景,并帮助您更…

Qt Quick程序的发布|Qt5中QML和Qt Quick 的更改

# Quick程序的发布旧版做法 # Qt5中QML和Qt Quick 的更改 1.QML语言的更改(Qt4->Qt5) 在QML语言中,只有少量更改会影响QML代码的迁移:无法直接导入单独的文件(例如:import"MyType.qml”),需要导人该文件所在的目录; JavaScript文件中的相对路径被解析…

webassembly003 whisper.cpp的python绑定实现+Cython+Setuptools

python绑定项目 官方未提供python的封装绑定,直接调用执行文件 https://github.com/stlukey/whispercpp.py提供了源码和Cpython结合的绑定 https://github.com/zhujun1980/whispercpp_py提供了ctype方式的绑定,需要先make libwhisper.so Pybind11 bi…

你真的会数据结构吗:顺序表

❀❀❀ 文章由不准备秃的大伟原创 ❀❀❀ ♪♪♪ 若有转载,请联系博主哦~ ♪♪♪ ❤❤❤ 致力学好编程的宝藏博主,代码兴国!❤❤❤ 又和大家见面啦!在大家看到这个标题的时候其实就已经发现了:我们的C语言的基础知识大…

Shell脚本的if条件语句

目录 1.单分支结构 2.双分支结构 3.多分支结构 4.例题 1.单分支结构 实际上使用“&&”和“||”逻辑测试已经可以完成简单的判断并执行相应的操作,但是当需要选择执行的命令语句较多时,这种方式将使执行代码显得很复杂,不好理解。…

gdzwfw某省公共资源交易平台逆向学习

声明:本文中网站仅为学习技术使用,请勿暴力爬取数据。 学习地址:aHR0cHM6Ly95Z3AuZ2R6d2Z3Lmdvdi5jbi8jLzQ0L2p5Z2c 此网站采用请求头反爬,难点是请求头中几个参数是如何生成的(别问为什么知道是请求头,一…

学单片机前先学什么?

学单片机前先学什么? 在开始前我有一些资料,是我根据网友给的问题精心整理了一份「单片机的资料从专业入门到高级教程」, 点个关注在评论区回复“888”之后私信回复“888”,全部无偿共享给大家!!&#xff…

77_组合

描述 给定两个整数 n 和 k,返回范围[1, n]中所有可能的 k 个数的组合。 你可以按任何顺序返回答案。 思路 数组问题 从横向上来看往往有 遍历、滑动窗口、动态规划等思路。但是,其实在遍历这种横向取数过程中,可以根据条件的判断形成树形操作…

一键拥有你的GPT4

这几天我一直在帮朋友升级ChatGPT,现在已经可以闭眼操作了哈哈😝。我原本以为大家都已经用上GPT4,享受着它带来的巨大帮助时,但结果还挺让我吃惊的,还是有很多人仍苦于如何进行升级。所以就想着写篇教程来教会大家如何…

山西电力市场日前价格预测【2024-01-24】

日前价格预测 预测说明: 如上图所示,预测明日(2024-01-24)山西电力市场全天平均日前电价为320.98元/MWh。其中,最高日前电价为480.67元/MWh,预计出现在18:30。最低日前电价为0.00元/MWh,预计出…

RabbitMQ交换机与队列

交换机 RabbitMQ 消息传递模型的核心思想是: 生产者生产的消息从不会直接发送到队列。实际上,通常生产者甚至都不知道这些消息传递传递到了哪些队列中。 相反, 生产者只能将消息发送到交换机(exchange),交换机工作的内容非常简单&#xff0c…

3.chrony服务器

目录 1. 简介 1.1. 重要性 1.2. Linux的两个时钟 1.3. 设置日期时间 1.3.1. timedatectl命令设置 1.3.2. date命令设置 1.4. NTP 1.5. Chrony介绍 2. 安装与配置 2.1. 安装: 2.2. Chrony配置文件分析 2.3. 同步时间服务器 2.3.1. 授时中心 2.3.2. 实验…

基于机会网络编码(COPE)的卫星网络路由算法matlab仿真

目录 1.程序功能描述 2.测试软件版本以及运行结果展示 3.核心程序 4.本算法原理 4.1机会网络编码(COPE)概述 4.2COPE算法原理 4.2.1 编码机会预测 4.2.2 编码决策 4.2.3 数据包编码 4.2.4 数据包传输 4.2.5 数据包解码 5.完整程序 1.程序功能…

notepad++ v8.5.3 安装插件,安装失败怎么处理?下载进度为0怎么处理?

notepad v8.5.3 安装插件,安装失败?下载进度为0,怎么处理? 安装 进度 进度条没有进度 ,然后就退出了,自动打开程序,不知道什么问题,插件管理下面也没有插件显示 找到问题了&#x…

【python文件】生成的csv文件没两行数据之间有一个空行

问题描述 用python代码将数据写入csv文件,但生成的csv文件没两行数据之间有一个空行,如下图所示: 解决办法 在open函数中添加newline,如以下代码所示,即可解决这一问题。 with open(r"C:\Users\xxx\Desktop\DR…