即使在openshift中指定了cpu请求后,pod创建也会失败

时间:2019-12-26 13:14:39

标签: kubernetes openshift pod

我已经创建了如下的资源配额。

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

我在这里做错了什么?仅供参考,我在配额和吊舱中使用了相同的名称空间/项目。

2 个答案:

答案 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

希望有帮助!