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

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

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

一、W5100S/W5500+RP2040树莓派Pico<静态配置网络信息>

文章目录 1. 前言2. 相关网络信息2.1 简介2.2 优点2.3 应用 3. WIZnet以太网芯片4. 静态IP网络设置示例讲解以及使用4.1 程序流程图4.2 测试准备4.3 连接方式4.4 相关代码4.5 编译烧录 5. 注意事项6. 相关链接 1. 前言 从本章开始我们将用WIZnet的W5100S/W5500以太网芯片结合RP…

回归预测 | MATLAB实现BO-LSTM贝叶斯优化长短期神经网络多输入单输出回归预测

回归预测 | MATLAB实现BO-LSTM贝叶斯优化长短期神经网络多输入单输出回归预测 目录 回归预测 | MATLAB实现BO-LSTM贝叶斯优化长短期神经网络多输入单输出回归预测效果一览基本介绍模型搭建程序设计参考资料 效果一览 基本介绍 MATLAB实现BO-LSTM贝叶斯优化长短期神经网络多输入…

科大讯飞发布讯飞星火 3.0;开源AI的现状

🚀 科大讯飞发布讯飞星火 3.0,综合能力超越ChatGPT(非GPT-4版) 摘要:科大讯飞在2023全球1024开发者节上宣布讯飞星火 3.0正式发布,号称综合能力已超越ChatGPT。据介绍,星火认知大模型 V3.0在文…

Redis桌面管理工具:Redis Desktop Manager for Mac

Redis Desktop Manager是一款非常实用的Redis管理工具,它不仅提供了方便易用的图形用户界面,还支持多种Redis数据结构,可以帮助用户轻松地完成Redis数据库的管理工作。 以下是一些推荐Redis Desktop Manager的理由: 多平台支持&a…

实现地址转换的硬件机构

一、基本地址变换机构 1.硬件: 设置一个页表寄存器,存放页表在内存中的起始地址与页表长度。 2.执行过程: 进程未执行时,页表起始地址和长度存放在进程控制块(PCB)中;进程被调度时,OS内核会将其放入页表寄存器中。 3.具…

vue3+vite在线预览pdf

效果图 代码 <template><div class"pdf-preview"><div class"pdf-wrap"><vue-pdf-embed :source"state.source" :style"scale" class"vue-pdf-embed" :page"state.pageNum" /></div…

c#使用ExifLib库提取图像的相机型号、光圈、快门、iso、曝光时间、焦距信息等EXIF信息

近期公司组织了书画摄影比赛&#xff0c;本人作为摄影爱好者&#xff0c;平时也会拍些照片&#xff0c;这次比赛当然不能错过。为了提高获奖概率&#xff0c;选了19张图像作为参赛作品。但是&#xff0c;摄影作品要提交图像的光圈、曝光时间等参数。一两张还可以通过电脑自带软…

中国大模型开源创新与合作的新篇章 | 2023 CCF中国开源大会

2023年10月21日至22日&#xff0c;由中国计算机学会&#xff08;CCF&#xff09;和开放原子开源基金会联合主办的CCF中国开源大会&#xff08;CCF ChinaOSC&#xff09;在湖南省长沙市北辰国际会议中心成功召开。此次大会以“开源联合&#xff0c;聚力共赢”为主题&#xff0c;…

身份证号码,格式校验:@IdCard(Validation + Hutool)

目标 自定义一个用于校验 身份证号码 格式的注解IdCard&#xff0c;能够和现有的 Validation 兼容&#xff0c;使用方式和其他校验注解保持一致&#xff08;使用 Valid 注解接口参数&#xff09;。 校验逻辑 有效格式 符合国家标准。 公民身份号码按照GB11643&#xff0d;…

Gdb调试

1 概述 当程序运行时出现问题时&#xff0c;通过GDB调试可以快速找到问题点&#xff0c;当然不是所有问题都能通过调试找到问题点。 在GCC编译程序时&#xff0c;需要加 -g参数&#xff0c;可以通过在-g选项后附加数字1、2或3来指定在代码中加入调试信息的多少。默认的级别是2…

人工智能基础_机器学习001_线性回归_多元线性回归_最优解_基本概念_有监督机器学习_jupyter notebook---人工智能工作笔记0040

线性和回归,就是自然规律,比如人类是身高趋于某个值的概率最大,回归就是通过数学方法找到事物的规律. 机器学习作用: 该专业实际应用于机器视觉、指纹识别、人脸识别、视网膜识别、虹膜识别、掌纹识别、专家系统、自动规划、智能搜索、定理证明、博弈、自动程序设计、智能控制…

Decomposed Meta-Learning for Few-Shot Named Entity Recognition

原文链接&#xff1a; https://aclanthology.org/2022.findings-acl.124.pdf ACL 2022 介绍 问题 目前基于span的跨度量学习&#xff08;metric learning&#xff09;的方法存在一些问题&#xff1a; 1&#xff09;由于是通过枚举来生成span&#xff0c;因此在解码的时候需要额…

GPT的前世今生:从gpt1到chatgpt的能力提升

从2017年google brain提出transformer模型&#xff0c;到2018年基于transformer模型open ai推出了gpt1模型以及google推出了bert模型&#xff0c;到2019-2021年open ai陆续推出gpt2和gpt3&#xff0c;再到2022-2023年推出chat-gpt和gpt4&#xff0c;大语言模型已经发展成了一个…

Hadoop+Hive+Spark+Hbase开发环境练习

1.练习一 1.数据准备 在hdfs上创建文件夹&#xff0c;上传csv文件 [rootkb129 ~]# hdfs dfs -mkdir -p /app/data/exam 查看csv文件行数 [rootkb129 ~]# hdfs dfs -cat /app/data/exam/meituan_waimai_meishi.csv | wc -l 2.分别使用 RDD和 Spark SQL 完成以下分析&#xf…

Auth.js:多合一身份验证解决方案 | 开源日报 No.60

nodejs/node Stars: 96.2k License: NOASSERTION Node.js 是一个开源的、跨平台的 JavaScript 运行时环境。它具有以下关键特性和核心优势&#xff1a; 强大&#xff1a;Node.js 提供了强大且高效的服务器端运行能力&#xff0c;可以处理并发请求&#xff0c;并支持异步编程…

【Java技术专题】「入门到精通系列教程」深入探索Java特性中并发编程体系的原理和实战开发指南( 实现可伸缩IO专题)— 上

深入探索Java特性中并发编程体系的原理和实战开发指南&#xff08; 实现可伸缩IO专题&#xff09; 总体内容概览可扩展的网络服务分布式对象传统的阻塞式网络服务每个请求或连接可以在独立的线程中进行处理Server服务处理请求类Handler处理逻辑类优点缺点 可扩展性目标平稳降级…

【Gan教程 】 什么是变分自动编码器VAE?

名词解释&#xff1a;Variational Autoencoder&#xff08;VAE&#xff09; 一、说明 为什么深度学习研究人员和概率机器学习人员在讨论变分自动编码器时会感到困惑&#xff1f;什么是变分自动编码器&#xff1f;为什么围绕这个术语存在不合理的混淆&#xff1f;本文从两个角度…

设置爱奇艺代理教程

设置爱奇艺代理教程 活泼与直观&#xff1a;设置爱奇艺代理&#xff0c;让你的网络更加自由&#xff01; 轻松口语化&#xff1a;首先&#xff0c;打开爱奇艺APP&#xff0c;进入设置页面。 设置->网络->代理设置 活泼与直观&#xff1a;在代理设置页面&#xff0c;我…

Docker Swarm 集群搭建

Docker Swarm Mode Docker Swarm 集群搭建 Docker Swarm 节点维护 Docker Service 创建 1.准备主机 搭建一个 docker swarm 集群&#xff0c;包含 5 个 swarm 节点。这 5 个 swarm 节点的 IP 与暂 时的角色分配如下&#xff08;注意&#xff0c;搭建完成后会切换角色&#xff…

无线测温产品在菲律宾某工厂配电项目的应用

摘要&#xff1a;配电系统是由多种配电设备和配电设施所组成的变换电压和直接向终端用户分配电能的一个电力网络系统。由于配电系统作为电力系统的一个环节直接面向终端用户&#xff0c;它的完善与否直接关系着广大用户的用电可靠性和用电质量&#xff0c;因而在电力系统中具有…