在一个标准的 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 资源配额实现过程

    下表说明了 Rancher 资源配额和 Kubernetes 资源配额的主要不同点。