我可以限制可以使用 ResourceQuota 创建的我自己的自定义资源的数量吗?

Ger*_*yan 0 openshift kubernetes

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

$ kubectl get crd unifiedpushservers.push.aerogear.org
NAME                                   CREATED AT
unifiedpushservers.push.aerogear.org   2019-06-05T13:39:23Z
Run Code Online (Sandbox Code Playgroud)

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

这是我迄今为止尝试过的:

apiVersion: v1
kind: ResourceQuota
metadata:
  name: unifiedpushservers-limit
spec:
  hard:
    count/unifiedpushservers.push.aerogear.org: 1
Run Code Online (Sandbox Code Playgroud)

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


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

apiVersion: v1
kind: ResourceQuota
metadata:
  name: unifiedpushservers-limit
spec:
  hard:
    count/unifiedpushservers.push.aerogear.org: "1"
Run Code Online (Sandbox Code Playgroud)

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

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
Run Code Online (Sandbox Code Playgroud)

这感觉像是进步,但我可能会越来越远,我不确定。

另外,我应该提到我正在 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"}
Run Code Online (Sandbox Code Playgroud)

Sur*_*noi 5

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

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

对象计数配额