资源限制

基于pod

Kubernetes对资源的限制实际上是通过cgroup来控制的,cgroup是容器的一组用来控制内核如何运行进程的相关属性集合。针对内存、CPU和各种设备都有对应的cgroup。

默认情况下,Pod运行没有CPU和内存的限制。这一位这系统中的任何Pod将能够像执行该Pod所在的节点一样,消耗足够多的CPU和内存。一般会针对某些应用的pod资源进行资源限制,这个资源限制是通过resources的 requests和 limits来实现:

yaml:

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

spec:
  containers:
  - image: xxx
    name: xxxx
    resources:
      limits:    #最大
        cpu: "4"
        memory: 2Gi
      requests:  #初始
        cpu: 250m
        memory: 250Mi

基于namespace

计算资源配额yaml:

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

配置对象数量配额限制:

apiVersion: v1
kind: ResourceQuota
metadata:  
  name: object-counts 
  namespace: spark-cluster
spec:  
  hard:    
    configmaps: "10"    
    persistentvolumeclaims: "4"    
    replicationcontrollers: "20"    
    secrets: "10"    
    services: "10"    
    services.loadbalancers: "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

 

Logo

K8S/Kubernetes社区为您提供最前沿的新闻资讯和知识内容

更多推荐