针对Kubernetes群集做资源限制

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

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

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

1)针对pod的资源限制

[[email protected] 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)计算资源配额

[[email protected] 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)资源对象数量配额限制

[[email protected] 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

[[email protected] 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的值。

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

原文地址:https://blog.51cto.com/14157628/2474372

时间: 2024-11-07 14:21:36

针对Kubernetes群集做资源限制的相关文章

扩展Kubernetes群集节点并手动扩充Pod

如果现有的资源已经不能满足应用程序的运行需求时,我们就需要扩充AKS的节点,以满足应用的需求.对于群集节点的扩充我们有两种方式: 横向扩展:横向扩展即为在保证当前现有节点的稳定运行的前提下向群集中添加新的节点,进而增加资源. 纵向扩展:纵向扩展即调整现有的虚拟机规格,纵向扩展时节点会被仔细封锁和排除,尽量避免对正在运行的应用程序造成中断. 纵向扩展时,AKS 会一直等待,直到节点被 Kubernetes 群集标记为 Ready,然后才在这些节点上计划 Pod.今天我们要和大家演示的是使用横向扩展

摄影用户的使针对UI设计师做最优设计

如果全团队是Mac的话,Sketch是非常好用且适应现在的设计趋势的.我们公司现在已经全部都用Sketch了.Sketch尤其适合设计师职能不细分的中小团队和个人作品的制作.线框到视觉稿可以在一个软件里完成,能省去不少时间. Sketch的用户社区也比较繁荣健康,让人挺有信心继续用下去.(Sketch的扩展开发比PS容易的样子,我看github上还有人做了自动生成iconfont之类的高级脚本--) 其他回答基本都只是在特色功能上评论,确实,这软件一开始的印象可能只有小巧便捷够用.但用多了后就会

不能做资源的奴隶,要成为他们的主人

现今这个社会,慢慢发现,越来越多的资源,越来越多的信息,有时候,我发现,自己渐渐丧失了收集信息本来的目的——学习!一味的沉浸在各种看似牛逼资源的yy下,就感觉自己也很牛了,这肯定是种病态的表现,我要改正这种状态! 不能做资源的奴隶,要成为他们的主人!!! 首先,要学会安静下来,是的,安静,浮躁的心态是万万不能的,只会越来越糟糕,一事无成.面对这么多的资源,接下来,我要给自己制定个安排: 一.新闻/信息类的网站: 知乎(这么高big的地方,还是要当做主营地的嘛) 暂时没想好第二个地 二.前端信息网

Kubernetes Harbor等资源--secret和ServiceAccount配置

Kubernetes Harbor等资源--secret和ServiceAccount配置 ![]来啦,老弟########## 用途 secret对象类型主要目的是保存和处理敏感信息/私密数据.将这些信息放在secret对象中比 直接放在pod或docker image中更安全,也更方便使用.在一个已经创建好的secrets对象有两种方式被pod对象使用,其一,在container中的volume对象里以file的形式被使用,其二,在pull images时被kubelet使用. ######

hbase针对fullgc所做的优化(Memstore所作的优化 针对BlockCache所作优化)

先看:深入研究java gc https://blog.51cto.com/12445535/2372976老年代 CMS gc回收算法 对hbase的影响 https://blog.51cto.com/12445535/2373206 1.最原始的HBase CMS GC相当严重,经常会因为碎片过多导致Promotion Failure,严重影响业务的读写请求.2.分别是针对Memstore所作的两个优化:Thread-Local Allocation Buffer和MemStore Chun

SQL2012群集添加资源失败解决

问题原因:群集是WIN2012R2+SQL2012Q企业版架构,遇到点问题要解决,不小心做了如下操作:点了"更多资源"à"SQLServer". 结果:杯具了,SQL server角色立马画X,启动失败(因未及时截图,所以示意一下画X的部位显示红X失败) 问题分析:是我不小心加了资源导致,查看系统日志果然有相关报错.于是执行命令看了一下: 果然多了一个失败的资源! 在这里要抱怨一下,误加了资源报了错,WIN2012R2群集管理器既看不到错误的资源,也无法删除!!!这

Kubernetes集群资源监控

Kubernetes监控指标 集群监控? 节点资源利用率? 节点数? 运行Pods Pod监控? Kubernetes指标(pod) DESIRED:预期的状态CURRENT:当前的状态UP-TO-DATE:更新后的状态AVAILABLE:可以用的状态 ? 容器指标(cpu,mem)? 应用程序 Kubernetes监控方案 cAdvisor+InfluxDB+Grafana:cAdvisor(k8s自身的组件)采集的数据,Heapster会去收集数据存在InfluxDB中,Grafana对In

Kubernetes安全三步谈:如何监控与控制Kubernetes中的资源消耗问题

或许很多人可能认为资源消耗并非安全问题,但实际上不合理的资源消耗会让黑客有可乘之机,来攻击K8s的组件.本文将介绍如何处理资源消耗或noisy neighbor问题,包括如何管理Pods中的资源以及管理项目和资源配额等. 本文是关于Kubernetes安全系列三篇文章中的最后一篇.在第一篇文章中,我们分享了如何确保企业的Kubernetes集群免受外部攻击:第二篇文章介绍了三种保护Kubernetes免受内部威胁的方法.在本文中,我们将介绍如何处理资源消耗或noisy neighbor问题. 对

Kubernetes/5.Pod资源清单配置基础

Pod资源清单配置基础 Docker中我们都说容器.docker,大家耳熟能详.但到了kubernetes中,这个专有名词仿佛就被"取而代之"了.kubernetes的语境中,我们将一个容器集合称之为Pod What is Pod? Pod的特征 Pod对象的配置格式 Pod对象的申明类型 命令补充 三种网络代理方式 参考文档 备注 1.What is Pod? 那什么是Pod?如图所示,Pod中有一个pause容器,和一堆业务容器,他们有各自的PID.MOUNT和USER,但他们共享