首页 > 其他分享 >k8s 资源配置范围管理-2(LimitRange)

k8s 资源配置范围管理-2(LimitRange)

时间:2025-01-02 11:20:55浏览次数:1  
标签:容器 资源配置 request LimitRange memory Pod k8s cpu

 

如果我们有成百上千个不同的Pod,那么先手动设置每个Pod的这4个参数,再检查并确保这些参数的设置,都是合理的。比如不能出现内存超过2GB或者CPU占据2个核心的Pod。最后还得手工检查不同租户(Namespace)下的Pod的资源使用量是否超过限额。为此,Kubernetes提供了另外两个相关对象:LimitRange及ResourceQuota,前者解决request与limit参数的默认值和合法取值范围等问题,后者则解决约束租户的资源配额问题。

本章从计算资源管理(Compute Resources)、服务质量管理(QoS)、资源配额管理(LimitRange、ResourceQuota)等方面

对于CPU和内存而言,Pod的Requests或Limits是指该Pod中所有容器的Requests或Limits的总和(多个容器的request或resource相加)

命名空间中LimitRange只会在Pod创建或者更新时执行检查。如果手动修改LimitRange为一个新的值,那么这个新的值不会去检查或限制之前已经在该命名空间中创建好的Pod。

创建一个LimitRange

apiVersion: v1
kind: LimitRange
metadata:
  name: app-limitrange
  namespace: app
spec:
  limits:
  - type: Pod   # 用于限制整个 Pod 所有容器的资源使用总和
    max:
      cpu: "2"        # 单个 Pod 最大 CPU 限制
      memory: "4Gi"   # 单个 Pod 最大内存限制
    min:
      cpu: "256m"     # 单个 Pod 最小 CPU 限制
      memory: "256Mi" # 单个 Pod 最小内存限制
    maxLimitRequestRatio:  # limits.cpu 和 requests.cpu 之间的比例不能超过,MaxLimitRequestRatio = limits / requests
      cpu: "2"     # pod 内所有容器的limit+request cpu总和比例不能大于2
      memory: "4"  # pod 内所有容器的limit+request 内存总和比例不能大于2
  - type: Container
    # 为没有显式指定资源的容器设置默认限制值
    # 对于没有显示指定资源的容器的默认值default值/defaultRequest值比例不能大于maxLimitRequestRatio
    default:
      cpu: "256m"        # 单个容器默认 CPU limit
      memory: "512Mi" # 单个容器默认内存 limit
    # 为没有显式请求资源的容器设置默认请求值
    defaultRequest:
      cpu: "128m"     # 单个容器默认CPU调度request
      memory: "128Mi" # 单个容器默认内存调度request
    # default和defaultRequest设置的值不能超过max值
    # 对于设置了容器的max/min,必须设置default/defaultrequest或者清单显示指定limit/request,否则无法成功创建
    max:
      cpu: "1"        # 单个容器最大 CPU 限制
      memory: "2Gi"   # 单个容器最大内存限制
    # default和defaultRequest设置的值不能小于min值
    min:
      cpu: "128m"     # 单个容器最小 CPU 限制
      memory: "128Mi" # 单个容器最小内存限制
    maxLimitRequestRatio:
      cpu: "2"   #  单个容器的limit+request cpu比例不能大于2
      memory: "4"   # 单个容器的limit+request 内存比例不能大于2

查看创建的LimitRange

]# kubectl describe  limits app-limitrange -n app
Name:       app-limitrange
Namespace:  app
Type        Resource  Min    Max  Default Request  Default Limit  Max Limit/Request Ratio
----        --------  ---    ---  ---------------  -------------  -----------------------
Pod         cpu       256m   2    -                -              2
Pod         memory    256Mi  4Gi  -                -              4
Container   memory    128Mi  2Gi  128Mi            512Mi          4
Container   cpu       128m   1    128m             256m           2

 

标签:容器,资源配置,request,LimitRange,memory,Pod,k8s,cpu
From: https://www.cnblogs.com/rtnb/p/18647133

相关文章

  • K8S 学习和运用
    前沿Kubernetes的核心概念1.容器编排的意义Kubernetes解决了以下问题:容器的运行管理:需要管理多个容器实例,保证它们在多个服务器上稳定运行。服务发现与负载均衡:让不同的服务可以找到彼此,并在负载较高时均衡分配流量。自动扩展:根据流量或资源使用情况动态扩展或缩减容器......
  • K8s之Pod调度、抢占和驱逐(K8s Pod Scheduling, Preemption, and Eviction)
    深入理解K8s的Pod调度、抢占和驱逐本篇文章分享Pod的调度、抢占和驱逐的相关概念,基本都是理论,但非常重要,经常在面试中被问到。希望能耐心看完!Kubernetes(K8s)作为一个容器编排平台,其调度(Scheduling)、抢占(Preemption)和驱逐(Eviction)机制是确保集群资源合理分配、高效使用并保证应......
  • k8s部署milvusdb
    环境:Os:Centos7前提条件,使用到的组件需要提前部署好:kafka(单点,包含zookeeper):https://www.cnblogs.com/hxlasky/p/18615374etcd(单点):https://www.cnblogs.com/hxlasky/p/18641819minio(单点):https://www.cnblogs.com/hxlasky/p/18643317 1.创建namespacekubectlcr......
  • k8s开通只读权限 kubeconfig
    创建证书文件并配置#创建对应目录mkdir/data/devops/kube-read-pcd/data/devops/kube-readcp/etc/kubernetes/ssl/ca*.#创建证书文件root@172-16-160-221:/data/devops/kube-read#catca-config.json{"signing":{"default":{"ex......
  • Docker与K8S的区别
    目录 1定义角度2虚拟化角度虚拟化技术的发展过程VirtualMachinesVS.Docker3部署角度4其他角度4.1系统角度4.2功能角度4.3各自优势X参考文献回到顶部(BacktoTop)1定义角度Docker是一种开放源码的应用容器引擎,允许开发人员将其应用和依赖......
  • Kubeadm快速部署k8s集群2
    8、新增一个node节点按照上面的方式全新安装,在加入集群过程稍有不同。[root@k8smaster~]#kubeadmtokencreate--print-join-command  #因为token过期时间是24h,所以需要重新生成W122809:54:57.7837346538configset.go:202]WARNING:kubeadmcannotvalidatecomponent......
  • 【K8s】专题十五(6):Kubernetes 网络之 Pod 网络调试
    本文内容均来自个人笔记并重新梳理,如有错误欢迎指正!如果对您有帮助,烦请点赞、关注、转发、订阅专栏!专栏订阅入口| 精选文章 | Kubernetes |Docker|Linux |羊毛资源 | 工具推荐 |往期精彩文章【Docker】(全网首发)KylinV10下MySQL容器内存占用异常的解决......
  • 一文看懂K8s和Docker的区别与联系
    本文旨在探讨Kubernetes(K8s)和Docker之间的区别与联系。Docker是一个开源的容器化平台,允许开发者打包应用及其依赖项到一个可移植的容器中。而Kubernetes是一个容器编排工具,旨在自动化容器的部署、扩展和管理。理解这两者的关系对于现代应用开发和运维至关重要。Docker简介Do......
  • 循规蹈矩--从零开始建设k8s监控(一)
    前言监控k8s集群,目前主流就是使用prometheus以及其周围的生态,本文开始介绍怎么一步步完成k8s监控的建设环境准备组件版本操作系统Ubuntu22.04.4LTSminikubev1.30.1docker24.0.7prometheusv2.54.1kube-state-metricsv2.13.0node-exporterv1.8.2......
  • k8s 1.23 安装kubesphere 3.4
     参考: https://blog.csdn.net/weixin_43810267/article/details/133347736 1、下载kubesphere的yamlwgethttps://github.com/kubesphere/ks-installer/releases/download/v3.4.0/kubesphere-installer.yamlwgethttps://github.com/kubesphere/ks-installer/releases/d......