K8S 污点使用方法示例(禁止资源创建在某节点)
文章目录1. 介绍2. 实操--在master 上进行打污点,防止资源创建在此上1. 介绍node打上污点(可以想象成一个标签),pod如果不定义容忍这个污点,那么pod就不会被调度器分配到这个node操作命令:node打上污点方法 的三种类型以及介绍Shellkubectl taint nodes node1 key=value:NoSchedulekubectl taint nodes nod
·
1. 介绍
node打上污点(可以想象成一个标签),pod如果不定义容忍这个污点,那么pod就不会被调度器分配到这个node
操作命令:
- node打上污点方法 的三种类型以及介绍
Shell
kubectl taint nodes node1 key=value:NoSchedule
kubectl taint nodes node1 key=value:NoExecute
kubectl taint nodes node1 key=value:PreferNoSchedule
NoSchedule:K8Snode添加这个effecf类型污点,新的不能容忍的pod不能再调度过来,但是老的运行在node上不受影响
NoExecute:K8Snode添加这个effecf类型污点,新的不能容忍的pod不能调度过来,老的pod也会被驱逐
PreferNoSchedule:pod会尝试将pod分配到该节点
- node删除污点
Shell
kubectl taint nodes kube11 key:NoSchedule-
- pod设置容忍一个污点
YAML
tolerations: #containers同级
- key: "key1" #能容忍的污点key
operator: "Equal" #Equal等于表示key=value , Exists不等于,表示当值不等于下面value正常
value: "value1" #值
effect: "NoExecute" #effect策略,见上面
tolerationSeconds: 3600 #原始的pod多久驱逐,注意只有effect: "NoExecute"才能设置,不然报错
示例:
- 给pod打一个污点
Shell
kubectl taint nodes node1 disktype=ssd:NoExecute
说明:给node1打上一个污点disktype值是ssd,并且原先分配的pod也驱逐
2. deployment添加容忍这个污点
YAML
---
apiVersion: apps/v1Beta1
kind: Deployment
metadata:
name: nginx-deploy
spec:
replicas: 1
selector:
matchLabels:
app: nginx
template:
metadata:
labels:
app: nginx
spec:
containers:
- name: nginx
images: nginx:laste
ports:
- containerPort: 80
tolerations:
- key: "disktype"
operator: "Equal"
value: "value1"
effect: "NoExecute"
tolerationSeconds: 3600
可以看到 如果pod打上这个污点,那么这个pod就会分配到这个node1,其他pod未打污点无法分配,并且old的pod也被驱赶出这个node
2 . 实操–在master 上进行打污点,防止资源创建在此上
[root@master ~]# kubectl get node
NAME STATUS ROLES AGE VERSION
master Ready master 16d v1.17.0
node1 Ready <none> 16d v1.17.0
node2 Ready <none> 16d v1.17.0
添加污点
[root@master ~]# kubectl taint nodes master key=value:NoSchedule
node/master tainted
去除污点
[root@master ~]# kubectl taint nodes master key:NoSchedule-
node/master untainted
更多推荐
已为社区贡献13条内容
所有评论(0)