【发布时间】: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