k8s-----25、资源调度-ResourceQuota资源配额、资源限制limitrange、服务质量QoS

news2024/12/23 6:08:33

1、ResourceQuota资源配额

1.0 作用

命名空间资源配额。防止公司内部人员对资源的不合理利用。

1.1、为什么需要资源配额

1、作为k8s集群的管理员,知道集群的规模,会合理规划资源,但是使用侧不知道,会导致很多不合理的使用场景,造成浪费。
2、大量资源废弃后,没有合理清理,存在集群被打爆的风险。
3、加了资源配额限制之后,可以合理配置资源,并让使用方做到定期清理无用资源。

1.2、配置参数

#创建resourcequota
apiVersion: v1
kind: ResourceQuota 
metadata:
  name: resource-test 
  labels:
    app: resourcequota 
spec:
  hard:
    pods: 50 
    requests.cpu: 0.5 
    requests.memory: 512Mi 
    limits.cpu: 5 
    limits.memory: 16Gi 
    configmaps: 20 
    requests.storage: 40Gi 
    persistentvolumeclaims: 20 
    replicationcontrollers: 20 
    secrets: 20
    services: 50 
    services.loadbalancers: "2" 
    services.nodeports: "10"

#参数解释
➢ pods:限制最多启动Pod的个数
➢ requests.cpu:限制pod最低CPU请求数
➢ requests.memory:限制pod最低内存的请求数 
➢ limits.cpu:限制最高CPU的limit上限
➢ limits.memory:限制最高内存的limit上限

2、LimitRange资源限制

2.1 作用

1、防止出现总资源一定的情况下,大家不指定pod的所需资源,那么创建的Pod都没有配置resources,会发现最终统计的资源使用为0,那么就可以无限创建pod。
2、可以无限制的对pod的资源进行扩展,比如可能直接创建的就是16C16G,导致无资源可用。
在这里插入图片描述

2.2 限制

1、deploy 已经创建的不会影响,如果pod重建过后,会将limitrange的配置刷新到新的pod里。
2、通过edit编辑了pod的resource参数,那么是不会被limitrange更改掉。
3、创建的时候需要指定对应的命名空间。

2.3 使用

limit可以同时配置,只有type不一致的时候,需要新开一行编写。

2.3.1 默认limitrange配置

# 默认配置是为了控制资源利用情况,针对不同类型进行了默认的资源使用配置
# default:默认limits配置
# defaultRequest:默认requests配置
apiVersion: v1 
kind: LimitRange 
metadata:
  name: cpu-mem-limit-range 
spec:
  limits:
  - default:
      cpu: 1
      memory: 512Mi 
    defaultRequest:
      cpu: 0.5
      memory: 256Mi 
    type: Container  #类型是容器

2.3.2 requests和limits的范围

#最大最小的配置是为了方式资源无限制的配置,导致资源浪费与资源打满
# max:内存CPU的最大配置 
# min:内存CPU的最小配置
apiVersion: v1 
kind: LimitRange 
metadata:
  name: cpu-min-max-demo-lr 
spec:
  limits: 
  - max:
      cpu: "800m"
      memory: 1Gi 
    min:
      cpu: "200m"
      memory: 500Mi 
    type: Container

2.3.3 限制申请存储空间

# max:最大PVC的空间 
# min:最小PVC的空间
apiVersion: v1 
kind: LimitRange 
metadata:
  name: storagelimits 
spec:
  limits:
  - type: PersistentVolumeClaim #类型是pvc
    max: 
      storage: 2Gi
    min:
      storage: 1Gi

2.3.4 整体配置

apiVersion: v1 
kind: LimitRange 
metadata:
  name: cpu-min-max-demo-lr 
spec:
  limits: 
  - default:
      cpu: 1
      memory: 512Mi 
    defaultRequest:
      cpu: 0.5
      memory: 256Mi 
    max:
      cpu: "800m"
      memory: 1Gi 
    min:
      cpu: "200m"
      memory: 500Mi 
    type: Container #类型容器
  - type: PersistentVolumeClaim #类型是pvc
    max: 
      storage: 2Gi
    min:
      storage: 1Gi

3、服务质量QoS

3.1 QoS级别

➢ Guaranteed:最高服务质量,当宿主机内存不够时,会先kill掉QoS为BestEffort和 Burstable的Pod,如果内存还是不够,才会kill掉QoS为Guaranteed,该级别Pod的资源 占用量一般比较明确,即requests的cpu和memory和limits的cpu和memory配置的一致。

➢ Burstable: 服务质量低于Guaranteed,当宿主机内存不够时,会先kill掉QoS为 BestEffort的Pod,如果内存还是不够之后就会kill掉QoS级别为Burstable的Pod,用来保 证QoS质量为Guaranteed的Pod,该级别Pod一般知道最小资源使用量,但是当机器资 源充足时,还是想尽可能的使用更多的资源,即limits字段的cpu和memory大于 requests的cpu和memory的配置。

➢ BestEffort:尽力而为,当宿主机内存不够时,首先kill的就是该QoS的Pod,用以保证 Burstable和Guaranteed级别的Pod正常运行。这个类型的QoS没有配置resources。

3.2 不同级别的配置

3.2.1 QoS为Guaranteed的Pod

# 1 Pod中的每个容器必须指定limits.memory和requests.memory, 并且两者需要相等;
# 2 Pod中的每个容器必须指定limits.cpu和limits.memory,并且两 者需要相等。

apiVersion: v1 
kind: Pod 
metadata:
  name: qos-demo
  namespace: qos-example 
spec:
  containers:
  - name: qos-demo-ctr
    image: nginx
    resources: 
      limits:
        memory: "200Mi"
        cpu: "700m" 
      requests:
        memory: "200Mi" 
        cpu: "700m"

3.2.2 QoS为Burstable的Pod

# 1 Pod不符合Guaranteed的配置要求;
# 2 Pod中至少有一个容器配置了requests.cpu或requests.memory。
apiVersion: v1 
kind: Pod 
metadata:
  name: qos-demo
  namespace: qos-example 
spec:
  containers:
  - name: qos-demo-ctr
    image: nginx
    resources: 
      limits:
        memory: "200Mi"
      requests:
        memory: "100Mi" 
       

3.2.3 QoS为BestEffort的Pod

# 1 不设置resources参数
apiVersion: v1 
kind: Pod 
metadata:
  name: qos-demo
  namespace: qos-example 
spec:
  containers:
  - name: qos-demo-ctr
    image: nginx

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1136034.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

ffmpeg的下载和编译(vs2022)

感谢大佬的二创,直接提供了sln编译 ffmpeg二创地址 创建如下目录 build存放代码(build最好改成source,因为作者这么建议,编译完才发现) msvc存放第三方依赖的头文件,这里固定叫msvc,因为大佬的sln里查找的路径是这个,不嫌麻烦也可以自己改 下载代码和编译器 下载源码…

Qt5 Python-docx库的使用,Qt python混合编程,qt 读写word,不依赖office

解决方案的选择 参考: https://www.jianshu.com/p/be68884849c3 因为项目要求不能使用模板方案,不能依赖Office,网上找了一些解决方案进行调研,以下几个方案: OpenOffice: 兼容性差,集成调用难度大LibOffi…

Mac怎么删除文件和软件?苹果电脑删除第三方软件方法

Mac删除程序这个话题为什么一直重复说或者太多人讨论呢?因为如果操作不当,可能会导致某些不好的影响。因为Mac电脑如果有太多无用的应用程序,很有可能会拖垮Mac系统的运行速度。或者如果因为删除不干净,导致残留文件积累在Mac电脑…

产品经理的秘密武器:提高效率的 6 种软件工具

在进入产品坑之前,你被这些假象“欺骗”过吗? 你认为产品经理是这样的:早上喝咖啡,听音乐,看数据报告,处理电子邮件,写一些产品需求,提交给各部门;午餐休息后&#xff0…

Java——Spring的控制反转(一文详解IOC)

Spring,Spring MVC,Spring Boot 三者比较 答: 这三者专注的领域不同,解决的问题也不一样;总的来说,Spring 就像一个大家族,有众多衍生产品例如 Boot,Security,JPA等等。…

Sectigo代码签名证书

自数字化时代以来,软件开发领域一直在迅速发展,而数字签名成为了确保软件和应用程序的完整性和可信性的关键元素之一。Sectigo代码签名证书作为数字签名的一个重要组成部分,为开发者和软件供应商提供了一种可靠的方式来证明其代码的来源和完整…

charles抓包手机的http

一,先写抓包手机的http 1,设置charles 按照如图设置charles,之后拿到ip地址. 2,手机端配置网络 手机连上和电脑同一个局域网,在无线按钮长按或者右键,手动配置ip,配置成刚刚第一步取到的ip和端口: 在配置好之后,电脑会弹出一个弹窗: 点击allow,就能狗抓取手机http的包了.

SAAS智能打印设计->自定义打印模板

1 业务场景 企业在业务运转过程中经常需要在线打印凭证、采购单、出入库单据等等。这时,你可以使用SAAS版打印设计器,根据自身需求自行设计打印模板,无论是打印纸张规格、打印方向,还是打印样式,你都可以自由调整设计…

目前和未来的缓存构建

说起来可能有点反直觉,有时候不运行反而可以帮助我们加快速度,这正是网络浏览器运行的指导原则。不必在页面上加载所有内容,缓存的元素已经存在,不需要每次访问网站或网页时都重新加载。页面加载速度越快,浏览器的工作…

windows 离线安装 vue 环境

由于公司要求在内网开发项目,而内网不能连接外网,因此只能离线安装 vue 环境,在网上找过很多的离线安装方法,但都没有成功,于是在不断的尝试中找到了以下方法。 1、找一台与内网电脑相同系统的有网电脑。 2、在有网的电…

Power BI 实现日历图,在一张图中展示天、周、月数据变化规律

《数据可视化》这本书里介绍了一个时间可视化的案例(如下图所示),以日历图的形式展示数据的变化,可以在一张图上同时观察到:(1)每一天的数据变化;(2)随周变化…

1024 云上见 · 上云挑战(ChatGPT搭建)

【玩转1024】使用函数计算X通义千问搭建AI助手,参与1024小说创作大赛 【使用函数计算X通义千问搭建AI助手,参与小说创作大赛】:本活动基于函数计算X 通义千问快速部署 AI 个人助手应用,用户可以根据需要选择不同角色的AI助手开启…

Python开发利器KeymouseGo,开源的就是香

1、介绍 在日常工作中,经常会遇到一些重复性的工作,不管是点击某个按钮、写文字,打印,还是复制粘贴拷贝资料之类的,需要进行大量的重复操作。按键精灵大家想必都听说过,传统的方式,可以下载个按…

山东大学开发可解释深度学习算法 RetroExplainer,4 步识别有机物的逆合成路线

逆合成旨在找到一系列合适的反应物,以高效合成目标产物。这是解决有机合成路线的重要方法,也是有机合成路线设计的最简单、最基本的方法。 早期的逆合成研究多依赖编程,随后这一工作被 AI 接替。然而,现有的逆合成方法多关注单步逆…

基于STM32温室智能监测控制系统设计

**单片机设计介绍,基于STM32温室智能监测控制系统设计 文章目录 一 概要二、功能设计设计思路 三、 软件设计原理图 五、 程序程序文档 六、 文章目录 一 概要 设计功能包含温湿度检测、光照强度检测,可以通过温湿度和光照来控制灯和电机风扇运转。包含的…

Java多线程秘籍,掌握这5种方法,让你的代码优化升级

介绍5种多线程方法,助您提高编码效率! 如果您的应用程序与那些能够同时处理多个任务的应用程序相比表现不佳,很可能是因为它是单线程的。解决这个问题的方法之一是采用多线程技术。 以下是一些可以考虑的方法: 线程(…

Mac第三方恶意软件删除不了怎么办,这个方法你尝试了吗?

大多使用Mac电脑的用户,难免会遇到强制弹广告窗或者有些恶意软件在Mac电脑里删不掉的情况。是的,你的Mac可能已经感染了恶意软件。恶意软件除了传统的病毒、蠕虫和特洛伊木马之外,还有一个蓬勃发展的广告软件和间谍软件程序生态系统&#xff…

AT32固件库外设使用,ArduinoAPI接口移植,模块化

目录 一、ArduinoAPI移植一、通用定时器使用1.计时1.2.ETR外部时钟计数4.ArduinoAPI - timer 三、ADC1.ADC初始化(非DMA)2.ADC_DMA 规则通道扫描 六、USB HID IAP1.准备好Bootloader和app2.配置好时钟,一定要打开USB3.将生成的时钟配置复制到…

每日汇评:黄金形态确认牛市,再次尝试上行2000美元

金价挑战1988美元的关键阻力位,向2000美元进发; 在避险情绪中,美元随着美债收益率扩大复苏; 黄金价格在日线图上确认了一个多头标志,RSI指数仍然指向更多的上涨; 随着中东紧张局势再次引起人们的关注&#…