您的位置 首页 k8s

k8s pod 调度之 污点 (NoSchedule、PreferNoSchedule或NoExecute)案例

k8s pod 调度 污点

大白话,就是 工作节点上,打上污点的标签, 然后分配策略会根据这个污点 来分配。

在Kubernetes中,Taints(污点)是一种机制,用于标记一个节点不适合运行某些Pod。节点可以设置污点,以通知调度器避免将某些Pod调度到该节点上运行。污点可以解决一些特殊的场景,例如需要更高的硬件资源或不能部署敏感的应用程序等情况。

可通过以下方式设置污点:

key:用于标识污点的key。

value:标志着污点的状态。

effect:定义了污点产生的影响。例如 NoSchedule,表示该节点不会被自动调度Pod,而需要手动进行指定。

 

当一个节点被设置了污点,调度器将会避免将具有该污点的Pod分配到该节点上。如果一个节点上没有任何污点,并且没有任何标记为容忍该污点的Pod存在,则该节点将可用于Pod调度。

污点和Pod唯一的关系就是,Pod可以声明一个容忍污点(tolerations),以允许Pod被调度到污点Node上运行。因此,污点(Taints)和容忍(Tolerance)一起生成了调度器的高级配置选项。可以使用污点(Taint)和容忍(Tolerations)来限制Kubernetes工作负载调度到特定的一组节点。

 

1.污点的概述

污点通常情况下是作用在worker节点上,其可以影响Pod的调度。

污点的语法格式如下:
	key[=value]:effect

相关字段说明:

key:
	字母或数字开头,可以包含字母、数字、连字符(-)、点(.)和下划线(_),最多253个字符。
	也可以以DNS子域前缀和单个"/"开头

value:
	该值是可选的。如果给定,它必须以字母或数字开头,可以包含字母、数字、连字符、点和下划线,最多63个字符。

effect:
	effect必须是NoSchedule、PreferNoSchedule或NoExecute。
         NoSchedule: 
             该节点不再接收新的Pod调度,但不会驱赶已经调度到该节点的Pod。
         PreferNoSchedule: 
             该节点可以接受调度,但会尽可能将Pod调度到其他节点,换句话说,让该节点的调度优先级降低啦。
         NoExecute:
         	该节点不再接收新的Pod调度,与此同时,会立刻驱逐已经调度到该节点的Pod。

 

 

注意,在K8S 1.23.17版本中,PreferNoSchedule测试效果并不是特别明显,
PreferNoSchedule和NoSchedule两种污点均可以被nodeName无视,因为不会走默认的调度器。
NoExecute污点无视nodeName,尽管调度到该节点,由于该污点的存在,直接会驱逐Pod。

 

 

PreferNoSchedule的调度案例:

 

欢迎来撩 : 汇总all

白眉大叔

关于白眉大叔linux云计算: 白眉大叔

热门文章