如果我们有成百上千个不同的Pod,那么先手动设置每个Pod的这4个参数,再检查并确保这些参数的设置,都是合理的。比如不能出现内存超过2GB或者CPU占据2个核心的Pod。最后还得手工检查不同租户(Namespace)下的Pod的资源使用量是否超过限额。为此,Kubernetes提供了另外两个相关对象:LimitRange及ResourceQuota,前者解决request与limit参数的默认值和合法取值范围等问题,后者则解决约束租户的资源配额问题。
本章从计算资源管理(Compute Resources)、服务质量管理(QoS)、资源配额管理(LimitRange、ResourceQuota)等方面
对于CPU和内存而言,Pod的Requests或Limits是指该Pod中所有容器的Requests或Limits的总和(多个容器的request或resource相加)
命名空间中LimitRange只会在Pod创建或者更新时执行检查。如果手动修改LimitRange为一个新的值,那么这个新的值不会去检查或限制之前已经在该命名空间中创建好的Pod。
创建一个LimitRange
apiVersion: v1 kind: LimitRange metadata: name: app-limitrange namespace: app spec: limits: - type: Pod # 用于限制整个 Pod 所有容器的资源使用总和 max: cpu: "2" # 单个 Pod 最大 CPU 限制 memory: "4Gi" # 单个 Pod 最大内存限制 min: cpu: "256m" # 单个 Pod 最小 CPU 限制 memory: "256Mi" # 单个 Pod 最小内存限制 maxLimitRequestRatio: # limits.cpu 和 requests.cpu 之间的比例不能超过,MaxLimitRequestRatio = limits / requests cpu: "2" # pod 内所有容器的limit+request cpu总和比例不能大于2 memory: "4" # pod 内所有容器的limit+request 内存总和比例不能大于2 - type: Container # 为没有显式指定资源的容器设置默认限制值 # 对于没有显示指定资源的容器的默认值default值/defaultRequest值比例不能大于maxLimitRequestRatio default: cpu: "256m" # 单个容器默认 CPU limit memory: "512Mi" # 单个容器默认内存 limit # 为没有显式请求资源的容器设置默认请求值 defaultRequest: cpu: "128m" # 单个容器默认CPU调度request memory: "128Mi" # 单个容器默认内存调度request # default和defaultRequest设置的值不能超过max值 # 对于设置了容器的max/min,必须设置default/defaultrequest或者清单显示指定limit/request,否则无法成功创建 max: cpu: "1" # 单个容器最大 CPU 限制 memory: "2Gi" # 单个容器最大内存限制 # default和defaultRequest设置的值不能小于min值 min: cpu: "128m" # 单个容器最小 CPU 限制 memory: "128Mi" # 单个容器最小内存限制 maxLimitRequestRatio: cpu: "2" # 单个容器的limit+request cpu比例不能大于2 memory: "4" # 单个容器的limit+request 内存比例不能大于2
查看创建的LimitRange
]# kubectl describe limits app-limitrange -n app Name: app-limitrange Namespace: app Type Resource Min Max Default Request Default Limit Max Limit/Request Ratio ---- -------- --- --- --------------- ------------- ----------------------- Pod cpu 256m 2 - - 2 Pod memory 256Mi 4Gi - - 4 Container memory 128Mi 2Gi 128Mi 512Mi 4 Container cpu 128m 1 128m 256m 2
标签:容器,资源配置,request,LimitRange,memory,Pod,k8s,cpu From: https://www.cnblogs.com/rtnb/p/18647133