23.5. 为 Overcommitment 配置 Master
调度基于请求的资源,而配额和硬限制指的是资源限制,它们可以设置为高于请求的资源。请求和限制的差值决定了过量使用程度;例如,如果为容器赋予 1Gi 内存请求和 2Gi 内存限制,则根据 1Gi 请求将容器调度到节点上,但最多可使用 2Gi;因此过量使用为 200%。
如果 OpenShift Container Platform 管理员想要控制过量使用的程度并管理节点上的容器密度,则可以配置 master 来覆盖开发人员容器上设置的请求和限制之间的比例。与针对项目的 LimitRange 一起使用指定限制和默认,可以调整容器限制和请求以达到所需的过量使用程度。
这需要在 master-config.yaml 中配置 ClusterResourceOverride
准入控制器,如下例所示(如果存在现有配置树,或根据需要引入缺少的元素):
admissionConfig: pluginConfig: ClusterResourceOverride: 1 configuration: apiVersion: v1 kind: ClusterResourceOverrideConfig memoryRequestToLimitPercent: 25 2 cpuRequestToLimitPercent: 25 3 limitCPUToMemoryPercent: 200 4
在更改 master 配置后,需要一个 master 重启。
请注意,如果没有在容器中设置任何限制,这些覆盖无效。创建一个带有默认限制(每个独立的项目或在 项目模板)的 LimitRange 对象,以确保能够应用覆盖。
另请注意,在覆盖后,容器限制和请求必须仍需要满足项目中的 LimitRange 对象的要求。这可能会导致 pod 被禁止的情况。例如,开发人员指定了一个接近最小限制的限制,然后其请求被覆盖为低于最小限制。这个问题在以后会加以解决,但目前而言,请小心地配置此功能和 LimitRange。
配置后,可通过编辑项目并添加以下注解来禁用每个项目覆盖的覆盖范围(例如,允许独立于覆盖配置基础架构组件):
quota.openshift.io/cluster-resource-override-enabled: "false"