Kubernetes 配置API對象配額

2022-06-08 14:13 更新

配置 API 對象配額

本文討論如何為 API 對象配置配額,包括 PersistentVolumeClaim 和 Service。 配額限制了可以在命名空間中創(chuàng)建的特定類型對象的數(shù)量。 你可以在 ResourceQuota 對象中指定配額。

在開始之前

你必須擁有一個(gè) Kubernetes 的集群,同時(shí)你的 Kubernetes 集群必須帶有 kubectl 命令行工具。 建議在至少有兩個(gè)節(jié)點(diǎn)的集群上運(yùn)行本教程,且這些節(jié)點(diǎn)不作為控制平面主機(jī)。 如果你還沒有集群,你可以通過 Minikube 構(gòu)建一個(gè)你自己的集群,或者你可以使用下面任意一個(gè) Kubernetes 工具構(gòu)建:

要檢查版本,請輸入 ?kubectl version?。

創(chuàng)建命名空間

創(chuàng)建一個(gè)命名空間以便本例中創(chuàng)建的資源和集群中的其余部分相隔離。

kubectl create namespace quota-object-example

創(chuàng)建 ResourceQuota 

下面是一個(gè) ResourceQuota 對象的配置文件

apiVersion: v1
kind: ResourceQuota
metadata:
  name: object-quota-demo
spec:
  hard:
    persistentvolumeclaims: "1"
    services.loadbalancers: "2"
    services.nodeports: "0"

創(chuàng)建 ResourceQuota:

kubectl apply -f https://k8s.io/examples/admin/resource/quota-objects.yaml --namespace=quota-object-example

查看 ResourceQuota 的詳細(xì)信息:

kubectl get resourcequota object-quota-demo --namespace=quota-object-example --output=yaml

輸出結(jié)果表明在 quota-object-example 命名空間中,至多只能有一個(gè) PersistentVolumeClaim, 最多兩個(gè) LoadBalancer 類型的服務(wù),不能有 NodePort 類型的服務(wù)。

status:
  hard:
    persistentvolumeclaims: "1"
    services.loadbalancers: "2"
    services.nodeports: "0"
  used:
    persistentvolumeclaims: "0"
    services.loadbalancers: "0"
    services.nodeports: "0"

創(chuàng)建 PersistentVolumeClaim 

下面是一個(gè) PersistentVolumeClaim 對象的配置文件:

apiVersion: v1
kind: PersistentVolumeClaim
metadata:
  name: pvc-quota-demo
spec:
  storageClassName: manual
  accessModes:
    - ReadWriteOnce
  resources:
    requests:
      storage: 3Gi

創(chuàng)建 PersistentVolumeClaim:

kubectl apply -f https://k8s.io/examples/admin/resource/quota-objects-pvc.yaml --namespace=quota-object-example

確認(rèn)已創(chuàng)建完 PersistentVolumeClaim:

kubectl get persistentvolumeclaims --namespace=quota-object-example

輸出信息表明 PersistentVolumeClaim 存在并且處于 Pending 狀態(tài):

NAME             STATUS
pvc-quota-demo   Pending

嘗試創(chuàng)建第二個(gè) PersistentVolumeClaim 

下面是第二個(gè) PersistentVolumeClaim 的配置文件:

apiVersion: v1
kind: PersistentVolumeClaim
metadata:
  name: pvc-quota-demo-2
spec:
  storageClassName: manual
  accessModes:
    - ReadWriteOnce
  resources:
    requests:
      storage: 4Gi

嘗試創(chuàng)建第二個(gè) PersistentVolumeClaim:

kubectl apply -f https://k8s.io/examples/admin/resource/quota-objects-pvc-2.yaml --namespace=quota-object-example

輸出信息表明第二個(gè) PersistentVolumeClaim 沒有創(chuàng)建成功,因?yàn)檫@會超出命名空間的配額。

persistentvolumeclaims "pvc-quota-demo-2" is forbidden:
exceeded quota: object-quota-demo, requested: persistentvolumeclaims=1,
used: persistentvolumeclaims=1, limited: persistentvolumeclaims=1

說明 

下面這些字符串可被用來標(biāo)識那些能被配額限制的 API 資源:

字符串 API 對象
"pods" Pod
"services" Service
"replicationcontrollers" ReplicationController
"resourcequotas" ResourceQuota
"secrets" Secret
"configmaps" ConfigMap
"persistentvolumeclaims" PersistentVolumeClaim
"services.nodeports" NodePort 類型的 Service
"services.loadbalancers" LoadBalancer 類型的 Service

清理 

刪除你的命名空間:

kubectl delete namespace quota-object-example


以上內(nèi)容是否對您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號
微信公眾號

編程獅公眾號