🔥码云GVP开源项目 12k star Uniapp+ElementUI 功能强大 支持多语言、二开方便! 广告
# 1. 什么是污点 1. paint污点类似于Label,是对node的一种标记 2. 如果node被打了污点,pod不能容忍这个污点,则pod不会被分配到这个node上 3. `key 加 value 加 strategy` 标识一个污点 # 2. 污点策略strategy NoSchedule: node添加这个effecf类型污点,新的不能容忍的pod不能再调度过来,但是老的运行在node上不受影响 NoExecute:K8Snode添加这个effecf类型污点,新的不能容忍的pod不能调度过来,老的pod也会被驱逐 PreferNoSchedule:pod会尝试将pod分配到该节点 # 3. 使用污点 > 格式 `kubectl taint nodes nodeName key=value:strategy` **1. 给pod打一个污点** ``` kubectl taint nodes node02 disktype=ssd:NoExecute ``` ![](https://img.kancloud.cn/60/d8/60d87a5dbf9b12455a5241a282e0f17f_1040x122.png) 打上污点后,node2上的pod被干掉了 ![](https://img.kancloud.cn/55/82/55826b21e16fa41db8369f64184a3f1a_972x96.png) 说明:给node02打上一个污点disktype值是ssd,并且原先分配的pod也驱逐 **2. deployment添加容忍这个污点** ``` apiVersion: apps/v1 kind: Deployment metadata: labels: app: nginx name: nginx-deployment spec: replicas: 3 selector: matchLabels: app: nginx template: metadata: labels: app: nginx spec: containers: - image: nginx:1.14.0 name: nginx ``` 没有忍受污点,pod全部分在了node01上 ![](https://img.kancloud.cn/72/3c/723c4dc9edf486203a1b364435c641ca_1283x162.png) 加上忍受污点 ``` apiVersion: apps/v1 kind: Deployment metadata: labels: app: nginx name: nginx-deployment spec: replicas: 3 selector: matchLabels: app: nginx template: metadata: labels: app: nginx spec: containers: - image: nginx:1.14.0 name: nginx tolerations: # 污点配置 - key: "disktype" operator: "Equal" value: "ssd" effect: "NoExecute" ``` pod也可以路由到node02上了 ![](https://img.kancloud.cn/bd/ac/bdacf6589beae1c9593f041ef7897a9a_1303x191.png)