项目配额工作原理

    在一个标准的 Kubernetes 部署中,资源配额是作用于每个命名空间上的。然而,原生 Kubernetes 不支持一键更新所有命名空间的资源配额。如果需要更新所有命名空间的资源配额,需要操作多次,逐个修改。

    下图描述了一个 Kubernetes 管理员在没有使用 Rancher 的情况下尝试设置集群中每一个命名空间的资源配额。管理员想给每个命名空间( ) 设置相同的 CPU 和内存限制。但是在原生 Kubernetes 里面,每个命名空间都需要一个独立的资源配额。管理员必须创建四个参数相同的资源配额( Resource Quota 1-4 ),分别应用到四个命名空间中,只有这样才能完成这个集群内所有命名空间的资源配额修改。

    原生 Kubernetes:每个命名空间都需要一个独立的资源配额

    资源配额包括两个限制:项目资源限制和命名空间默认资源限制,创建或修改项目时可以修改。

    下图说明了 Rancher 管理员给项目内所有命名空间( )配置统一的 CPU 限额和内存限额的过程。管理员可以设置项目资源配额( Project Resource Quota ),而不是单独设置每个命名空间的资源配额。完成项目资源配额的设置以后,配额包括的项目整体的项目资源限制( ),和每个命名空间的命名空间默认资源限制( Namespace Default Limit )。然后 Rancher 把命名空间默认资源限制( )下发到每个命名空间( Namespace Resource Quota )。

    Rancher:资源配额下发到每个命名空间

    Rancher 资源配额实现过程

    如果在项目层级删除了一个资源配额,无论命名空间层级是否有自定义的资源配额,该项目内的所有命名空间也会移除这个资源配额。在项目层级修改已有的默认资源配额,不会影响命名空间内的资源配额,修改后的项目层级资源配额只会对以后新建的命名空间生效。如果要修改命名空间层级的默认资源配额,您可以在项目层级删除现有的资源配额,然后创建一个新的资源配额并应用到该命名空间。这种操作方式会使项目内的所有命名空间都应用新建的资源配额。