限制范围
一个 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 设计文档获取更多信息。