资讯专栏INFORMATION COLUMN

Kubernetes资源分配(limit/request)

dack / 3276人阅读

摘要:为了实现资源被有效调度和分配时同时提高资源的利用率,采用和两种限制类型对资源进行分配。限制类型介绍容器使用的最小资源需求作为容器调度时资源分配的判断依赖。

概述

kubernetes 是一个集群管理平台, kubernetes需要统计整体平台的资源使用情况, 合理的将资源分配给容器使用, 并保证容器生命周期内有足够的资源来保证其运行. 同时, 如果资源发放是独占的, 对于空闲的容器来说占用这没有使用的资源是非常浪费的, 比如CPU。k8s需要考虑如何在优先度和公平性的前提下提供资源的利用率。

为了实现资源被有效调度和分配时同时提高资源的利用率, k8s采用request和limit两种限制类型对资源进行分配。

limit/request 限制类型介绍 request

容器使用的最小资源需求, 作为容器调度时资源分配的判断依赖。

只有当前节点上可分配的资源量 >= request 时才允许将容器调度到该节点。

request参数不限制容器的最大可使用资源

limit

容器能使用资源的最大值

设置为0表示对使用的资源不做限制, 可无限的使用

request 和 limit 关系

request能保证pod有足够的资源来运行, 而limit则是防止某个pod无限制的使用资源, 导致其他pod崩溃. 两者的关系必须满足:

0 <= request <= limit

如果limit=0表示不对资源进行限制, 这时可以小于request。

目前CPU支持设置request和limit,memory只支持设置request, limit必须强制等于request, 这样确保容器不会因为内存的使用量超过request但是没有超过limit的情况下被意外kill掉。

limit/request使用示例
---
apiVersion: apps/v1beta2
kind: Deployment
metadata:
 name: nginx
 namespace: php
 labels:
   app: nginx
spec:
 revisionHistoryLimit: 10
 strategy:
   type: RollingUpdate
 selector:
   matchLabels:
     app: nginx
 template:
   metadata:
     labels:
       app: nginx
   spec:
     containers:
     - name: nginx
       image: nginx:latest
       ports:
       - containerPort: 80
         protocol: TCP
       resources:
         requests:
           cpu: 0.5
           memory: 1024Mi
         limits:
           cpu: 1
           memory: 2048Mi

---           
apiVersion: autoscaling/v1
kind: HorizontalPodAutoscaler
metadata:
  name: nginx
  labels:
    app: nginx
spec:
  scaleTargetRef:
    apiVersion: extensions/v1beta1
    kind: Deployment
    name: nginx
  minReplicas: 2
  maxReplicas: 4
  targetCPUUtilizationPercentage: 80
参考

Kubernetes 资源分配之 Request 和 Limit 解析

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/33067.html

相关文章

  • Kubernetes资源分配(limit/request)

    摘要:为了实现资源被有效调度和分配时同时提高资源的利用率,采用和两种限制类型对资源进行分配。限制类型介绍容器使用的最小资源需求作为容器调度时资源分配的判断依赖。 概述 kubernetes 是一个集群管理平台, kubernetes需要统计整体平台的资源使用情况, 合理的将资源分配给容器使用, 并保证容器生命周期内有足够的资源来保证其运行. 同时, 如果资源发放是独占的, 对于空闲的容器来说...

    plokmju88 评论0 收藏0
  • 【Nginx源码研究】nginx限流模块详解

    摘要:限流算法最简单粗暴的限流算法就是计数器法了,而比较常用的有漏桶算法和令牌桶算法计数器计数器法是限流算法里最简单也是最容易实现的一种算法。 运营研发团队 李乐 高并发系统有三把利器:缓存、降级和限流; 限流的目的是通过对并发访问/请求进行限速来保护系统,一旦达到限制速率则可以拒绝服务(定向到错误页)、排队等待(秒杀)、降级(返回兜底数据或默认数据); 高并发系统常见的限流有:限制总并发...

    voyagelab 评论0 收藏0
  • ngx_http_limit_req_module 源码分析

    摘要:如果当前需要延迟处理,又会把请求放到定时器中,等到定时器过期以后,执行写事件回调,这个函数里会执行,重新进行的个阶段。 ngx_http_limit_req_module 是 Nginx 官方提供的一个 http 模块,它工作在 NGX_HTTP_PREACCESS_PHASE 阶段,通过在 nginx.conf 中进行简单地配置,我们可以轻易地对请求速率进行限制。 配置指令 官方文档...

    lentrue 评论0 收藏0
  • 【PhpBoot】 为快速开发 RESTful API 设计的PHP框架

    摘要:是为快速开发设计的框架。特色框架提供许多主流的特性如依赖注入等。轻松支持是目前最流行的接口文档框架。在一开始就非常注重框架的友好性尽可能让框架保持准确的代码提示。 PhpBoot showImg(https://segmentfault.com/img/remote/1460000004864102);showImg(https://segmentfault.com/img/remot...

    mist14 评论0 收藏0
  • 三分天下,分久必合:IBM的Kubernetes on Mesos探索之路

    摘要:今天是数人云容器三国演义嘉宾演讲实录第四弹。说完了各家容器技术的实战,那么最后来看容器技术的融合正在探索的一条道路。月,开始接手,因为整个产品都是基于这个为基础的。下面是的地址,到可以找到相关的资料。但这时候是分开的,不同的使用不同的框架。 今天是数人云容器三国演义Meetup嘉宾演讲实录第四弹。说完了各家容器技术的实战,那么最后来看容器技术的融合——IBM正在探索的一条道路。 我叫马...

    miguel.jiang 评论0 收藏0

发表评论

0条评论

最新活动
阅读需要支付1元查看
<