我已经创建了如下的资源配额。
apiVersion: v1
kind: ResourceQuota
metadata:
name: compute-resources
spec:
hard:
requests.cpu: "900m"
然后在我的部署中,如下所示指定资源请求。
spec:
containers:
- image: nginx@sha256:189cce606b29fb2a33ebc2fcecfa8e33b0b99740da4737133cdbcee92f3aba0a
imagePullPolicy: Always
name: hello
ports:
- containerPort: 80
protocol: TCP
resources:
requests:
cpu: "500m"
即使在此之后,吊舱创建也会失败,并显示消息-
Error creating deployer pod: pods "hello-1-deploy" is forbidden: failed quota: compute-resources: must specify requests.cpu
我在这里做错了什么?仅供参考,我在配额和吊舱中使用了相同的名称空间/项目。
答案 0 :(得分:0)
您能否同时指定要求的限制?无论如何,它是kubernetes的最佳实践,它具体说明了工作负载的限制(想知道Openshift是否强制执行此操作,但显然该错误具有误导性)。
如果您有权查看kube-apiserver日志,则可以查看是否还有其他线索。
答案 1 :(得分:0)
作为解决方法,请尝试通过启用LimitRanger准入控制器并将其设置为默认值来设置默认限制
apiVersion: v1
kind: LimitRange
metadata:
name: cpu-limit-range
spec:
limits:
- default:
memory: 256Mi
cpu: 900m
defaultRequest:
cpu: 900m
memory: 128Mi
type: Container
现在,如果在默认名称空间中创建了一个容器,并且该容器未指定其自己的CPU请求和CPU限制值,则该容器将获得默认的CPU限制125m和默认的内存限制256Mi
此外,在设置LimitRange之后,请确保已删除部署,并且没有pod处于失败状态。
如果这没有帮助,那么看到以下输出将很有趣:
kubectl describe ResourceQuota -n mynamespace
希望有帮助!