[置顶] kubernetes资源对象--ResourceQuotas

概念

Resource Quotas(资源配额,简称quota)是对namespace进行资源配额,限制资源使用的一种策略。 K8S是一个多用户架构,当多用户或者团队共享一个K8S系统时,SA使用quota防止用户(基于namespace的)的资源抢占,定义好资源分配策略。

Quota应用在Namespace上,默认情况下,没有Resource Quota的,需要另外创建Quota,并且每个Namespace最多只能有一个Quota对象。

限额资源类型

计算资源:limits.cpu、requests.cpu、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,persistentvolumeclaims,services,services.loadbalancers,services.nodeports

使用注意实现

在使用前需确认apiserver的配置文件中的KUBE_ADMISSION_CONTROL是否有ResourceQuota,如果没有需要添加并重启apiserver。
Quota依赖于资源管理器,可以使用资源对象limits或者在创建资源对象是为pod设置资源限制(resources),如果不设置,资源对象无法创建。
当该namespace中的任意个额度达到预设Quota时,将无法创建资源对象。

例子

比如K8S系统共有20核CPU和32GB内存,分配给lykops用户户5核CPU和16GB,分配给B租户5核CPU 和8GB,预留10核CPU和8GB内存。这样,用户中所使用的CPU和内存的总和不能超过指定的资源配额,促使其更合理地使用资源。

kubectl delete -f resourcequota.yaml
cat << EOF > resourcequota.yaml
apiVersion: v1
kind: ResourceQuota
metadata:
  namespace: lykops
  name: lykops
  labels:
    project: lykops
    app: resourcequota
    version: v1
spec:
  hard:
    pods: 50
    requests.cpu: 0.5
    requests.memory: 512Mi
    limits.cpu: 5
    limits.memory: 16Gi
    configmaps: 20
    persistentvolumeclaims: 20
    replicationcontrollers: 20
    secrets: 20
    services: 50
EOF
kubectl create -f resourcequota.yaml
posted @   lykops  阅读(2003)  评论(0编辑  收藏  举报
编辑推荐:
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
阅读排行:
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 【译】Visual Studio 中新的强大生产力特性
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构
点击右上角即可分享
微信分享提示