`
m635674608
  • 浏览: 5043177 次
  • 性别: Icon_minigender_1
  • 来自: 南京
社区版块
存档分类
最新评论

kubernetes中的Admission Controllers

 
阅读更多

这是啥

准入控制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

https://segmentfault.com/a/1190000002920092
分享到:
评论

相关推荐

    tugger:Kubernetes Admission Webhook强制从私有注册表中提取Docker映像

    Tugger是Kubernetes Admission网络挂钩,用于强制从私有注册表中提取docker映像。 先决条件 Kubernetes 1.9.0或以上与admissionregistration.k8s.io/v1 API启用。 通过以下命令进行验证: kubectl api-versions | ...

    Kubernetes Initializers工作原理介绍.pptx

    在Kubernetes中,Initializers与Admission Controllers一起工作,但它们在功能上有所不同。 Admission Controllers是Kubernetes内置的一组策略,用于在对象进入集群时对其进行验证和修改。例如,AlwaysPullImages...

    Kubernetes(k8s)面试题.pdf

    什么是Kubernetes Admission Controllers?** Admission Controllers是可插入的钩子,在创建或更新API对象之前执行验证或修改操作,以确保符合特定的安全策略或业务逻辑。 **43. 什么是Service Mesh?常见的...

    mk Kubernetes从入门到进阶

    - **Admission Controllers**:在资源被创建之前进行验证或修改。 #### 八、Kubernetes监控与日志 为了有效监控和维护Kubernetes集群,需要使用监控和日志工具: - **Prometheus**:用于收集和存储时间序列数据。 ...

    internallb-webhook-admission-controller:Kubernetes内部负载平衡器准入Webhook

    Kubernetes内部负载平衡器准入Webhook 该Kubernetes Admission控制器仅允许创建包含正确的云提供程序注释的... 建造make docker_build 部署Kubernetes 1.9中有两种Webhook Admission控制器。 ValidatingAdmissionWebho

    01. K8s扩展功能解析1

    3. Support for extensible admission controllers 准入控制器是Kubernetes中的一种机制,用于在对象被持久化到etcd之前对其进行拦截和修改。1.7版本增加了对可扩展的准入控制器的支持,允许开发人员插入自定义逻辑...

    扩展Kubernetes API

    5. **Admission Controllers**:Admission Controllers是Kubernetes API服务器的一部分,可以在资源被持久化之前对其进行修改或拒绝。它们允许在资源创建或更新时插入额外的逻辑,比如设置默认值、执行权限检查或...

    基于K8s扩展机制实现PaaS平台云原生演进1

    3. **Webhooks and Admission Controllers**: webhook允许在资源创建或更新时执行自定义逻辑,如验证、转换或拦截操作。Admission controllers是插件化机制,可以在资源进入集群之前进行处理,实现对资源的准入控制...

    K8s-cks进阶技能攻略

    Kubernetes准入控制器(Admission Controllers)是一段代码,它会在请求通过认证和授权之后、对象被持久化之前,拦截到达API服务器的请求。Mutating控制器可以修改他们所处理的对象,而Validating则不会。如果验证的...

    运维-K8S-1.14

    在安全方面,Kubernetes 1.14引入了Pod Security Policy(PSP)的逐步弃用,以推动用户转向更强大的Security Context和Cluster Admission Controllers。虽然PSP在1.14中仍可用,但这是一个过渡阶段,提醒用户未来...

    kube1.18.0.tar.gz

    4. **Pod Security Policy弃用**:从v1.18.0开始,Pod Security Policy(PSP)被标记为弃用,虽然仍可使用,但推荐使用替代方案,如使用 Admission Controllers 或其他策略来管理集群的安全性。 5. **CRI...

    CKS:认证的kubernetes安全专家准备示例

    同时,学习使用 Admission Controllers 来增强集群入口的安全性。 6. **审计与日志** 审计是确保合规性和追踪不寻常活动的重要工具。学习如何配置Kubernetes审计日志,以及如何分析和响应这些日志。 7. **集群...

    imageswap-webhook:Kubernetes的图像交换突变录取Webhook

    用于Kubernetes的ImageSwap突变入场控制器该将使用用户指定的图像前缀交换Pod中的现有图像定义。 这使您可以将相同的清单用于无法访问常用映像注册表(dockerhub,码头,gcr等)的空白环境。 Webhook使用Flask框架以...

    k8s-config:配置库

    - **配置验证**:使用 Kubernetes admission controllers 或 webhook 来验证配置的正确性。 - **可移植性**:确保配置易于在不同环境中复用,遵循云原生原则。 7. **监控和日志** 实时监控配置变更,结合日志...

    k8s-ingress-claim:一种可以防止对HostsDomain进行意外重复声明的准入控制策略

    k8s-inress-claim 描述 k8s-ingress-claim提供了一种准入控制策略,可防止现有入口已经声明的入口意外重复请求主机/域。 执行 这被实现为 ,其中k8s-ingress-claim服务作为部署在每个集群上运行。...

Global site tag (gtag.js) - Google Analytics