一 资源限制-pod

默认情况下,Pod 运行没有 CPU 和内存的限额。 这意味着系统中的任何 Pod 将能够像执行该 Pod 所在的节点一样,消耗足够多的 CPU 和内存 。

一般会针对某些应用的 pod 资源进行资源限制,这个资源限制是通过resources 的 requests 和 limits 来实现

1.1 resources 的 requests 和 limits

举例:

spec:
containers:
- image: xxxx
imagePullPolicy: Always
name: auth
ports:
- containerPort: 8080
protocol: TCP
resources:
limits:
cpu: "4"
memory: 2Gi
requests:
cpu: 250m
memory: 250Mi

requests 要分分配的资源,limits 为最高请求的资源值。可以简单理解为初始值和最大值

1.2 配置 CPU 和 内存 LimitRange

 

apiVersion: v1
kind: LimitRange
metadata:
  name: mem-limit-range
spec:
  limits:
  - default: #最多允许
      memory: 50Gi
      cpu: 5
    defaultRequest:  #默认
      memory: 1Gi
      cpu: 1
    type: Container

default 即 limit 的值

defaultRequest 即 request 的值

 

二 资源限制-命名空间

2.1 计算资源配额

 

apiVersion: v1
kind: ResourceQuota
metadata:
  name: compute-resources
  namespace: spark-cluster
spec:
  hard:
    pods: "20" #pod20个
    requests.cpu: "20"
    requests.memory: 100Gi    
    limits.cpu: "40"
    limits.memory: 200Gi

2.2 配置对象数量配额限制

 

apiVersion: v1
kind: ResourceQuota
metadata:
  name: object-counts
  namespace: spark-cluster
spec:
  hard:
    configmaps: "10"
    persistentvolumeclaims: "4" #pvc
    replicationcontrollers: "20" #rc
    secrets: "10" 
    services: "10"
    services.loadbalancers: "2"

这里面代表都是最多允许的个数