系列目录
前面说过, 资源配额限制在指定名称空间下, 对资源对象数量和特定类型的资源的限制, 你可以在 ResourceQuota 中指定配额
创建名称空间
我们创建一个新的名称空间来演示
kubectl create namespace quota-object-example
创建资源配额
以下是资源配额对象的配置
- admin/resource/quota-objects.YAML
- apiVersion: v1
- kind: ResourceQuota
- metadata:
- name: object-quota-demo
- spec:
- hard:
- persistentvolumeclaims: "1"
- services.loadbalancers: "2"
- services.nodeports: "0"
通过 kubectl apply 创建配额对象
kubectl apply -f https://k8s.io/examples/admin/resource/quota-objects.yaml --namespace=quota-object-example
查看资源配额详细信息
- kubectl get resourcequota object-quota-demo --namespace=quota-object-example --output=YAML
- status:
- hard:
- persistentvolumeclaims: "1"
- services.loadbalancers: "2"
- services.nodeports: "0"
- used:
- persistentvolumeclaims: "0"
- services.loadbalancers: "0"
- services.nodeports: "0"
输出信息显示, 在 quota-object-example 名称空间下, 只允许最多有一个 PersistentVolumeClaim, 最多有两个 LoadBalancer 类型的服务, 并且不允许有 NodePort 类型的服务
创建一个
PersistentVolumeClaim
以下是创建 PersistentVolumeClaim 对象的文件
- kind: PersistentVolumeClaim
- apiVersion: v1
- metadata:
- name: pvc-quota-demo
- spec:
- storageClassName: manual
- accessModes:
- - ReadWriteOnce
- resources:
- requests:
- storage: 3Gi
通过命令创建它
kubectl apply -f https://k8s.io/examples/admin/resource/quota-objects-pvc.yaml --namespace=quota-object-example
确认已经创建:
- kubectl get `persistentvolumeclaims` --namespace=quota-object-example
- NAME STATUS
- pvc-quota-demo Pending
输出信息显示 persistentvolumeclaims 对象已经创建并且状态为 pending
下面尝试再创建一个 PersistentVolumeClaim
- kind: PersistentVolumeClaim
- apiVersion: v1
- metadata:
- name: pvc-quota-demo-2
- spec:
- storageClassName: manual
- accessModes:
- - ReadWriteOnce
- resources:
- requests:
- storage: 4Gi
执行创建命令
- kubectl apply -f https://k8s.io/examples/admin/resource/quota-objects-pvc-2.yaml --namespace=quota-object-example
- persistentvolumeclaims "pvc-quota-demo-2" is forbidden:
- exceeded quota: object-quota-demo, requested: persistentvolumeclaims=1,
- used: persistentvolumeclaims=1, limited: persistentvolumeclaims=1
通过输出信息可以看到, 第二个 persistantPersistentVolumeClaim 没有被创建, 因为超过了资源配额
注: 以下字符串类型可以被用来可以被资源配额使用
字符串 | API 对象 |
---|---|
"pods" | Pod |
"services | Service |
"replicationcontrollers" | ReplicationController |
"resourcequotas" | ResourceQuota |
"secrets" | Secret |
"configmaps" | ConfigMap |
"persistentvolumeclaims" | PersistentVolumeClaim |
"services.nodeports" | Service of type NodePort |
"services.loadbalancers" | Service of type LoadBalancer |
删除资源配额
kubectl delete namespace quota-object-example
来源: https://www.cnblogs.com/tylerzhou/p/11031693.html