Kubernetes 使用 Admission 征求和过滤请求

阅读时长 5 分钟读完

Kubernetes 是一种流行的容器编排和管理平台,能够将 Docker 容器自动托管到大规模集群中。在使用 Kubernetes 进行容器管理时,我们常常需要对容器进行必要的配置和安全检查。本文将介绍 Kubernetes 的 Admission 控制器,它是 Kubernetes 的一项重要功能,可以帮助用户对容器进行各种配置和安全检查的处理。

Admission 控制器

Admission 控制器是 Kubernetes 中的一种插件,可以在数据进行持久化之前,对请求进行验证、修改或拒绝。默认情况下,Kubernetes 提供了以下四种 Admission 控制器:

  • NamespaceLifecycle:控制 Namespace 的创建和删除,确保只有允许的 Namespace 才能被使用。
  • LimitRanger:限制资源使用,确保 Pod 不会使用超出其批准资源的量。
  • ServiceAccount:确保每个 Pod 都有一个适当的 ServiceAccount 权限。
  • MutatingAdmissionWebhook 和 ValidatingAdmissionWebhook:它们是 Kubernetes 的新特性,允许用户编写自己的 Admission 控制器,在 Kubernetes 的创建和更新时进行各种验证和修改操作。

征求和过滤请求

在上述 Admission 控制器中,MutatingAdmissionWebhook 和 ValidatingAdmissionWebhook 是 Kubernetes 的最新特性,可以帮助我们更好地控制容器。这两个 Admission 控制器的区别在于:

  • MutatingAdmissionWebhook:在对象写入 Kubernetes 之前 Cordoned 和 Initialized,允许用户在写入之前将请求数据进行修改。
  • ValidatingAdmissionWebhook:在持久化之前对请求进行验证,如果请求不符合用户设置的规则,则不允许标准化。这一过程是只读的。

这两个 Admission 控制器可以通过相应的 Pod 来实现。例如,如果我们需要对容器使用的内存和 CPU 进行强制限制,我们可以编写一个 Admission 控制器。该控制器的作用是,当一个 Pod 创建时,它将调用这个 Admission 控制器,从而强制为 Pod 设置内存和 CPU 的限制。

下面是一个简单的 Admission 控制器示例:

-- -------------------- ---- -------
----------- ------------------------------------
----- ----------------------------
---------
  ----- -----------------
---------
  - ----- ----------------------------
    ------
      - ----------
          - --
        ------------
          - --
        -----------
          - ------
        ----------
          - ----
    -------------
      ---- -------------------------------------------
      --------- ------ -- --------
    ------------------------ ----------- -----
    ------------ ----

在这个示例中,我们定义了一个名为“pod-limit-mutator”的 Admission 控制器,该控制器仅对 Pod 对象进行修改。当一个 Pod 对象被创建时,它会被调用,这意味着在创建 Pod 对象之前,我们可以对 Pod 对象进行验证和修改。具体来说,我们可以与 Kubernetes 通信,强制在 Pod 对象中添加一个资源限制,例如:

-- -------------------- ---- -------
-
  ------------- -----
  ------- ------
  ----------- -
    ------- --------
    ------------ -------------
  --
  ------- -
    ------------- -
      -
        ------- --------------
        -------- ----------
        ------------ -
          ----------- -
            --------- --------
            ------ ------
          --
          --------- -
            --------- --------
            ------ ------
          -
        -
      -
    -
  -
-

该 Admission 控制器对请求进行了处理,强制为 Pod 中的容器设置的内存和 CPU 限制。这可以确保所运行的容器不会超出集群中分配的资源量。

总结

通过使用 Kubernetes 的 Admission 控制器,我们可以轻松地创建和使用容器,同时保证其配置和安全性。在使用 Admission 控制器处理容器设置和限制时,我们需要根据自己的需求和具体的场景进行配置和修改。希望这篇文章对初学者有所帮助,可以进一步学习 Kubernetes Admission 控制器的使用。

来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/64e47cdaf6b2d6eab3fef53f

纠错
反馈