【kubernetes】污点和容忍

通过污点和容忍度,可以灵活地让 Pod 避开某些节点或者将 Pod 从某些节点驱逐。

一,污点 (taint)

1,概念

相对“节点”而言,标记污点的Node节点,Pod不会部署此节点上。

当我们在一个节点上打上污点以后,k8s 会认为尽量不要将 Pod 调度到该节点上,除非该 Pod 上面表示可以容忍该污点,且一个节点可以打多个污点,此时,则需要Pod 容忍所有污点才会被调度该节点。

污点定义在k8s集群的节点上的一个字段

taints是键值数据,用在Node节点上,定义污点。

2,命令

为节点打上污点:

kubectl taint node [node名] key=value:[影响值]

查看节点的污点:

kubectl describe node [node名]

# 显示内容:键值对
Taints:        node-role.kubernetes.io/control-plane:NoSchedule

删除节点的污点:

kubectl taint node [node名] key=value:[影响值]-

注意:命令后面的“-” 减号,表示删除该污点。

3,taint属性:

影响值effect
  • NoSchedule
    • 如果pod能容忍这个node节点上的污点,就可以调度到这个node节点。
    • 如果pod不能容忍这个node节点上污点,那么Pod就无法调度到该节点上。
    • 如果node上的污点更改/新增加,对其上的pod不产生影响,仅仅对再加入的pod产生影响。
  • NoExecute
    • 如果 Pod 不能忍受这个node节点上的污点(无论是更改,还是新增的污点),Pod 均会马上被驱逐。
    • 如果 Pod 能够忍受这类污点,但没有定义 tolerationseconds属性(时间值) ,则 Pod 还会一直在这个节点上运行。
    • 如果 Pod 能够忍受这类污点,但定义了 tolerationseconds 属性(时间值) , 则 Pod 只能在该Node节点上,继续运行这个指定的时间长度( tolerationseconds)。
  • PreferNoSchedule
    • “最好不,但也可以。” 属于是NoSchedule的柔性版本。

二,容忍 (Toleration)

1,概念

相对 “Pod” 而言,能够容忍某个污点的Pod,就可以部署到所有节点上(包括标记该污点的节点)。

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

tolerations是键值数据,用在pod上,定义容忍度,能容忍哪些污点

2,使用

pod 的 spec 下面配置容忍

spec:
   tolerations:
      -key: "污点的 key"
       value:"污点的 value"
       offect: "NoSchedule", #污点产生的影响
       operator: "Equal" 
       # 表是 value 与污点的 value 要相等,也可以设置为Exists 表示存在 key 即可,此时可以不用配置value

3,tolerations属性:

影响值effect
  • Equal

    • 比较操作类型为 Equal,则意味着必须与污点值做匹配,key/value都必须相同,才表示能够容忍该污点
  • Exists

    • 容忍与污点的比较只比较 key,不比较 value,不关心 value 是什么东西,只要 key 存在,就表示可以容忍。
  • 4
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
污点容忍度是Kubernetes中用来控制Pod调度的机制。污点(Taint)是指在节点上设置的一种属性,用于排斥一类特定的Pod。而容忍度(Toleration)是指在Pod上设置的属性,用于指定Pod是否可以被调度到具有匹配污点的节点上。 当一个节点上设置了污点时,只有那些在Pod的容忍度中定义了匹配该污点的规则的Pod才能被调度到该节点上。如果Pod没有定义容忍度或者容忍度不匹配节点上的污点,则该Pod将不会被调度到该节点上。 举个例子,假设我们在节点node1上设置了一个污点,key为k1,value为v1,effect为NoSchedule。如果一个Pod的容忍度中定义了匹配这个污点的规则,比如key为test,value为16,effect为NoSchedule,那么这个Pod就可以被调度到拥有这个污点的node1节点上。 总结来说,污点容忍度是相互匹配的关系。通过在节点上设置污点和在Pod上设置容忍度,我们可以控制Pod的调度行为,避免将Pod调度到不合适的节点上。\[2\]\[3\] #### 引用[.reference_title] - *1* *2* *3* [k8s--基础--20--污点容忍度](https://blog.csdn.net/zhou920786312/article/details/126241579)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

一直奔跑在路上

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值