创建资源限制的目的是保障项目和命名空间之间的资源能够合理分配,每个项目/命名空间都能获得运行所需的资源,同时也尽量保证项目/命名空间需要额外的资源提升性能时,能够匹配到可用的资源。可配置的资源类型包括:CPU、内存、存储、服务负载均衡、节点端口、Pods、服务、配置、存储卷声明、Replications Controllers 和密文。限制的类型包括:限制(limits)和预留(reservations,在 Kubernetes 官方文档中也叫做“requests”);限制规定了项目/命名空间可以占用某种类型的资源的最大值,预留则规定了项目/命名空间运行时所需某种类型的资源的最小值。

    资源类型描述
    CPU 限制项目/命名空间运行时可使用 CPU 的最大值,单位是 millicores,通常简写为 m ,1m 表示千分之一核,以此类推,50m 表示百分之五核,100m 表示十分之一核;需要注意的是,1000m、1.0 和 1 都表示 1 核。关于 millicores 计量单位的详细信息请参考Kubernetes 官方文档1
    CPU 预留项目/命名空间运行时所需的 CPU 最小值,单位是 millicores,通常简写为 m ,表示千分之一核。1
    内存限制项目/命名空间运行时可使用内存的最大值,单位是 字节(bytes),通常简写为 b 。1
    内存预留项目/命名空间运行时所需内存的最小值,单位是 字节(bytes),通常简写为 b 。1
    存储预留项目/命名空间运行时所需存储空间的最小值,单位是 gigabytes ,通常简写为 GB 。
    服务负载均衡器项目/命名空间运行时使用负载均衡数量的最大值。
    服务节点端口项目/命名空间运行时使用节点端口的最大值。
    Pods项目/命名空间运行时,项目/命名空间内可以存在 Pod 数量的最大值。
    服务项目/命名空间运行时,项目/命名空间内可以存在服务数量的最大值。
    配置映射项目/命名空间内可以存在的配置数量的最大值。
    PVC项目/命名空间内可以存在的存储卷声明( Persistent Volume Claims ,简称 PVC )数量的最大值。
    副本控制器项目/命名空间内可以存在 Replications Controllers 数量的最大值。
    密文项目/命名空间内可以存在的密文数量的最大值。

    * 如果给项目/命名空间设置了 CPU 和内存的配额,那么在创建容器时,对每个容器都要各自设置 CPU 或内存的限制或预留的字段。使用 Rancher v2.2.0 或更新版本时,您可以在给项目/命名空间设置了 CPU 和内存的配额的同时,设置容器默认资源限制,这样可以避免单独给每个工作负载设置一遍资源限制的繁琐过程。关于为什么需要设置它,详情请参考Kubernetes 官方文档