# 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)
- docker
- docker安装
- 数据持久化
- 镜像管理
- Dockerfile
- 镜像的分层
- add copy
- 构建实例
- 镜像的导入导出
- 清理构建空间
- 配置阿里云加速器
- docker网络模型
- 本地仓库
- registry
- harbor
- IDEA部署docker
- 软件安装
- 安装es
- 安装MongoDB
- 安装rabbitmq
- 安装redis
- 安装nacos
- 安装mysql
- Minio
- 镜像中心
- kubernetes
- 1. 安装k8s
- 2.主要组件
- 3.污点
- 4.pod
- 5.控制器
- 6.网络
- 7.探针
- 8.安装Dashbord
- 9.secret
- 9.serviceAccount
- 10.service
- 资源清单
- kube-proxy
- flannel源文件
- 服务升级
- 笔记
- 镜像