热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

K8s污点(Taints)与容忍(Tolerations)

概念先来看一个容忍标记和污点标记的调度关系图:与亲和性(点击查看)不同的是:Taints(污点)

概念

先来看一个容忍标记和污点标记的调度关系图:
在这里插入图片描述

  • 与 亲和性(点击查看) 不同的是:Taints(污点)恰恰相反,它可以 Pod 不被调度到污点 Node,甚至将已经在污点中运行的 Pod 驱逐掉。

  • Taints(污点)是Node的一个属性,设置了 Taints 后,因为有了污点,所以 Kubernetes 是不会将Pod调度到这个Node上的,但是有时候我们还想让系统稍微 “人情化/灵活一些”,于是Kubernetes又给Pod设置了 Tolerations(容忍)这样的属性,只要 Pod 能够容忍Node上的污点,那么Kubernetes就会忽略Node上的污点,就还是能够(不是必须)把Pod调度过去。

  • 因为污点默认排斥所有Pod的特性,我们有时候可以反向利用一下这个规则。比如给某一个特定Node标记污点后,然后给特定的Pod设置对应的容忍规则,来实现让这个Node只给这个Pod使用的目的(就好比一个集群里有100个Node,如果使用亲和性来实现,你得为99台机器设定规则,而使用 “污点+容忍度+亲和性组合配置相应的策略” 就可以只处理1台机器的规则就可以了)。

  • Taints 通常与 Tolerations 配合使用。


实例


污点


1、设置污点

语法:kubectl taint nodes [node_name] key=value:[effect]

其中[effect] 可取值 NoSchedulePreferNoScheduleNoExecute

  • NoSchedule:Pod 不会被调度到标记为 Taints 节点,只会影响新的 Pod 调度,当前已经在Node上的 Pod 保持不受影响。

  • PreferNoSchedule:这是一个NoSchedule 的软策略版本,系统会尽量(非强制)避免在节点上放置一个不能容忍污点的 Pod。

  • NoExecute:该选项意味着一旦 Taint 生效,如该节点内正在运行的 Pod 没有对应 Tolerations 设置,会直接被逐出。

示例:kubectl taint node myk8s-node1 test=node1:NoSchedule

一个 node 上可以设置多个污点标记。


2、查看已经设置的污点

语法:kubectl describe node [node_name]

在输出的信息中查看 Taints 信息

示例:kubectl describe node myk8s-node1

3、删除污点

语法:kubectl taint nodes [node_name] key[:effect]-

去除污点标记,使用对应规则后增加一个 “减号符号”,根据 key及effect 信息去除,不需要指定 value,有两种去除方式:

示例:
1、去除指定 key 下的指定 effect 类型的污点:kubectl taint nodes myk8s-node1 test:NoSchedule-
2、去除指定 key 下的所有污点:kubectl taint nodes myk8s-node1 test-

Pod 容忍度


1、规则说明

对于 tolerations 属性的写法,主要包括 key、operator、value、effect、 五个字段,其中 key、value、effect 这3个字段要与 Node 中设置的 Taint 保持一致。

其中 operator 对应 Exists 和 Equal 可选,要点如下:

  • 如果 operator 的值是Exists(存在),则 value 属性不应该提供。

  • 如果 operator 的值是Equal(等于),则表示其 key 和 value 应分别等于 Node 中 Taint 的 key 和
    value 才表示规则对应。

  • 如果不指定operator属性,则默认值为Equal。

另外,还有两个特殊情况:

  • 空的 key 如果再配合 Exists 就能匹配所有的key与value ,也是是能容忍所有 node 的所有 Taints。

  • 空的 effect 匹配所有的 effect。

最后,字段 tolerationSeconds 为可选字段(应对 NoExecute 规则的污点),用来设置当规则符合驱逐条件的情况下,Pod 还可以在这个 Node 之上运行多久,给它们一点宽限的时间,到时间才驱逐(默认是立即驱逐)。

2、Pod 配置示例

spec:tolerations:- key: "test"operator: "Equal" #如果操作符为Exists,那么 value 属性不应该提供value: "node1"effect: "NoExecute"tolerationSeconds: 180 # 符合强制驱逐条件下,宽限时间为180秒- key: "test1" # 必须不能调度到污点配置 “存在test1这个key” 的节点上operator: "Exists" effect: "NoSchedule"- key: "test2" # 必须不能调度到污点配置 “test2=node99” 的节点上operator: "Equal"value: "node99"effect: "NoSchedule"- key: "test3" # 尽量不要调度到污点配置 “test3=node88” 的节点上operator: "Equal"value: "node88"effect: "PreferNoSchedule"


(END)


推荐阅读
  • 在 Kubernetes 中,Pod 的调度通常由集群的自动调度策略决定,这些策略主要关注资源充足性和负载均衡。然而,在某些场景下,用户可能需要更精细地控制 Pod 的调度行为,例如将特定的服务(如 GitLab)部署到特定节点上,以提高性能或满足特定需求。本文深入解析了 Kubernetes 的亲和性调度机制,并探讨了多种优化策略,帮助用户实现更高效、更灵活的资源管理。 ... [详细]
  • 云原生边缘计算之KubeEdge简介及功能特点
    本文介绍了云原生边缘计算中的KubeEdge系统,该系统是一个开源系统,用于将容器化应用程序编排功能扩展到Edge的主机。它基于Kubernetes构建,并为网络应用程序提供基础架构支持。同时,KubeEdge具有离线模式、基于Kubernetes的节点、群集、应用程序和设备管理、资源优化等特点。此外,KubeEdge还支持跨平台工作,在私有、公共和混合云中都可以运行。同时,KubeEdge还提供数据管理和数据分析管道引擎的支持。最后,本文还介绍了KubeEdge系统生成证书的方法。 ... [详细]
  • Kubernetes 1.9.0 Alpha.1 发布公告 [Kubernetes 最新动态]
    近日,Kubernetes 社区发布了两个新版本:1.8.0 RC.1 和 1.9.0 Alpha.1。这是 k8s 1.9.0 的首次发布,自 v1.8.0 Alpha.3 以来进行了大量更新,共提交了 279 次。 ... [详细]
  • 检查 Kubernetes 系统命名空间中的 Pod 状态时,发现 Metric Server Pod 虽然处于运行状态,但存在异常:日志显示 'it doesn’t contain any IP SANs'。 ... [详细]
  • Envoy 流量分配策略优化
    在本研究中,我们对Envoy的流量分配策略进行了优化,旨在提高系统的稳定性和性能。实验环境包括一个前端代理服务(Envoy,IP地址为172.31.57.10)和五个后端服务。通过调整Envoy的配置,实现了更高效的流量分发和负载均衡,显著提升了整体系统的响应速度和可靠性。 ... [详细]
  • 前言: 网上搭建k8s的文章很多,但很多都无法按其说明在阿里云ecs服务器成功搭建,所以我就花了些时间基于自己成功搭建k8s的步骤写了个操作手册,希望对想搭建k8s环境的盆友有所帮 ... [详细]
  • Kubernetes 1.2 新功能解析:multizone(多区)支持
    导论Kubernetes1.2增加的一个新的功能是把一个集群跑在多个failurezone里(谷歌GCE管它叫“zone”,亚马逊AWS管它们叫“ava ... [详细]
  • 篇首语:本文由编程笔记#小编为大家整理,主要介绍了(2022版)一套教程搞定k8s安装到实战|Affinity相关的知识,希望对你有一定的参考价值。视频来源ÿ ... [详细]
  • k8snamespace配置cpu最大和最小限额
    世界上并没有完美的程序,但是我们并不因此而沮丧,因为写程序就是一个不断追求完美的过程。问:如何为namespace配置最大和最小限额&#x ... [详细]
  • 本文介绍了如何通过安装和配置php_uploadprogress扩展来实现文件上传时的进度条显示功能。通过一个简单的示例,详细解释了从安装扩展到编写具体代码的全过程。 ... [详细]
  • Hadoop MapReduce 实战案例:手机流量使用统计分析
    本文通过一个具体的Hadoop MapReduce案例,详细介绍了如何利用MapReduce框架来统计和分析手机用户的流量使用情况,包括上行和下行流量的计算以及总流量的汇总。 ... [详细]
  • 在使用mybatis进行mapper.xml测试的时候发生必须为元素类型“mapper”声明属性“namespace”的错误项目目录结构UserMapper和UserMappe ... [详细]
  • Excel技巧:单元格中显示公式而非结果的解决方法
    本文探讨了在Excel中如何通过简单的方法解决单元格显示公式而非计算结果的问题,包括使用快捷键和调整单元格格式两种方法。 ... [详细]
  • Kubernetes(k8s)基础简介
    Kubernetes(k8s)基础简介目录一、Kubernetes概述(一)、Kubernetes是什么(二& ... [详细]
  • k8shelm官网:https:helm.sh点击charts:https:artifacthub.iopackagessearch?sortrelevance&page11.1h ... [详细]
author-avatar
就就解决
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有