kubernetes--LimitRange(针对容器)

Kubernetes(K8s)集群默认不限制容器的计算资源,但可以通过LimitRange设定容器CPU和内存的最小、最大值及默认值,防止资源抢占。LimitRange也用于限制PVC的存储空间。当资源不足时,K8s依据Pod的QoS类别决定剔除策略,保证型优先级最高,最大努力型最容易被驱逐。文章提供了LimitRange的yaml示例,展示了如何配置资源限制。
摘要由CSDN通过智能技术生成

介绍:

默认情况下,K8s集群上的容器对计算资源没有任何限制,可能会导致个别容器资源过大导致影响其他容器正常工作,这时可以使用LimitRange定义容器默认CPU和内存请求值或者最大上限。

LimitRange限制维度:

1.限制容器配置requests.cpu/memory,limits.cpu/memory的最小、最大值

2.限制容器配置requests.cpu/memory,limits.cpu/memory的默认值

3.限制PVC配置requests.storage的最小、最大值

资源限制和请求的约束

  • 管理员在一个命名空间内创建一个 LimitRange 对象。

  • 用户在此命名空间内创建(或尝试创建) Pod 和 PersistentVolumeClaim 等对象。

  • 首先,LimitRanger 准入控制器对所有没有设置计算资源需求的所有 Pod(及其容器)设置默认请求值与限制值。

  • 其次,LimitRange 跟踪其使用量以保证没有超出命名空间中存在的任意 LimitRange 所定义的最小、最大资源使用量以及使用量比值。

  • 若尝试创建或更新的对象(Pod 和 PersistentVolumeClaim)违反了 LimitRange 的约束, 向 API 服务器的请求会失败,并返回 HTTP 状态码 403 Forbidden 以及描述哪一项约束被违反的消息。

  • 若你在命名空间中添加 LimitRange 启用了对 cpumemory 等计算相关资源的限制, 你必须指定这些值的请求使用量与限制使用量。否则,系统将会拒绝创建 Pod。

  • LimitRange 的验证仅在 Pod 准入阶段进行,不对正在运行的 Pod 进行验证。 如果你添加或修改 LimitRange,命名空间中已存在的 Pod 将继续不变。

  • 如果命名空间中存在两个或更多 LimitRange 对象,应用哪个默认值是不确定的。

剔除策略

当集群资源不足时,K8S会根据Pod标记的QoS类别做剔除决策,腾出空闲资源

第一种标记为保证型,是在内存使用量超限时被kill掉;

第二种标记为突发流量型,当节点资源不足时,这类Pod可能会被kill掉;

第三种标记为最大努力型,只要当节点资源不够调度时,首先就会被kill掉。

应用设置 request 值等于 limit 值,此类 Pod 优先级较高,在节点故障时不易被驱逐导致线上业务受到影响

yaml示例

#计算资源最大、最小值限制
apiVersion: v1
kind: LimitRange
metadata:
  name: cpu-memory-min-max
  namespace: test
spec:
  limits:
  - max:#容器能设置limit的最大值
      cpu: "800m"
      memory: 1Gi
    min:   #容器能设置request的最小值
      cpu: "200m"
      memory: 200Mi
    type: Container
---
#计算资源默认值限制,K8s默认不限制
apiVersion: v1
kind: LimitRange
metadata:
  name: cpu-mem-limit-range
  namespace: test
spec:
  limits:
  - default:
      cpu: 500m
      memory: 512Mi
    defaultRequest:
      cpu: 300m
      memory: 256Mi
    type: Container
---
#存储资源最大、最小限制:
apiVersion: v1
kind: LimitRange
metadata:
  name: storagelimits
  namespace: test
spec:
  limits:
  - type: PersistentVolumeClaim
    max:
      storage: 2Gi
    min:
      storage: 1Gi

查看

类型 资源 最小 最大 默认请求 默认限制

apiVersion: v1
kind: Pod
metadata:
  name: web
spec:
  containers:
  - name: demo
    image: nginx
    resources:
      requests:
        cpu: 700m
        memory: 1Gi
      limits:
        cpu: 700m
        memory: 1Gi

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值