资讯专栏INFORMATION COLUMN

kubernetes中的Admission Controllers

keithxiaoy / 2710人阅读

摘要:如果有一个准入控制拒绝了此次请求,那么整个请求的结果将会立即返回,并提示用户相应的信息。

这是啥

准入控制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创建或修改时他会做一下事情:

  

如果pod没有serviceAccount属性,将这个pod的serviceAccount属性设为“default”;

确保pod使用de serviceAccount始终存在;

如果LimitSecretReferences 设置为true,当这个pod引用了Secret对象却没引用ServiceAccount对象,弃置这个pod;

如果这个pod没有包含任何ImagePullSecrets,则serviceAccount的ImagePullSecrets被添加给这个pod;

如果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

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/32437.html

相关文章

  • Kubernetes持续集成:Jenkins关于java.nio.file.NoSuchFileEx

    摘要:尝试运行脚本发生了的错误。错误信息接下来就是,天的调查,关于这个错误的能查到的资料几乎没有,也尝试了很多方法,无果非常煎熬。问题解决了参考文档初试使用完成持续构建与发布集群安全配置 背景 为了使用Kubernetes管理并自动化部署应用程序,领导纠结了几个同事搭了一个Kubernetes集群环境。不过,为了减少复杂度,采用了非官方推荐的方式: API Server使用http方式 不...

    tomener 评论0 收藏0
  • Kubernetes 1.7:从完善容器编排功能到落地商业应用新跨越!

    摘要:新功能版本增加了安全性有状态的应用程序和可扩展性等功能。网络已从升级到新的组。 ​根据 Kubernetes Google Group 产品经理 Aperna Sinha 和 Kubernetes Mirantis 项目经理 Ihor Dvoretskyi 的说法,Kubernetes 1.7 中的 API aggregation 功能使用户可以在运行时添加自定义的 API 服务器,与...

    big_cat 评论0 收藏0
  • kubernetes Admission Controller 原理介绍

    摘要:介绍干的最重要的三个事就是认证看是否是合法用户授权看用户具备哪些权限一个调用链,对请求进行控制或修改,比如是否允许这个请求。把这个服务起一个这样就可以自动发现它。是基于开发平台的利器更多精彩 Admission Controller介绍 Apiserver干的最重要的三个事就是: 认证 : 看是否是合法用户 授权 : 看用户具备哪些权限 admission controller : ...

    Leo_chen 评论0 收藏0
  • kubernetes Admission Controller 原理介绍

    摘要:介绍干的最重要的三个事就是认证看是否是合法用户授权看用户具备哪些权限一个调用链,对请求进行控制或修改,比如是否允许这个请求。把这个服务起一个这样就可以自动发现它。是基于开发平台的利器更多精彩 Admission Controller介绍 Apiserver干的最重要的三个事就是: 认证 : 看是否是合法用户 授权 : 看用户具备哪些权限 admission controller : ...

    AlphaWatch 评论0 收藏0
  • 基于kubernetes的docker集群实践

    摘要:健康监控检查,可以说是集群中最重要的一部分了。我们在这里没有使用推荐的方式,我们自己将其与内部的系统做了结合,通过来对整个集群进行监控报警自动化操作。 在公司内部,基于kubernetes实现了简单的docker应用集群系统,拿出来和大家分享下,在这个系统中,实现了应用的自动部署、动态扩容、节点切换、健康检查、AB式版本更新等功能,也欢迎大家将各自的实现也分享给我。 整体架构 整体架构...

    meislzhua 评论0 收藏0

发表评论

0条评论

最新活动
阅读需要支付1元查看
<