一.简单介绍

资源配额(Resource Quotas)是用来限制用户资源用量的一种机制。 它的工作原理为:

资源配额应用在Namespace上,并且每个Namespace最多只能有一个ResourceQuota对象

开启计算资源配额后,创建容器时必须配置计算资源请求或限制(也可以LimitRange设置默认值)

用户超额后禁止创建新的资源

二.资源配额的启用

首先,在API Server启动时配置ResourceQuota adminssion control,然后在namespace中创建ResourceQuota对象即可。

三.资源配额的类型

  • 计算资源,包括cpu和memory

    • cpu,limits.cpu,requests.cpu
    • memory,limits.memory,requests.memory
  • 存储资源,包括存储资源的总量以及制定的storage class的总量
    • requests.storage:存储资源总量,如500Gi
    • persistentvolumeclaims:pvc的个数
    • .storageclass.storage.k8s.io/requests.storage
    • .storageclass.storage.k8s.io/persistentvolumeclaims
  • 对象数,即可创建的对象的个数
    • pods, replicationcontrollers, configmaps, secrets
    • resourcequotas, persistentvolumeclaims
    • services, services.loadbalancers, services.nodeports

四.LimitRange

默认情况下,kubernetes中所有容器都没有任何cpu和内存限制。limitRange用来给Namespace增加一个资源限制,包括最小、最大和默认资源。比如:

apiVersion: v1
kind: LimitRange
metadata:
name: mylimits
spec:
limits:
- max:
cpu: "2"
memory: 1Gi
min:
cpu: 200m
memory: 6Mi
type: Pod
- default:
cpu: 300m
memory: 200Mi
defaultRequest:
cpu: 200m
memory: 100Mi
max:
cpu: "2"
memory: 1Gi
min:
cpu: 100m
memory: 3Mi
type: Container

五.kubernetes Resource QoS Classes 介绍

对于每一种Resource都可以将容器分为三种Qos Classes: Guaranteed,Burstable,Best-Effort,它们的QoS级别依次递减。

5.1 Guaranteed

如果pod中所有Container的所有Resource的limit和request相等都不为0,则这个Pod的Qos Class就是Guaranteed。

注意:如果一个容器只指明了limit,而未指明request,则表明request的值等于limit的值。

例子如下:

containers:
name: foo
resources:
limits:
cpu: 10m
memory: 1Gi
name: bar
resources:
limits:
cpu: 100m
memory: 100Mi
containers:
name: foo
resources:
limits:
cpu: 10m
memory: 1Gi
requests:
cpu: 10m
memory: 1Gi name: bar
resources:
limits:
cpu: 100m
memory: 100Mi
requests:
cpu: 100m
memory: 100Mi

5.2 Best-Effort

如果Pod中所有容器的所有Resource的request和limit都没有赋值,则这个Pod的QoS Class就是Best-Effort.

containers:
name: foo
resources:
name: bar
resources:

5.3 Burstable

除了符合Guaranteed和Best-Effort的场景,其他场景的Pod QoS Class都属于Burstable。

注意:当limit值未指定时,其有效值其实是对应Node Resource的Capacity。

# 容器bar没有对Resource进行指定。
containers:
name: foo
resources:
limits:
cpu: 10m
memory: 1Gi
requests:
cpu: 10m
memory: 1Gi name: bar
# 容器foo和bar对不同的Resource进行了指定。
containers:
name: foo
resources:
limits:
memory: 1Gi name: bar
resources:
limits:
cpu: 100m
容器foo未指定limit,容器bar未指定request和limit。
containers:
name: foo
resources:
requests:
cpu: 10m
memory: 1Gi name: bar

kubernetes集群之资源配额(Resource Quotas)的更多相关文章

  1. 大型Kubernetes集群的资源编排优化

    背景 云原生这个词想必大家应该不陌生了,容器是云原生的重要基石,而Kubernetes经过这几年的快速迭代发展已经成为容器编排的事实标准了.越来越多的公司不论是大公司还是中小公司已经在他们的生产环境中 ...

  2. vivo 公司 Kubernetes 集群 Ingress 网关实践

    文章转载自:https://mp.weixin.qq.com/s/qPqrJ3un1peeWgG9xO2m-Q 背景 vivo 人工智能计算平台小组从 2018 年底开始建设 AI 计算平台至今,已经 ...

  3. 监控Kubernetes集群证书过期时间的三种方案

    前言 Kubernetes 中大量用到了证书, 比如 ca证书.以及 kubelet.apiserver.proxy.etcd等组件,还有 kubeconfig 文件. 如果证书过期,轻则无法登录 K ...

  4. 二进制部署kubernetes集群(上篇)

    1.实验架构 1.1.硬件环境 准备5台2c/2g/50g虚拟机,使用10.4.7.0/24 网络 .//因后期要直接向k8s交付java服务,因此运算节点需要4c8g.不交付服务,全部2c2g足够. ...

  5. 使用acs-engine在Azure中国区部署kubernetes集群详解

    转载请注明出处:http://www.cnblogs.com/wayneiscoming/p/7649642.html 1. acs-engine简介 ACS是微软在2015年12月推出的一项基于容器 ...

  6. 二进制安装部署kubernetes集群---超详细教程

    本文收录在容器技术学习系列文章总目录 前言:本篇博客是博主踩过无数坑,反复查阅资料,一步步搭建完成后整理的个人心得,分享给大家~~~ 本文所需的安装包,都上传在我的网盘中,需要的可以打赏博主一杯咖啡钱 ...

  7. kubernetes集群pod使用tc进行网络资源限额

    kubernetes集群pod使用tc进行网络资源限额 Docker容器可以实现CPU,内存,磁盘的IO限额,但是没有实现网络IO的限额.主要原因是在实际使用中,构建的网络环境是往超级复杂的大型网络. ...

  8. Kubernetes集群的监控报警策略最佳实践

    版权声明:本文为博主原创文章,未经博主同意不得转载. https://blog.csdn.net/M2l0ZgSsVc7r69eFdTj/article/details/79652064 本文为Kub ...

  9. kubernetes集群升级的正确姿势

    kubernetes社区非常活跃,每季度都会发布一个release.但是线上集群业务可用性要求较高,场景复杂,任何微小的变更都需要非常小心,此时跟随社区版本进行升级略显吃力.但是为了能够使用到最新的一 ...

  10. Docker学习-Kubernetes - 集群部署

    Docker学习 Docker学习-VMware Workstation 本地多台虚拟机互通,主机网络互通搭建 Docker学习-Docker搭建Consul集群 Docker学习-简单的私有Dock ...

随机推荐

  1. 简易TXT文本小说阅读器

    上次学习爬取小说保存到txt文本文件,方便离线阅读,现在做一个简易TXT文本小说阅读器,支持手动翻页和自动翻页阅读. 废话不多说,直接上代码,实践下. read_txt.py: import time ...

  2. 还原大师-遍历残缺字符串匹配md5杂凑值

    题目: 我们得到了一串神秘字符串:TASC?O3RJMV?WDJKX?ZM,问号部分是未知大写字母, 为了确定这个神秘字符串,我们通过了其他途径获得了这个字串的32位MD5码. 但是我们获得它的32位 ...

  3. Shell语言编程(炼气)

    1. Shell脚本执行方式 执行方式 应用及场景 通过sh或bash 书写脚本后,最常用的方式,在其他非红帽系统中,建议使用bash运行脚本 通过.点或source 加载/生效配置文件(环境变量,别 ...

  4. BUUCTF---childRSA(费马引理)

    题目 点击查看代码 from random import choice from Crypto.Util.number import isPrime, sieve_base as primes fro ...

  5. luogu-P5320题解

    简要题意 设 \(f(n)\) 表示用多米诺骨牌恰好铺满 \(2\times n\) 的平面的方案数,\(g(n)\) 表示用多米诺骨牌恰好铺满 \(3\times n\) 的平面的方案数:设 \(F ...

  6. 学习unigui【24】Echart的使用:多个坐标系

    使用echart非常简单,网上有介绍. 主要放一个unihtmlFrame.然后unihtmlframe.text := 'html的代码',就会渲染(初次调用echart的js库要一点稍后). un ...

  7. Vscode写Markdown解决图片使用问题

      最近使用Vscode+Markdown写博客,图片不好弄,想了一下办法,有需要的人可以参考,有更方便的方法欢迎提出!   首先为了解决图片粘贴问题,下载一个扩展,Markdown Paste,下载 ...

  8. 线性判别分析(LDA):降维与分类的完美结合

    在机器学习领域,线性判别分析(Linear Discriminant Analysis,简称LDA)是一种经典的算法,它在降维和分类任务中都表现出色. LDA通过寻找特征空间中能够最大化类间方差和最小 ...

  9. BotSharp + MCP 三步实现智能体开发

    1. 简介 1.1 什么是MCP Model Context Protocol(MCP)模型上下文协议是一种标准化协议,它让大模型能够更容易地和外部的数据.工具连接起来.你可以把MCP想象成一个通用的 ...

  10. FastMCP实践开发应用

    一.概述 FastMCP是一个基于Python的高级框架,用于构建MCP(Model Context Protocol)服务器.它能够帮助开发者以最小的代码量创建MCP服务器,从而让AI助手能够更好地 ...