k8s调度之 污点(Taints)和容忍度(Tolerations)

1.理论详解

1.1 NodeAffinity节点亲和性,是在pod上定义的一种属性,使pod能够按照我们要求调度到某个node上。而Taints正好相反,它可以让node拒绝pod,甚至驱逐。

1.2 Taints(污点)是node上定义的一种属性,给node设置完污点后,k8s不会将pod调度到这个node上,于是k8s就给pod设置了另一种属性Tolerations(容忍),只要pod能够容忍node上的污点,那么k8s就会忽略node上的污点,就能够(不是必须)把pod调度到有污点的node上。
因此 Taints(污点)通常与Tolerations(容忍)配合使用。

2.设置污点

kubectl taint node [node] key=value[effect]
其中[effect] 可取值: [ NoSchedule | PreferNoSchedule | NoExecute ]
NoSchedule :一定不能被调度。
PreferNoSchedule:尽量不要调度。
NoExecute:不仅不会调度,还会驱逐Node上已有的Pod。

示例:

[root@k8s-master ~]# kubectl describe node k8s-node1 |grep Taints
Taints:             <none>
[root@k8s-master ~]# kubectl taint node k8s-node1 key=value:NoSchedule
node/k8s-node1 tainted
[root@k8s-master ~]# kubectl describe node k8s-node1 |grep Taints
Taints:             key=value:NoSchedule

3.取消污点

去除指定key及其effect:
kubectl taint nodes node_name key:[effect]- #(这里的key不用指定value)
去除指定key所有的effect:
kubectl taint nodes node_name key-

示例:

#比如先设置污点:
kubectl taint node k8s-node1 key=value:NoSchedule
kubectl  taint node k8s-node1 key=value:NoExecute

#去除指定key及其effect:
[root@k8s-master ~]# kubectl  taint node k8s-node1 key:NoExecute-
node/k8s-node1 untainted
[root@k8s-master ~]# kubectl  taint node k8s-node1 key:NoSchedule-
node/k8s-node1 untainted

#去除指定key所有的effect: 
[root@k8s-master ~]# kubectl  taint node k8s-node1 key-
node/k8s-node1 untainted

4.示例

给k8s-node1 设置一个污点,该Taint(污点)的键为dev,值为yundi,Taint的效果是NoSchedule。这意味着pod明确声明可以容忍这个taint(污点),否则就不会调度到这个node上。

kubectl taint node k8s-node1 dev=yundi:NoSchedule

然后需要在pod上声明Tolerations(容忍度),下面的Tolerations表示可以容忍具有该taint的node,使pod能够调度到有该污点的node上。

apiVersion: v1
kind: Pod
metadata:
  name: test
spec:
  tolerations:
  - key: "dev"
    operator: "Equal"
    value: "yundi"
    effect: "NoSchedule"
  containers:
    - name: test
      image: busybox:latest

也可以写成这种

tolerations:
- key: "dev"
  operator: "Exists"
  effect: "NoSchedule"
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容