首页 > 其他分享 >k8s资源限制

k8s资源限制

时间:2025-01-19 11:31:41浏览次数:1  
标签:容器 限制 cpu memory k8s CPU 资源


k8s 资源限制管理

在 k8s 中,资源限制是保证集群稳定性和高效运行的关键。资源限制不仅帮助管理节点资源的分配,还能有效地控制不同容器、Pod 和命名空间的资源使用。本文将介绍三种常用的资源限制方式:容器资源限制(Resources)、资源配额(ResourceQuota)和限制范围(LimitRange)。

1. 容器的期望资源和资源上限(Resources)

k8s 允许为每个容器配置期望的资源和资源上限,这些配置通过 requestslimits 来实现。

  • requests:表示容器调度时期望的资源量。调度时,Kubernetes 会根据 requests 的资源需求将容器调度到合适的节点。
  • limits:表示容器能够使用的最大资源量。容器不能超过这个限制,否则可能会被杀死并重新调度。

资源清单配置

apiVersion: v1
kind: Pod
metadata:
  name: stress-resources
spec:
  containers:
  - image: harbor.oldboyedu.com/oldboyedu-troubleshooting/stress:v0.1
    name: stress
    stdin: true
    imagePullPolicy: Always
    resources:
      requests:
        cpu: 200m   # 期望使用 CPU 0.2 核
        memory: 300Mi   # 期望使用内存 300Mi
      limits:
        cpu: 0.5   # 最大使用 CPU 0.5 核
        memory: 500Mi   # 最大使用内存 500Mi

说明

  • requests.cpu 表示容器期望使用 0.2 核 CPU。
  • limits.cpu 表示容器的最大 CPU 使用为 0.5 核。
  • requests.memorylimits.memory 分别表示容器期望使用和最大可用的内存。

2. ResourceQuota(资源配额)

ResourceQuota 用于在命名空间级别限制资源的使用量,可以限制 CPU、内存、存储资源的总量以及特定资源的对象数量(如 Pod、Deployment 和 Service)。

计算资源限制(CPU 和 Memory)

apiVersion: v1
kind: ResourceQuota
metadata:
  name: compute-resources
  namespace: kube-public
spec:
  hard:
    requests.cpu: "1"   # 限制总 CPU 请求为 1 核
    limits.cpu: "2"   # 限制总 CPU 使用为 2 核
    requests.memory: 2Gi   # 限制总内存请求为 2Gi
    limits.memory: 3Gi   # 限制总内存使用为 3Gi

对象数量限制(Pod、Deployment、Service)

apiVersion: v1
kind: ResourceQuota
metadata:
  name: object-counts
  namespace: kube-public
spec:
  hard:
    pods: "10"   # 限制 Pod 数量为 10
    count/deployments.apps: "3"   # 限制 Deployments 数量为 3
    count/services: "3"   # 限制 Services 数量为 3

说明

  • requests.cpulimits.cpu 限制命名空间内所有 Pod 总共使用的 CPU 资源。
  • pods 限制命名空间内最多可以有 10 个 Pod。

3. LimitRange(限制范围)

LimitRange 用于限制单个 Pod 容器的资源请求和限制的最小值、最大值和默认值,确保容器的资源不会过度申请,避免对节点资源的过度消耗。

限制容器的最大值和最小值

apiVersion: v1
kind: LimitRange
metadata:
  name: cpu-memory-min-max
  namespace: kube-public
spec:
  limits:
  - max:
      cpu: 2   # 限制容器最大使用 CPU 2 核
      memory: 4Gi   # 限制容器最大使用内存 4Gi
    min:
      cpu: 200m   # 限制容器最小使用 CPU 200m(即 0.2 核)
      memory: 100Mi   # 限制容器最小使用内存 100Mi
    type: Container   # 限制类型为容器

设置默认资源请求和限制

apiVersion: v1
kind: LimitRange
metadata:
  name: cpu-memory-min-max-default
  namespace: kube-public
spec:
  limits:
  - max:
      cpu: 2   # 限制容器最大使用 CPU 2 核
      memory: 4Gi   # 限制容器最大使用内存 4Gi
    min:
      cpu: 200m   # 限制容器最小使用 CPU 200m(即 0.2 核)
      memory: 100Mi   # 限制容器最小使用内存 100Mi
    type: Container   # 限制类型为容器
    defaultRequest:
      cpu: 200m   # 设置默认请求 CPU 为 200m
      memory: 500Mi   # 设置默认请求内存为 500Mi
    default:
      cpu: 1   # 设置默认限制 CPU 为 1 核
      memory: 2Gi   # 设置默认限制内存为 2Gi

说明

  • maxmin 分别设置了容器的最大和最小资源限制。
  • defaultRequestdefault 设置了默认的请求和限制值。

资源管理方式对比

特性 资源方式 控制粒度 适用场景 示例配置
配置资源请求和限制 Resources (requests 和 limits) 单个容器的资源请求和限制 限制容器使用的 CPU 和内存资源 通过 resources.requestsresources.limits 配置容器资源
命名空间级别资源限制 ResourceQuota 整个命名空间的资源总量和对象数量 限制命名空间内所有容器、Pod 的总资源使用量 通过 ResourceQuota 配置命名空间资源的总量
容器级别资源的最小值、最大值和默认值 LimitRange 单个容器的资源最小值、最大值、默认值 限制容器资源的最小值和最大值,提供默认资源值 通过 LimitRange 设置容器资源的最小、最大值和默认值

标签:容器,限制,cpu,memory,k8s,CPU,资源
From: https://www.cnblogs.com/leojazz/p/18679427

相关文章

  • windows 将docker desktop上镜像打包并通过资源管理器找到使用
    在Windows上使用DockerDesktop时,可以通过以下步骤将Docker镜像保存为 .tar 文件,并通过资源管理器找到该文件: 步骤1:打开DockerDesktop确保DockerDesktop正在运行。如果未运行,请启动它。步骤2:打开PowerShell或命令提示符按 Win+S,搜索 PowerShell ......
  • 资源库
    目录SystemMacOSWindowsGameother如有其他任何需要请告诉我SystemMacOSMacOSHighSierra10.13.1---2017-10-31---5.1GBMacOSOSXElCapitan10.11(15A284)---2015-09-30---5.7GBMacOSSierra10.12(16A323)--2016-09-20--7.2GBMacOSXLion10.7(11A511)(RetailDVD......
  • Windows资源管理器Icon图标注入
    免责声明本文发布的工具和脚本,仅用作测试和学习研究,禁止用于商业用途,不能保证其合法性,准确性,完整性和有效性,请根据情况自行判断。简介使用图标将DLL注入资源管理器的非正统和隐蔽方式IconJector这是一个Windows资源管理器DLL注入技术,使用Windows上的更改图标对话框。它......
  • RCD-IoT:在高数据包传输率下,利用资源受限设备实现工业监测与控制
     论文标题中文:RCD-IoT:在高数据包传输率下,利用资源受限设备实现工业监测与控制英文:RCD-IoT:EnablingIndustrialMonitoringandControlwithResource-ConstrainedDevicesUnderHighPacketTransmissionRates作者信息AyeshaAbid,MuhammadJazib,MuhammadRi......
  • 生化4原版的枪械与资源管理设计
    1、B4原版采用背包制,鼓励玩家探索关卡的各个角落,囤积物资。只要粮草弹药充足,那么BOSS也只是炮灰,而且可以用游戏币在商店购买一击必杀的火箭筒,利好速通。2、不同难度下体验差别很大,休闲难度下,物资过剩,背包经常塞满,多余物资无法收集只能眼睁睁的浪费,内心无比纠结。尤其是......
  • 删错资源了怎么办?放心有他们!
    前言:在日常使用电脑的过程中,我们难免会不慎删除一些重要文件,这时就需要借助数据恢复软件来帮忙。今天就为大家推荐几款实用的数据恢复神器,它们能在你误删文件后,帮你找回那些珍贵的数据。专业数据恢复软件这款软件以其简洁清爽的界面脱颖而出,让人使用起来倍感舒适。在使用......
  • K8S实现发布和回滚三种方案对比
    蓝绿部署、灰度发布、金丝雀发布和A/B测试的K8S实现方案1.蓝绿部署特点:蓝绿部署的核心思想是同时部署两个版本的应用(蓝环境和绿环境),但在某一时刻只有一个环境对外提供服务,另一环境处于待命状态,准备随时切换。缺点:一套环境空跑,资源浪费。K8S实现蓝绿发布方案:基于控制......
  • k8s的名称空间
    1.什么是名称空间?通过工作中的这段时间,复习一下k8s的名称空间,在K8s中,名称空间是用于隔离集群资源的机制。Kubernetes集群中的一些资源支持名称空间,而一些资源不支持名称空间。那些支持名称空间的资源被称为局部资源,而不支持名称空间的资源则是全局资源。如何判定资源是否支......
  • k8s的五大组件
    Kubernetes核心组件及其功能Kubernetes(K8s)是一个强大的容器编排平台,能够自动化容器化应用程序的部署、扩展和管理。其架构由多个组件协作完成,以下是Kubernetes的五大核心组件及其功能。1.APIServer(kube-apiserver)作用:Kubernetes的所有请求都会通过APIServer,它是集......
  • k8s集成MinIo
    本篇文章分享一下在k8s怎么集成 minio做存储,并实现PersistentVolume(PV)、PersistentVolumeClaim(PVC)、动态存储卷StorageClass,以及演示让pod使用这些存储卷的完整流程。一、理论1、PV概念PV是对K8S存储资源的抽象,PV一般由运维人员创建和配置,供容器申请使用。没有PV......