我是靠谱客的博主 壮观墨镜,最近开发中收集的这篇文章主要介绍针对Kubernetes群集做资源限制,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

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: v1
kind: ResourceQuota
metadata:
name: compute-resources
spec:
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: v1
kind: ResourceQuota
metadata:
name: object-counts
spec:
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: 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的值。

———————— 本文至此结束,感谢阅读 ————————

最后

以上就是壮观墨镜为你收集整理的针对Kubernetes群集做资源限制的全部内容,希望文章能够帮你解决针对Kubernetes群集做资源限制所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(62)

评论列表共有 0 条评论

立即
投稿
返回
顶部