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 这个节点。

 

posted @ 2023-04-01 21:57  中仕  阅读(36)  评论(0编辑  收藏  举报