污点容忍策略

污点概述

● 什么是污点

- 污点(Taint)是使节点与Pod产生排斥的一类规则

● 污点策略是如何实现

- 污点策略通过嵌合在键值对上的污点标签进行声明

● 污点标签

- 尽量部调度:PreferNoSchedule

- 不会被调度:NoSchedule

- 驱逐节点:NoExecute

● 管理污点标签

- 污点标签必须绑定在键值对上,格式为: key=value:[污点标签]

- 查看污点标签: kubectl describe nodes [节点名字]

- 设置污点标签: kubectl taint node [节点命令] key=value:污点标签

- 删除污点标签: kubectl taint node [节点命令] key=value:污点标签-

# 查看污点策略
[root@master ~]# kubectl describe nodes|grep Taints
Taints:             node-role.kubernetes.io/master:NoSchedule
Taints:             <none>
Taints:             <none>
Taints:             <none>
Taints:             <none>
Taints:             <none>
# node-0001 设置污点策略 PreferNoSchedule
[root@master ~]# kubectl taint node node-0001 k=v1:PreferNoSchedule
node/node-0001 tainted
# node-0002 设置污点策略 NoSchedule
[root@master ~]# kubectl taint node node-0002 k=v2:NoSchedule
node/node-0002 tainted
[root@master ~]# kubectl describe nodes |grep Taints
Taints:             node-role.kubernetes.io/master:NoSchedule
Taints:             k=v1:PreferNoSchedule
Taints:             k=v2:NoSchedule
Taints:             <none>
Taints:             <none>
Taints:             <none>

容忍策略

● 容忍刚好与污点相反,某些时候我们需要在有污点的节点上运行Pod,这种无视污点标签的调度方式称为容忍

#配置容忍策略
spec:
  toleratinos:                #定义容忍策略
  - operator: "Equal"         #匹配方式,必选(Equal,Exists)
     key: "k1"                  #设置键值对的key,为空代表任意键值对
     value: "v1"                #设置values的值
     effect: "NoSchedule"     #设置容忍的标签,为空代表所有污点标签
  containers:

抢占与优先级

● 优先级是什么

○ 优先级表示一个Pod相当于其他Pod的重要性

● 优先级有什么用

○ 优先级可以先保证中重要的Pod被调度运行

● 如何使用优先级和抢占

○ 配置优先级类ProiorityClass

○ 创建Pod时为其设置对应的优先级

PriorityClass

● PriorityClass是一个全局资源对象,它定义了从优先级类名称到优先级整数值的映射。优先级在value字段中指定,可以设置小于10亿的整数值,值越大,优先级越高

● PriorityClass还有两个可选字段

○ globalDefault用于设置默认优先级状态,如果没有任何优先级设置Pod的优先级为零

○ description用于配置描述性信息,告诉用户优先级的用途

优先级策略:

● 非抢占优先:指的是在调度阶段进行调度分配,一旦容器调度完成就不可抢占,资源不足时,只能等待

● 抢占优先:强制调度一个Pod,如果资源不足无法被调度,调度程序会抢占(删除)较低优先级的Pod的资源,来保证优先级Pod的运行

特权容器概述

● 什么是特权容器

○ 容器是通过名称空间技术隔离的,有时候我们执行一些应用服务,需要使用或修改敏感的系统信息,这时容器需要突破隔离限制,获取更高的权限,这类容器统称为特权容器

○ 运行特权容器会有一些安全风险,这种模式下运行容器对宿主机拥有root访问权限,可以突破隔离直接控制宿主机的资源配置