千家信息网

Kubernetes群集在yaml文件中进行资源限制

发表于:2025-01-31 作者:千家信息网编辑
千家信息网最后更新 2025年01月31日,Kubernetes对资源的限制实际上是通过cgroup来控制的,cgroup是容器的一组用来控制内核如何运行进程的相关属性集合,针对内存、CPU各种设备都有对应的cgroup。默认情况下,Pod运行
千家信息网最后更新 2025年01月31日Kubernetes群集在yaml文件中进行资源限制

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

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

注:以下只是在yaml文件中进行资源限制的一个片段,并不是完整的yaml文件!

1)针对pod的资源限制

[root@master limit]# vim cgroup-pod.yaml spec:  containers:  - name: xxx    image: xxx    ports:    - protocol: TCP      containerPort: 80    resources:      limits:             #硬限制        cpu: "4"        memory: 2Gi      requests:           #运行pod时请求的资源数量        cpu: 260m        memory: 260Mi

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

2)基于名称空间的资源限制(可以具体制定限制某一个名称空间)

1)计算资源配额
[root@master limit]# vim compute-resource.yaml apiVersion: v1kind: ResourceQuotametadata:  name: compute-resourcesspec:  hard:    pods: "20"         #所有pod数量不可以超过20个    requests.cpu: "20"          #初始请求的CPU不可以超过20m    requests.memory: 100Gi    #初始请求的内存不可以超过100G    limits.cpu: "40"           #CPU的硬限制    limits.memory: 200Gi        #内存的硬限制
2)资源对象数量配额限制
[root@master limit]# vim object-counts.yaml apiVersion: v1kind: ResourceQuotametadata:  name: object-countsspec:  hard:    configmaps: "10"      #最多可以创建10个configmap    persistentvolumeclaims: "4"      #最多可以创建4个PVC    replicationcontrollers: "20"              #最多可以创建20个RC资源对象    secrets: "10"                   #最多可以创建10个secrets       service.loadbalancers: "2"      #最多可以创建2个svc
3)配置CPU和内存的limitRange
[root@master limit]# vim limitRange.yaml apiVersion: v1kind: LimitRangemetadata:  name: mem-limit-rangespec:  limits:  - default:              memory: 50Gi    #硬限制      cpu: 5      #硬限制    defaultRequest:       #初始请求      memory: 1Gi      cpu: 1    type: Container        #限制对象为容器

default 即 limit的值,defaultRequest 即 request的值。


0