前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >k8s做命名空间配额

k8s做命名空间配额

作者头像
SY小站
发布2020-06-19 16:46:13
8170
发布2020-06-19 16:46:13
举报

前言

在一个多用户、多团队的k8s集群上,通常会遇到一个问题,如何在不同团队之间取得资源的公平,即,不会因为某个流氓团队占据了所有资源,从而导致其他团队无法使用k8s。

k8s的解决方法是,通过RBAC将不同团队(or 项目)限制在不同的namespace下,通过resourceQuota来限制该namespace能够使用的资源。

配额

资源分为以下三种。

  • 计算资源配额:cpu,memory
  • 存储资源配置:requests.storage(真~总量),pvc,某storage class下的限制(例如针对fast类型的sc的限制)
  • 对象数量配置:cm,service,pod的个数。

集群管理员需要为团队创建一个namespace

kubectl create namespace sy

创建quota

[root@master101 sy]# vim quota.yaml 
apiVersion: v1
kind: ResourceQuota
metadata:
  name: compute-resources
  namespace: sy
spec:
  hard:
    limits.cpu: "2"
    limits.memory: 2Gi
    persistentvolumeclaims: "8"
    pods: "2"
    requests.cpu: "1"
    requests.memory: 1Gi
    requests.storage: 30Gi

也可以设置namespace上下文,在这里执行,就不用指定namespace了

kubectl config set-context $(kubectl config current-context) --namespace=sy

测试pod

[root@master101 sy]# cat nginx.yaml 
apiVersion: v1
kind: Pod
metadata:
  name: quota-mem-cpu-demo
  namespace: sy
spec:
  containers:
  - name: quota-mem-cpu-demo-ctr
    image: nginx
    resources:
      limits:
        memory: "4Gi"
        cpu: "800m" 
      requests:
        memory: "3Gi"
        cpu: "500m"

这时会报错

[root@master101 sy]# kubectl apply -f nginx.yaml 
Error from server (Forbidden): error when creating "nginx.yaml": pods "quota-mem-cpu-demo" is forbidden: exceeded quota: compute-resources, requested: limits.memory=4Gi,requests.memory=3Gi, used: limits.memory=0,requests.memory=0, limited: limits.memory=2Gi,requests.memory=1Gi

注意

当开启了resource quota时,用户创建pod,必须指定cpu、内存的 requests or limits ,否则创建失败。resourceQuota搭配 limitRanges口感更佳:limitRange可以配置创建Pod的默认limit/request。
本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2020-06-15,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 SY技术小站 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 前言
  • 配额
    • 集群管理员需要为团队创建一个namespace
      • 创建quota
        • 测试pod
          • 注意
          相关产品与服务
          容器服务
          腾讯云容器服务(Tencent Kubernetes Engine, TKE)基于原生 kubernetes 提供以容器为核心的、高度可扩展的高性能容器管理服务,覆盖 Serverless、边缘计算、分布式云等多种业务部署场景,业内首创单个集群兼容多种计算节点的容器资源管理模式。同时产品作为云原生 Finops 领先布道者,主导开源项目Crane,全面助力客户实现资源优化、成本控制。
          领券
          问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档