K8s 资源范围管理对象 LimitRange

 默认情况下如果创建一个 Pod 没有设置 LimitsRequests 对其加以限制,那么这个 Pod 可能能够使用 Kubernetes 集群中全部资源, 但是每创建 Pod 资源时都加上这个动作是繁琐的,考虑到这点 Kubernetes 提供了 LimitRange 对象,它能够对一个 Namespace 下的全部 Pod 使用资源设置默认值、并且设置上限大小和下限大小等操作。这里演示将使用 LimitRange 来限制某个 namespace 下的资源的测试用例。

考虑到 LimitRange 是作用于 Namespace 的,所以这里提前创建一个用于测试的 Namespace。

$ kubectl create namespace limit-namespace


创建 LimitRange 对 Namespace 资源限制
创建一个 LimitRange 对象限制 Namespace 下的资源使用,其中 limit 的类型有两种:

1.对 Container 使用资源进行限制,在 Pod 中的每一个容器都受此限制。
2.对 Pod 进行限制,即 Pod 中全部 Container 使用资源总和来进行限制。

资源对象 limit-range.yaml 内容如下:

apiVersion: v1
kind: LimitRange
metadata:
  name: limit-test
spec:
  limits:
    - type: Pod        #对Pod中所有容器资源总和进行限制
      max:
        cpu: 4000m
        memory: 2048Mi 
      min:
        cpu: 10m
        memory: 128Mi 
      maxLimitRequestRatio:
        cpu: 5
        memory: 5
    - type: Container  #对Pod中所有容器资源进行限制
      max:
        cpu: 2000m
        memory: 1024Mi
      min:
        cpu: 10m
        memory: 128Mi 
      maxLimitRequestRatio:
        cpu: 5
        memory: 5
      default:
        cpu: 1000m
        memory: 512Mi
      defaultRequest:
        cpu: 500m
        memory: 256Mi
执行 Kubectl 创建 LimitRange:

$ kubectl apply -f limit-range.yaml -n limit-namespace

Container 参数:

max: Pod 中所有容器的 Limits 值上限。
min: Pod 中所有容器的 Requests 值下限。
default: Pod 中容器未指定 Limits 时,将此值设置为默认值。
defaultRequest: Pod 中容器未指定 Requests 是,将此值设置为默认值。
maxLimitRequestRatio: Pod 中的容器设置 Limits 与 Requests 的比例的值不能超过 maxLimitRequestRatio 参数设置的值,即 Limits/Requests ≤ maxLimitRequestRatio。
Pod 参数:

max: Pod 中所有容器资源总和值上限。
min: Pod 中所有容器资源总和值下限。
maxLimitRequestRatio: Pod 中全部容器设置 Limits 总和与 Requests 总和的比例的值不能超过 maxLimitRequestRatio 参数设置的值,即 (All Container Limits)/(All Container Requests) ≤ maxLimitRequestRatio。

作者:tigergao
功不唐捐 玉汝于成
原文地址:https://www.cnblogs.com/tigergaonotes/p/14740168.html