限制范围

    一个 LimitRange(限制范围) 对象提供的限制能够做到:

    • 在一个命名空间中实施对每个 Pod 或 Container 最小和最大的资源使用量的限制。
    • 在一个命名空间中实施对每个 PersistentVolumeClaim 能申请的最小和最大的存储空间大小的限制。
    • 在一个命名空间中实施对一种资源的申请值和限制值的比值的控制。

    对 LimitRange 的支持自 Kubernetes 1.10 版本默认启用。

    LimitRange 的名称必须是合法的 DNS 子域名

    • 管理员在一个命名空间内创建一个 对象。
    • 用户在命名空间内创建 Pod ,Container 和 PersistentVolumeClaim 等资源。
    • 准入控制器对所有没有设置计算资源需求的 Pod 和 Container 设置默认值与限制值, 并跟踪其使用量以保证没有超出命名空间中存在的任意 LimitRange 对象中的最小、最大资源使用量以及使用量比值。
    • 若创建或更新资源(Pod、 Container、PersistentVolumeClaim)违反了 LimitRange 的约束, 向 API 服务器的请求会失败,并返回 HTTP 状态码 与描述哪一项约束被违反的消息。
    • 若命名空间中的 LimitRange 启用了对 和 的限制, 用户必须指定这些值的需求使用量与限制使用量。否则,系统将会拒绝创建 Pod。
    • LimitRange 的验证仅在 Pod 准入阶段进行,不对正在运行的 Pod 进行验证。

    能够使用限制范围创建的策略示例有:

    • 为 spec 中没有 cpu 和内存需求值的 Container 定义默认 CPU 限制值与需求值 150m,内存默认需求值 300Mi。

    竞争和对 LimitRange 的改变都不会影响任何已经创建了的资源。

    接下来

    参阅 LimitRanger 设计文档获取更多信息。