Kubernetes基础知识学习-Taint&Toleration
1、概念
Taint 污点; Toleration :容忍容许
节点亲和性 是 Pod 的一种属性,它使 Pod 被吸引到一类特定的节点 (这可能出于一种偏好,也可能是硬性要求)。 污点(Taint) 则相反——它使节点能够排斥一类特定的 Pod。
Taint在一类服务器上打上标签,让不能容忍这类污点的Pod不能部署在这个服务器上。
Master节点不应该部署系统Pod之外的任何Pod
2、给节点添加污点
[root@master01 ~]# kubectl taint node master01 key1=value1:NoSchedule
node/master01 tainted
给节点 node1 增加一个污点,它的键名是 key1,键值是 value1,效果是 NoSchedule。 这表示只有拥有和这个污点相匹配的容忍度的 Pod 才能够被分配到 node1 这个节点。
取消节点的污点:
[root@master01 ~]# kubectl taint node master01 key1=value1:NoSchedule-
node/master01 untainted
3、可以在Pod中定容忍度
你可以在 Pod 规约中为 Pod 设置容忍度。 下面两个容忍度均与上面例子中使用 kubectl taint 命令创建的污点相匹配, 因此如果一个 Pod 拥有其中的任何一个容忍度,都能够被调度到 node1 :
tolerations: - key: "key1" operator: "Equal" value: "value1" effect: "NoSchedule"
或者:
tolerations: - key: "key1" operator: "Exists" effect: "NoSchedule"
给work01添加污点
[root@master01 taint]# kubectl taint node work01 key1=value1:NoSchedule
node/work01 tainted
创建一个pod添加容忍度:
apiVersion: v1 kind: Pod metadata: name: taintnginx namespace: default labels: env: test app: myapp spec: containers: - name: taintngix image: nginx imagePullPolicy: IfNotPresent ports: - containerPort: 80 tolerations: - key: "example-key" operator: "Exists" effect: "NoSchedule"
容忍所有污点:
tolerations: - operator: "Exists"
NoSchedule:禁止调度;
NoExecut:不满足会被驱逐
PreferNoSchedule:尽量避免将Pod调度到指定的节点
一个容忍度和一个污点相“匹配”是指它们有一样的键名和效果,这表示只有拥有和这个污点相匹配的容忍度的 Pod 才能够被分配到 node1
这个节点。