标签:针对 限制 群集 cpu yaml memory pod k8s CPU
前言
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
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 //限制对象为容器
标签:针对,限制,群集,cpu,yaml,memory,pod,k8s,CPU 来源: https://blog.51cto.com/14306186/2525580
本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享; 2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关; 3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关; 4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除; 5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。