1、kubectl taint简介
kubectl taint
可以给某个Node节点设置taint,Node被设置上taint之后就和Pod之间存在一种相斥的关系,可以让Node拒绝Pod的调度执行,也能将Node已经存在的Pod驱逐出去。
2、kubectl taint语法
kubectl taint NODE NAME KEY_1=VAL_1:TAINT_EFFECT_1 ... KEY_N=VAL_N:TAINT_EFFECT_N
3、kubectl taint命令
1)使用带有键“dedicated”和值“special user”的污点更新节点“web”,作用于“NoSchedule”
kubectl taint nodes web dedicated=special-user:NoSchedule
2)从节点“web”中删除带有键“dedicated”的污点,如果存在则影响“NoSchedule”
kubectl taint nodes web dedicated:NoSchedule-
3)从节点foo中删除所有键dedicated的污点
kubectl taint nodes foo dedicated-
4)在标签mylabel=cjavapy的节点上添加一个带有' dedicated '键的污染
kubectl taint node -l myLabel=cjavapy dedicated=foo:PreferNoSchedule
5)向节点web添加一个带有键'cjavapy'但没有值的污点
kubectl taint nodes web cjavapy:NoSchedule
注意:一个taint由键、值和效果组成。作为这里的一个参数,它被表示为key=value:effect。
密钥必须以字母或数字开头,可以包含字母、数字、连字符、点和下划线,最多253个字符。
密钥也可以以一个DNS子域前缀和一个' / '开头,比如example.com/my-app。
是可选参数。如果给出,必须以字母或数字开头,并且可以包含字母、数字、连字符、点和下划线,最多63个字符。
必须为NoSchedule
、PreferNoSchedule
或NoExecute
。目前taint只能应用于节点。
4、选项说明
名称 | 简称 | 默认 | 用法 |
all | false | 选择集群中的所有节点。 | |
allow-missing-template-keys | true | 如果为true,当模板中缺少字段或映射键时, 忽略模板中的任何错误。 只适用于golang和jsonpath输出格式。 | |
dry-run | none | 必须为“none”、“server”或“client”。 如果客户端策略,则只打印将要发送的对象, 而不发送它。如果是服务器策略, 则提交服务器端请求而不持久化资源。 | |
field-manager | kubectl-taint | 用于跟踪字段所有权的管理人员的名称。 | |
output | o | 输出格式。以下其中之一: json|yaml|name| go-template|go-template-file|template| templatefile|jsonpath| jsonpath-as-json|jsonpath-file。 | |
overwrite | false | 如果为真,则允许覆盖污染, 否则拒绝覆盖现有污染的污染更新。 | |
selector | l | 选择器(标签查询)进行筛选, 支持' = ',' == '和' != ' (例如, -l key1=value1,key2=value2) | |
show-managed-fields | false | 如果为true,则在以JSON或YAML格式打印对象时 保留managedFields。 | |
template | 当-o=go-template, -o=go-template-file时 要使用的模板文件的模板字符串或路径。 模板格式为golang templates [ http://golang.org/pkg/text/template/#pkg-overview ]. | ||
validate | true | 如果为true,则在发送输入之前使用模式验证输入 |