作者信息:https://home.cnblogs.com/u/huangjiabobk

在K8S中,准入机制是什么?有哪些?

在Kubernetes(K8s)中,准入机制(Admission Control)是一个关键的安全和策略执行层。以下是对K8s准入机制的详细介绍:

1. 准入机制的定义与位置

准入机制是Kubernetes API请求处理前的一道重要安全屏障。它位于API Server层级,在接收到对集群资源的创建、更新或删除请求后,但在实际操作存储在etcd中的数据之前,对请求进行拦截和检查。这一机制通过一系列预定义的准入控制组件(也称为准入控制器或准入插件),确保只有合法且符合规范的请求才能继续执行。

2. 准入机制的工作原理
  1. 认证与授权:
    • 请求者首先需要通过身份认证,验证其身份是否合法。
    • 认证通过后,请求者还需通过权限授权,检查其是否具有执行特定操作的权限。
  2. 准入控制:
    • 请求进入准入控制阶段,由多个准入控制组件按顺序进行检查。
    • 这些组件可以对请求进行验证、修改或拒绝,以确保请求符合集群的安全策略和配置要求。
  3. 执行操作:
    • 若所有检查通过,则请求被继续处理,对目标对象进行操作。
    • 若检查失败,则请求被拒绝,并返回相应的错误信息。
3. 常用的准入控制组件
  1. AlwaysAdmit:
    • 无条件允许所有请求。这通常用于测试环境或默认配置中,但在生产环境中应谨慎使用。
  2. AlwaysDeny:
    • 无条件拒绝所有请求。这同样多用于测试环境,用于验证准入机制的配置和效果。
  3. ServiceAccount:
    • 自动为Pod分配ServiceAccount,并确保Pod的ServiceAccount始终存在。这有助于管理Pod对API Server的访问权限。
  4. LimitRanger:
    • 检查请求是否违反了已定义的资源约束条件。这些条件通常定义在Namespace中的LimitRange对象中,用于限制Pod可以使用的资源量。
  5. NamespaceExists:
    • 检查请求是否尝试创建一个不存在的Namespace。如果尝试创建不存在的Namespace,则请求被拒绝。
  6. NamespaceLifecycle:
    • 确保对Namespace的删除和更新操作符合特定的生命周期规则。例如,防止删除包含正在运行Pod的Namespace。
  7. DefaultStorageClass:
    • 为没有指定存储类的PersistentVolumes自动分配默认的存储类。
  8. MutatingAdmissionWebhook 和 ValidatingAdmissionWebhook :
    • 允许通过Webhook与外部服务集成,实现自定义的准入控制逻辑。
    • MutatingAdmissionWebhook用于修改请求内容,而ValidatingAdmissionWebhook用于验证请求是否符合特定规则。
4. 准入机制的扩展与自定义

除了内置的准入控制组件外,Kubernetes还允许用户编写自定义的准入控制器或利用Webhook准入控制器与外部服务集成,以扩展准入控制功能。这为用户提供了极大的灵活性,可以根据特定的业务需求和安全策略来定制准入控制逻辑。

综上所述,Kubernetes的准入机制是一个强大的安全和策略执行层,通过一系列预定义的准入控制组件和自定义的准入控制器,确保集群的安全性和合规性。

posted @ 2024-08-17 23:55  黄嘉波  阅读(12)  评论(0编辑  收藏  举报
版权声明:原创作品,谢绝转载!否则将追究法律责任。--作者 黄嘉波