首页 > 其他分享 >Admission Controllers

Admission Controllers

时间:2022-11-08 10:11:36浏览次数:45  
标签:控制器 请求 创建 Admission namespace Controllers 准入 POD

当我们调用kubectl来创建POD时,会经过认证环节。它使用~/.kube/config中配置的证书来完成认证:

在该认证过程中,它识别哪个用户发送了该请求,并确保该用户是有效的。

然后就进入到了授权环节,此时检查用户是否具有操作某个资源的权限:

我们知道这个过程是基于RABC来完成的。此时如果该用户被授予了特定的Role,允许该用户执行list、get、delete等操作POD的权限,则通过授权,否则拒绝该操作。

如:下面我们通过该角色限制用户只能创建特定名称的POD

然而有些时候,我们想要实现更复杂的功能,这就需要使用到准入控制(Admision Controllers)
如:下面想要实现这些要求,通过RABC是无法完成的

● 我们限制镜像只能从特定的内部仓库拉取,不能从共有镜像库中拉取镜像;
● 限制container以root身份运行;
● 只允许特定的负载;
● 指定metadata中,需要包含label标签

准入控制帮助我们更好实现的安全措施,对于如何使用集群;除了简单的验证之外,准入控制能够完成更多功能,如:请求自身或者在创建POD之前执行其他操作。
准入控制器具有很多种:

● AlwaysPullImages:确保每次创建POD时,都会进行拉取镜像;
● DefaultStorageClass:监视PVC的创建,并若default storage class不存在,则自动添加;
● EventRateLimt:设置API-Server每次能够接受请求的速率,防止洪泛请求;
● NameSpaceExists:检查namespace是否存在,存在则通过,否则决绝;

如:指定了NamespaceExists后,我们创建一个名为blue的pod,若namespace不存在,则不通过

而另外一些控制器默认未启用,如:NamespaceAutoProvision,若namespace不存在,它会自动创建namespace。

如果想要查看,启用了哪些准入控制器,可以通过如下方式:

如果你是基于Kubeadm方式安装的kubernetes,使用下面的命令:

如果想要启用或关闭准入控制器。针对于不同的kubernetes安装方式,可以采用如下做法(左边二进制方式,右边kubeadm方式):

当我们启用了NamespaceAutoProvision控制器后,在创建POD时,若对应的namespace不存在,则会自动创建:

通过上面的例子,我们能够看到,它不仅可以验证和拒绝用户,还能够在后端执行操作或修改请求本身。
只不过目前,NameSpaceExists和NamespaceAutoProvision,已经被NamespaceLifecycle所取代;
NamespaceLifecycle控制器,将拒绝不存在对应命名空间的请求,并且对于默认的命名空间,如:defalut、kube-system,将不能被删除。

标签:控制器,请求,创建,Admission,namespace,Controllers,准入,POD
From: https://www.cnblogs.com/cosmos-wong/p/16868718.html

相关文章

  • 【Vapor】06 Chapter 8: Controllers
    0x00Chapter8:Controllers​​上篇文章​​​把各种路由都写在了​​routes.swift​​​文件内如果路由事件太多,​​​routes.swift​​​文件就会越来越大慢慢地......