Taints污点的组成
使用kubectl taint命令可以给某个Node节点设置污点,Node被设置污点之后就和Pod之间存在一种相斥的关系,可以让Node拒绝Pod的调度执行,甚至将Node上已经存在的Pod驱逐出去。

每个污点的组成如下:
key=value:effect
每个污点有一个key和value作为污点的标签,effect描述污点的作用。当前taint effect支持如下选项:
NoSchedule:表示K8S将不会把Pod调度到具有该污点的Node节点上
PreferNoSchedule:表示K8S将尽量避免把Pod调度到具有该污点的Node节点上
NoExecute:表示K8S将不会把Pod调度到具有该污点的Node节点上,同时会将Node上已经存在的Pod驱逐出去

污点taint的NoExecute详解
taint 的 effect 值 NoExecute,它会影响已经在节点上运行的 pod:

如果 pod 不能容忍 effect 值为 NoExecute 的 taint,那么 pod 将马上被驱逐
如果 pod 能够容忍 effect 值为 NoExecute 的 taint,且在 toleration 定义中没有指定 tolerationSeconds,则 pod 会一直在这个节点上运行。
如果 pod 能够容忍 effect 值为 NoExecute 的 taint,但是在toleration定义中指定了 tolerationSeconds,则表示 pod 还能在这个节点上继续运行的时间长度。

可见已经添加上了污点
[root@k8s-master taint]# kubectl describe node k8s-node01
 Name:               k8s-node01
 Roles:              <none>
 Labels:             beta.kubernetes.io/arch=amd64
                     beta.kubernetes.io/os=linux
                     cpu-num=12
                     disk-type=ssd
                     kubernetes.io/arch=amd64
                     kubernetes.io/hostname=k8s-node01
                     kubernetes.io/os=linux
                     mem-num=48
 Annotations:        flannel.alpha.coreos.com/backend-data: {"VtepMAC":"3e:15:bb:f8:85:dc"}
                     flannel.alpha.coreos.com/backend-type: vxlan
                     flannel.alpha.coreos.com/kube-subnet-manager: true
                     flannel.alpha.coreos.com/public-ip: 10.0.0.111
                     kubeadm.alpha.kubernetes.io/cri-socket: /var/run/dockershim.sock
                     node.alpha.kubernetes.io/ttl: 0
                     volumes.kubernetes.io/controller-managed-attach-detach: true
 CreationTimestamp:  Tue, 12 May 2020 16:50:54 +0800
 **Taints:             test=true:NoSchedule**   ### 可见已添加污点
 Unschedulable:      false```


通过添加Tolerations来匹配容忍度然后调度到相应的节点
其中key、value、effect要与Node上设置的taint保持一致
operator的值为Exists时,将会忽略value;只要有key和effect就行
tolerationSeconds:表示pod 能够容忍 effect 值为 NoExecute 的 taint;当指定了 tolerationSeconds【容忍时间】,则表示 pod 还能在这个节点上继续运行的时间长度。

tolerations:

  • key: “key”
    operator: “Equal”
    value: “value”
    effect: “NoSchedule”

tolerations:

  • key: “key”
    operator: “Exists”
    effect: “NoSchedule”

tolerations:

  • key: “key”
    operator: “Equal”
    value: “value”
    effect: “NoExecute”
    tolerationSeconds: 3600 (容忍度持续的时间)
Logo

K8S/Kubernetes社区为您提供最前沿的新闻资讯和知识内容

更多推荐