Kubernetes准入控制器——PodTolerationRestriction
作用说明
准入控制器PodTolerationRestriction检查Pod 的污点容忍度与其名称空间的设置的污点容忍度之间是否存在冲突。 如果存在冲突,则拒绝 Pod调度。如果不存在冲突PodTolerationRestriction控制器接会将名称空间中配置的污点容忍度合并到Pod的污点容忍度中,根据名称空间的污点容忍度白名单检查所得到污点的容忍度结果。 如果检查成功,则将接受Pod调度请求,否则拒绝该请求。
注解说明
scheduler.alpha.kubernetes.io/defaultTolerations
:名称空间下pod默认污点容忍度
scheduler.alpha.kubernetes.io/tolerationsWhitelist
可接受的污点容忍度白名单,用来限制该名称空间下的pod能容忍哪些污点
使用示例
apiVersion: v1
kind: Namespace
metadata:
name: default
annotations:
scheduler.alpha.kubernetes.io/defaultTolerations: '[{"operator": "Exists", "effect": "NoSchedule", "key": "team"}]'
#scheduler.alpha.kubernetes.io/tolerationsWhitelist: '[{"operator": "Exists", "effect": "NoSchedule", "key": "team"}]'
---
# 创建出来的pod会自动合并上面污点容忍度配置
apiVersion: apps/v1
kind: Deployment
metadata:
name: nginx
namespace: default
labels:
app: nginx
version: 1.20.2
spec:
replicas: 1
selector:
matchLabels:
app: nginx
version: 1.20.2
template:
metadata:
name: nginx
labels:
app: nginx
version: 1.20.2
spec:
containers:
- name: nginx
image: registry.cn-shenzhen.aliyuncs.com/huis/nginx:1.20.2-alpine
imagePullPolicy: IfNotPresent
ports:
- name: http
containerPort: 80
tolerations:
- key: env
operator: Equal
value: beta
effect: NoSchedule
restartPolicy: Always
注意事项
PodNodeSelector准入控制器默认情况下是被禁用的,开启方法如下:
# 在kube-apiserver中启用PodNodeSelector控制器插件
kube-apiserver --enable-admission-plugins=PodTolerationRestriction,<其它准入控制器>
本作品采用 知识共享署名-相同方式共享 4.0 国际许可协议 进行许可。