前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >kubernetes之资源限制,请求

kubernetes之资源限制,请求

作者头像
张琳兮
发布2022-01-12 10:20:13
5680
发布2022-01-12 10:20:13
举报
文章被收录于专栏:首富手记首富手记

kubernetes之资源限制,请求

kubernetes可以使用LimitRange 对资源进行默认限制

先创建一个命令空间,我们在命名空间里面指定资源限制

代码语言:javascript
复制
# cat limit-namespaces.yaml
apiVersion: v1
kind: Namespace
metadata:
  name: limit-namespace

创建命名空间

代码语言:javascript
复制
kubectl create -f limit-namespaces.yaml

查看命名空间是否创建完成

代码语言:javascript
复制
# kubectl get namespace limit-namespace
NAME              STATUS   AGE
limit-namespace   Active   29m

以下是一个LimitRange对象的配置文件。该配置指定了默认的内存请求与默认的内存限额。我们选择的是对limit-namespace空间里面的进行资源限制

代码语言:javascript
复制
# cat limitRange.yaml
apiVersion: v1
kind: LimitRange
metadata:
  name: limiti-range-test
  namespace: limit-namespace
spec:
  limits:
  - default:
      memory: 1Gi
    defaultRequest:
      memory: 512Mi
    type: Container

下面通过例子来解释default 和defaultRequest分别代表什么

我们这个时候创建一个默认不做任何资源的pod

代码语言:javascript
复制
# cat nginx-test.yaml
apiVersion: v1
kind: Pod
metadata:
  name: nginx-limit-test
  namespace: limit-namespace
spec:
  containers:
  - name: nginx-limit-test
    image: nginx:1.14.2

输出显示该Pod的容器的内存请求值是512MiB,内存限额值是1Gi。这些是由LimitRange指定的默认值。

代码语言:javascript
复制
# kubectl describe pods -n limit-namespace nginx-limit-test
...
    Ready:          True
    Restart Count:  0
    Limits:
      memory:  1Gi
    Requests:
      memory:     512Mi
    Environment:  <none>
...

我们通过上面的例子可以看出来: default 是limit的限制 defaultRequest 是默认的request的请求

创建一个限制limit值的pod

我们只做了他的limits限制

代码语言:javascript
复制
# cat nginx-test-limit.yaml
apiVersion: v1
kind: Pod
metadata:
  name: nginx-limit-test-2
  namespace: limit-namespace
spec:
  containers:
  - name: nginx-limit-test
    image: nginx:1.14.2
    resources:
      limits:
        memory: 2Gi

输出显示该Pod的容器的内存请求值是2Gi,内存限额值是2Gi。

代码语言:javascript
复制
# kubectl describe pods -n limit-namespace nginx-limit-test-2
    Restart Count:  0
    Limits:
      memory:  2Gi
    Requests:
      memory:     2Gi
    Environment:  <none>

输出显示该容器的内存请求值与它的限额值相等。 注意该容器并未被赋予默认的内存请求值512Mi。

我们定义了request未定义limit会发生什么呢?

代码语言:javascript
复制
# cat nginx-test-request.yaml
apiVersion: v1
kind: Pod
metadata:
  name: nginx-limit-test-3
  namespace: limit-namespace
spec:
  containers:
  - name: nginx-limit-test
    image: nginx:1.14.2
    resources:
      requests:
        memory: 256Mi

测试结果如下:

代码语言:javascript
复制
# kubectl describe -n limit-namespace pods nginx-limit-test-3
    Ready:          True
    Restart Count:  0
    Limits:
      memory:  1Gi
    Requests:
      memory:     256Mi
    Environment:  <none>

所以说如果我们单存的只限制了一个request,limit会继承我们默认设置的那个

如果我们定义的request的值超过了limit的值的时候又会发生什么事情呢?

创建的yaml文件如下,我们故意把request的值比limit大,看会发生什么

代码语言:javascript
复制
# cat nginx-test-request.yaml
apiVersion: v1
kind: Pod
metadata:
  name: nginx-limit-test-3
  namespace: limit-namespace
spec:
  containers:
  - name: nginx-limit-test
    image: nginx:1.14.2
    resources:
      requests:
        memory: 2Gi

创建pod报错如下

代码语言:javascript
复制
# kubectl create -f nginx-test-request.yaml
The Pod "nginx-limit-test-3" is invalid: spec.containers[0].resources.requests: Invalid value: "2Gi": must be less than or equal to memory limit

提示request的值必须小于limit的值.

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2021-07-01 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

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

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

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • kubernetes之资源限制,请求
    • kubernetes可以使用LimitRange 对资源进行默认限制
      • 我们这个时候创建一个默认不做任何资源的pod
      • 创建一个限制limit值的pod
      • 我们定义了request未定义limit会发生什么呢?
      • 如果我们定义的request的值超过了limit的值的时候又会发生什么事情呢?
相关产品与服务
容器服务
腾讯云容器服务(Tencent Kubernetes Engine, TKE)基于原生 kubernetes 提供以容器为核心的、高度可扩展的高性能容器管理服务,覆盖 Serverless、边缘计算、分布式云等多种业务部署场景,业内首创单个集群兼容多种计算节点的容器资源管理模式。同时产品作为云原生 Finops 领先布道者,主导开源项目Crane,全面助力客户实现资源优化、成本控制。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档