首页 > 解决方案 > 我可以限制可以使用 ResourceQuota 创建的自定义资源的数量吗?

问题描述

如果我有这样的自定义资源定义:

$ kubectl get crd unifiedpushservers.push.aerogear.org
NAME                                   CREATED AT
unifiedpushservers.push.aerogear.org   2019-06-05T13:39:23Z

是否可以创建一个ResourceQuota将此类自定义资源的计数限制为 1,拒绝尝试创建其他资源的尝试?

这是我到目前为止所尝试的:

apiVersion: v1
kind: ResourceQuota
metadata:
  name: unifiedpushservers-limit
spec:
  hard:
    count/unifiedpushservers.push.aerogear.org: 1

虽然这被接受和创建,但计数似乎不起作用,我能够创建多个实例。


编辑:如果我引用规范中字段的整数值,如下所示:

apiVersion: v1
kind: ResourceQuota
metadata:
  name: unifiedpushservers-limit
spec:
  hard:
    count/unifiedpushservers.push.aerogear.org: "1"

然后我在尝试创建一个实例时收到以下错误消息:

Error from server (Forbidden): error when creating "./deploy/crds/push_v1alpha1_unifiedpushserver_cr.yaml": unifiedpushservers.push.aerogear.org "example-unifiedpushserver" is forbidden: status unknown for quota: unifiedpushservers-limit

这感觉像是进步,但我可能会走得更远,我不确定。

另外,我应该提到我正在 OpenShift v3.11 集群上尝试这个,它返回以下 Kubernetes 版本信息:

$ kubectl version
Client Version: version.Info{Major:"1", Minor:"11+", GitVersion:"v1.11.0+d4cacc0", GitCommit:"d4cacc0", GitTreeState:"clean", BuildDate:"2018-10-10T16:38:01Z", GoVersion:"go1.10.3", Compiler:"gc", Platform:"linux/amd64"}
Server Version: version.Info{Major:"1", Minor:"11+", GitVersion:"v1.11.0+d4cacc0", GitCommit:"d4cacc0", GitTreeState:"clean", BuildDate:"2018-11-09T15:12:26Z", GoVersion:"go1.10.3", Compiler:"gc", Platform:"linux/amd64"}

标签: kubernetesopenshift

解决方案


由于kubernetes 1.15对象计数配额现在支持使用语法的命名空间自定义资源count/<resource>.<group>

例如,要在 example.com API 组中的小部件自定义资源上创建配额,请使用 count/widgets.example.com。

对象计数配额


推荐阅读