【问题标题】:Kubernetes Issue with pod creation with resourcequota and limitrangeKubernetes 使用 resourcequota 和 limitrange 创建 pod 的问题
【发布时间】:2020-03-28 09:56:26
【问题描述】:

我在使用 ResourceQuota 和 LimitRange 创建 pod 时遇到问题。

ResourceQuota 有限制 cpu=2,memory=2Gi & requests cpu=1,memory=1Gi 为 CPU & memory 定义 LimitRange 具有默认请求和默认限制,两者的 cpu=1,memory=1Gi 都在 ResourceQuota 中定义的范围内。

虽然只使用限制(cpu=2,memory=2Gi)而不使用请求(cpu,memory)创建 pod,但它失败了 forbidden: exceeded quota: compute-resources, requested: requests.cpu=2,requests.memory=2Gi, used: requests.cpu=0,requests.memory=0, limited: requests.cpu=1,requests.memory=1Gi

但根据 LimitRange 中定义的默认请求,它是 cpu=1,memory=1Gi 不确定它从哪里获取 requests.cpu=2,requests.memory=2Gi

据我了解,如果未提及资源请求,则在创建 pod 时,它应该从范围内的 LimitRange 默认请求中获取它,不知道为什么会失败。

请在这里帮忙

cloud_user@master-node:~$  k describe limitrange default-limitrange
Name:       default-limitrange
Namespace:  default
Type        Resource  Min  Max  Default Request  Default Limit  Max Limit/Request Ratio
----        --------  ---  ---  ---------------  -------------  -----------------------
Container   memory    -    -    1Gi              1Gi            -
Container   cpu       -    -    1                1              -
cloud_user@master-node:~$ k describe resourcequota compute-resources
Name:            compute-resources
Namespace:       default
Resource         Used  Hard
--------         ----  ----
limits.cpu       0     2
limits.memory    0     2Gi
pods             0     2
requests.cpu     0     1
requests.memory  0     1Gi
cloud_user@master-node:~$ k run nginx --image=nginx --restart=Never --limits=cpu=2,memory=2Gi
Error from server (Forbidden): pods "nginx" is forbidden: exceeded quota: compute-resources, requested: requests.cpu=2,requests.memory=2Gi, used: requests.cpu=0,requests.memory=0, limited: requests.cpu=1,requests.memory=1Gi

这里我为 LimitRange、ResourceQuota 添加 yaml 文件

apiVersion: v1
kind: LimitRange
metadata:
  annotations:
    kubectl.kubernetes.io/last-applied-configuration: |
      {"apiVersion":"v1","kind":"LimitRange","metadata":{"annotations":{},"name":"default-limitrange","namespace":"default"},"spec":{"limits":[{"defaultRequest":{"cpu":"1","memory":"1Gi"},"type":"Container"}]}}
  creationTimestamp: "2020-03-28T08:05:40Z"
  name: default-limitrange
  namespace: default
  resourceVersion: "4966600"
  selfLink: /api/v1/namespaces/default/limitranges/default-limitrange
  uid: 3261f4d9-6339-478d-939c-395010b20aad
spec:
  limits:
  - default:
      cpu: "1"
      memory: 1Gi
    defaultRequest:
      cpu: "1"
      memory: 1Gi
    type: Container
apiVersion: v1
kind: ResourceQuota
metadata:
  creationTimestamp: "2020-03-28T07:40:03Z"
  name: compute-resources
  namespace: default
  resourceVersion: "4967263"
  selfLink: /api/v1/namespaces/default/resourcequotas/compute-resources
  uid: 8a94a396-0774-4b62-8140-5a5f463935ed
spec:
  hard:
    limits.cpu: "2"
    limits.memory: 2Gi
    pods: "2"
    requests.cpu: "1"
    requests.memory: 1Gi
status:
  hard:
    limits.cpu: "2"
    limits.memory: 2Gi
    pods: "2"
    requests.cpu: "1"
    requests.memory: 1Gi
  used:
    limits.cpu: "0"
    limits.memory: "0"
    pods: "0"
    requests.cpu: "0"
    requests.memory: "0"

【问题讨论】:

  • 可以添加 pod yaml。在同一个命名空间中是否还有其他 pod?
  • @ArghyaSadhu,我已经编辑了帖子并为 LimitRange 和 ResourceQuota 添加了 yaml。如果您看到 ResourceQuota 使用情况,它显示 cpu 和内存的使用情况为 0
  • 添加 pod yaml
  • @ArghyaSadhu 。这是我正在使用的命令。 k run nginx --image=nginx --restart=Never --limits=cpu=2,memory=2Gi

标签: kubernetes


【解决方案1】:

这已记录在here。如果您指定了容器的限制,但没有指定容器的请求,则容器不会根据限制范围分配默认内存请求,而是将容器的内存请求设置为与其指定的内存限制相匹配创建吊舱。这就是为什么 正在设置requests.cpu=2,requests.memory=2Gi,它与创建 pod 时指定的限制相匹配。

【讨论】:

  • 感谢指点文档,我正在搜索,找不到
猜你喜欢
  • 2020-08-24
  • 2017-10-27
  • 1970-01-01
  • 1970-01-01
  • 2020-12-10
  • 2020-03-23
  • 2021-02-20
  • 2022-12-01
  • 2016-02-04
相关资源
最近更新 更多