博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
kubernetes中的Admission Controllers
阅读量:5941 次
发布时间:2019-06-19

本文共 1827 字,大约阅读时间需要 6 分钟。

这是啥

准入控制admission controller本质上一段代码,在对kubernetes api的请求过程中,顺序为 先经过 认证 & 授权,执行准入操作,在对目标对象进行操作。这个准入代码在apiserver中,而且必须被编译到二进制文件中才能被执行。

在对集群进行请求时,每个准入控制代码都按照一定顺序执行。如果有一个准入控制拒绝了此次请求,那么整个请求的结果将会立即返回,并提示用户相应的error信息。

在某些情况下,为了适用于应用系统的配置,准入逻辑可能会改变目标对象。此外,准入逻辑也会改变请求操作的一部分相关资源。

为什么需要?

在kubernetes中,一些高级特性正常运行的前提条件为,将一些准入模块处于enable状态。总结下,对于kubernetes apiserver,如果不适当的配置准入控制模块,他就不能称作是一个完整的server,某些功能也不会正常的生效。

如何开启一个准入模块

在kubernetes apiserver中有一个参数:admission_control,他的值为一串用逗号连接的 有序的 准入模块列表,设置后,就可在对象呗操作前执行一定顺序的准入模块调用。

每个准入模块都干了啥

AlwaysAdmit

对所有请求开绿灯。

AlwaysDeny

对所有请求开红灯,多用于测试环境。

DenyExecOnPrivileged

它会拦截所有想在privileged container上执行命令的请求。

如果自己的集群支持privileged container,自己又希望限制用户在这些privileged container上执行命令,那么强烈推荐使用它。

ServiceAccount

这个plug-in将 serviceAccounts实现了自动化,如果想要使用ServiceAccount 对象,那么强烈推荐使用它。

关于serviceAccount的描述如下:

一个serviceAccount为运行在pod内的进程添加了相应的认证信息。当准入模块中开启了此插件(默认开启),那么当pod创建或修改时他会做一下事情:

  1. 如果pod没有serviceAccount属性,将这个pod的serviceAccount属性设为“default”;
    1. 确保pod使用de serviceAccount始终存在;
    2. 如果LimitSecretReferences 设置为true,当这个pod引用了Secret对象却没引用ServiceAccount对象,弃置这个pod;
    3. 如果这个pod没有包含任何ImagePullSecrets,则serviceAccount的ImagePullSecrets被添加给这个pod;
    4. 如果MountServiceAccountToken为true,则将pod中的container添加一个VolumeMount 。

SecurityContextDeny

这个插件将会将使用了 SecurityContext的pod中定义的选项全部失效。

关于 SecurityContext的描述:

SecurityContext 在container中定义了操作系统级别的安全设定(uid, gid, capabilities, SELinux等等)。

ResourceQuota

它会观察所有的请求,确保在namespace中ResourceQuota对象处列举的container没有任何异常。如果在kubernetes中使用了ResourceQuota对象,就必须使用这个插件来约束container。

推荐在admission control参数列表中,这个插件排最后一个。

LimitRanger

他会观察所有的请求,确保没有违反已经定义好的约束条件,这些条件定义在namespace中LimitRange对象中。如果在kubernetes中使用LimitRange对象,则必须使用这个插件。

NamespaceExists

它会观察所有的请求,如果请求尝试创建一个不存在的namespace,则这个请求被拒绝。

有推荐的插件顺序吗?

有!

--admission_control=NamespaceLifecycle,NamespaceExists,LimitRanger,SecurityContextDeny,ServiceAccount,ResourceQuota

转载地址:http://ivqtx.baihongyu.com/

你可能感兴趣的文章
自己整合优化的一个Android框架
查看>>
Android内核剖析 目录
查看>>
jsf如何通过按钮切换在同一个页面上的非公共部分显示不同的内容
查看>>
/etc/fstab 文件解释
查看>>
如何用函数表示数(四)数的彻底消失
查看>>
windows 7下同时安装visual studio 2012和2010
查看>>
android--------Socket的简单了解
查看>>
安卓错误Emulator: error: x86 emulation currently......
查看>>
Asynchronous CDI Events
查看>>
mynginx.conf
查看>>
Oracle——20数据库恢复与备份
查看>>
鼠标坏了你别扔,可以修的
查看>>
CentOS 中使用yum时常见的一种提示信息
查看>>
记一次ssh登录异常
查看>>
01-利用思维导图梳理JavaSE-Java语言基础
查看>>
RocketMQ几种搭建模式说明
查看>>
程序分析思路
查看>>
beangle commons 4.0.0 release
查看>>
数据仓库中的维度表和事实表概述
查看>>
淘气的页数 - 格式化字符串
查看>>