如何进行Kubernetes中准入控制器的分析

75次阅读
没有评论

共计 1533 个字符,预计需要花费 4 分钟才能阅读完成。

如何进行 Kubernetes 中准入控制器的分析,相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。

什么是准入控制器

每个针对 Kubernetes 资源对象的操作请求,都要经过 kube-apiserver 的层层审查才会被放行。对于读操作而言,需要经过认证(是否是合法用户)和鉴权(是否拥有权限);而对于写操作而言,除了要经过认证和鉴权外,还要检查请求是合乎要求,只有顺利通过这些审查才会被持久化到 etcd 存储中。

准入控制器(Admission Controller)是用于审查请求的组件,它会劫持发往 kube-apiserver 的请求,对请求进行审查(必要时也会修改请求内容),它是 kube-apiserver 审查链中重要的一环,不合理的请求会被拒绝。

kube-apiserver 支持配置多个准入控制器,准入控制器分为修改型(Mutating)控制器和校验型(Validating)控制器。修改型控制器会自动根据指定的策略对请求进行修改,而校验型控制器则只是单纯地检查请求是否合乎要求,充当“看门狗”的角色。

多个准入控制器以插件(Webhook Plugin)的形式被组织起来,kube-apiserver 在审查请求时会先把请求交给修改型控制器对请求进行必要的修改,然后再将请求交给校验型控制器进行审查。下图展示了请求的审查完整路径,以及准入控制器所在的位置:

API 请求到达 kube-apiserver 后会先进行认证(Authentication)和鉴权(Authorization),然后把请求交给修改型准入控制器进行必要的修改(多个修改型准入控制器串行执行),当所有修改型准入控制器执行完毕后,再使用 OpenAPI 校验功能进行初步的语法校验,接着再把请求交给校验型准入控制器进行语法或语义的校验(多个修改型准入控制器并行执行),最后再写入 etcd。上面中的任何一个审查环节、任何一个准入控制器返回失败,都会造成请求被拒绝。

准入控制器配置

准入控制器根据其部署形式可分为内置控制器和动态控制器两种。内置控制器集成在 kube-apiserver 中,以插件的形式提供,每个插件都可以通过参数控制启用或禁止;而动态控制器则是按一定标准实现的服务。关于动态控制器的更多内容将会在后续章节中展开介绍,本节主要介绍内置控制器的配置方法。

kube-apiserver 提供了数十个准入控制器插件,其中一些是默认开启的,也可以通过参数显式地控制启用或禁用的插件。

开启控制器插件

通过 kube-apiserver 的 –enable-admission-plugins 参数可以设置除默认启用的控制器插件以外需要额外启用的插件,多个插件名字以逗号分隔,例如以下参数开启 NodeRestriction 和 ResourceQuota 两个插件。

--enable-admission-plugins=NodeRestriction,ResourceQuota

该参数主要在需要启用默认禁用的插件时使用。

关闭控制插件

通过 kube-apiserver 的 –disable-admission-plugins 参数可以设置禁用的控制器插件,同样多个插件名字以逗号分隔,例如以下参数关闭 PodNodeSelector 和 AlwaysDeny 两个插件。

--disable-admission-plugins=PodNodeSelector,AlwaysDeny

该参数主要在需要禁用默认启用的插件时使用。

看完上述内容,你们掌握如何进行 Kubernetes 中准入控制器的分析的方法了吗?如果还想学到更多技能或想了解更多相关内容,欢迎关注丸趣 TV 行业资讯频道,感谢各位的阅读!

正文完
 
丸趣
版权声明:本站原创文章,由 丸趣 2023-08-16发表,共计1533字。
转载说明:除特殊说明外本站除技术相关以外文章皆由网络搜集发布,转载请注明出处。
评论(没有评论)