参考链接: https://kubernetes.io/zh-cn/docs/concepts/scheduling-eviction/taint-and-toleration/
一、Taint(污点)
1.1 添加污点
# 格式
kubectl taint nodes [Node Name] key=value:[effect]
# 例子
kubectl taint nodes node1 key1=value1:NoSchedule
给节点 node1 增加一个污点,它的键名是 key1,键值是 value1,效果是 NoSchedule。 这表示只有拥有和这个污点相匹配的容忍度的 Pod 才能够被分配到 node1 这个节点。
1.2 删除污点
# 格式
kubectl taint nodes [Node Name] key=value:[effect]-
# 例子
kubectl taint nodes node1 key1=value1:NoSchedule-
二、Toleration(容忍)
tolerations:
- key: "key1"
operator: "Equal"
value: "value1"
effect: "NoSchedule"
或者
tolerations:
- key: "key1"
operator: "Exists"
effect: "NoSchedule"
例子:这里是一个使用了容忍度的 Pod:
apiVersion: v1
kind: Pod
metadata:
name: nginx
labels:
env: test
spec:
containers:
- name: nginx
image: nginx
imagePullPolicy: IfNotPresent
tolerations:
- key: "example-key"
operator: "Exists"
effect: "NoSchedule"
tolerationSeconds: 3600 # 容忍该污点3600s
三、知识点储备
-
应用对象
Taint:node
Toleration:pod | 工作负载资源 -
operator
Equal (默认),表示容忍相应的key、value、effect;
Exists 表示存在相应的key,无需指定value; -
effect
NoSchedule:禁止调度
NoExecute:禁止调度、已经调度却无容忍会被立即驱逐
PreferNoSchedule:尽量避免调度