kubernetes實踐之四十七:ResourceQuota Controller
一: 簡介
資源配額管理(ResourceQuota Controller)確保了指定的資源物件在任何時候都不會超量佔用系統物理資源,避免了由於某些業務程式的設計或實現的缺陷導致整個系統執行紊亂,甚至意外當機,對整個叢集的平穩執行和穩定性有非常重要的作用。
目前Kubernetes支援如下三個層次的資源配額管理:
1.容器級別,可以對CPU和Memory進行限制。
2.Pod級別,可以對一個Pod內所有容器的可用資源進行限制。
3.Namespace級別
a.Pod數量
b.Replication Controller數量
c.Service 數量
d.ResourceQuota數量
e.Secret數量
f.PV 數量
二:資源型別
1. CPU 和 memory 都是資源型別。資源型別具有基本單位。CPU的單位是core,memory的單位是byte。CPU和記憶體統稱為計算資源,也可以稱為資源。計算資源的數量是可以被請求、分配和消耗的可測量的。
2.Pod中的每個容器都可以指定以下的?個或者多個值:
三:詳細說明
Kubernetes的配額管理是通過Admission Control 來控制的,當前提供了兩種方式的配額約束,分別是LimitRanger與ResourceQuota. 其中LimitRanger用於Pod和Container上,而ResourceQuota則作用於Namespace上。
1.如果在Pod定義中同時宣告瞭LimitRanger,則使用者通過API Server請求建立或修改資源時,Admission Control會計算當前配額的使用情況,如果不符合配額約束,則建立物件失敗。
2.對於定義了ResourceQuota的Namespace, ResourceQuota Controller元件則負責定期統計和生成該Namespace下的各類物件的資源使用總量,統計結果包括Pod,Service,RC,Secret和PV等物件例項個數。以及該Namespace下所有Container例項所使用的資源量(目前包括CPU和記憶體)。然後將這些統計結果寫入etcd的resourceQuotaStatusStorage目錄中。
3.統計資訊被Admission Control使用,以確保相關Namespace下的資源配額總量不會超過ResourceQuota中的限定值。
資源配額管理(ResourceQuota Controller)確保了指定的資源物件在任何時候都不會超量佔用系統物理資源,避免了由於某些業務程式的設計或實現的缺陷導致整個系統執行紊亂,甚至意外當機,對整個叢集的平穩執行和穩定性有非常重要的作用。
目前Kubernetes支援如下三個層次的資源配額管理:
1.容器級別,可以對CPU和Memory進行限制。
2.Pod級別,可以對一個Pod內所有容器的可用資源進行限制。
3.Namespace級別
a.Pod數量
b.Replication Controller數量
c.Service 數量
d.ResourceQuota數量
e.Secret數量
f.PV 數量
二:資源型別
1. CPU 和 memory 都是資源型別。資源型別具有基本單位。CPU的單位是core,memory的單位是byte。CPU和記憶體統稱為計算資源,也可以稱為資源。計算資源的數量是可以被請求、分配和消耗的可測量的。
2.Pod中的每個容器都可以指定以下的?個或者多個值:
點選(此處)摺疊或開啟
-
spec.containers[].resources.limits.cpu
-
spec.containers[].resources.limits.memory
-
spec.containers[].resources.requests.cpu
- spec.containers[].resources.requests.memory
Kubernetes的配額管理是通過Admission Control 來控制的,當前提供了兩種方式的配額約束,分別是LimitRanger與ResourceQuota. 其中LimitRanger用於Pod和Container上,而ResourceQuota則作用於Namespace上。
1.如果在Pod定義中同時宣告瞭LimitRanger,則使用者通過API Server請求建立或修改資源時,Admission Control會計算當前配額的使用情況,如果不符合配額約束,則建立物件失敗。
2.對於定義了ResourceQuota的Namespace, ResourceQuota Controller元件則負責定期統計和生成該Namespace下的各類物件的資源使用總量,統計結果包括Pod,Service,RC,Secret和PV等物件例項個數。以及該Namespace下所有Container例項所使用的資源量(目前包括CPU和記憶體)。然後將這些統計結果寫入etcd的resourceQuotaStatusStorage目錄中。
3.統計資訊被Admission Control使用,以確保相關Namespace下的資源配額總量不會超過ResourceQuota中的限定值。
點選(此處)摺疊或開啟
-
apiVersion: v1
-
kind: ResourceQuota
-
metadata:
-
namespace: lykops
-
name: lykops
-
labels:
-
project: lykops
-
app: resourcequota
-
version: v1
-
spec:
-
hard:
-
pods: 50
-
requests.cpu: 0.5
-
requests.memory: 512Mi
-
limits.cpu: 5
-
limits.memory: 16Gi
-
configmaps: 20
-
persistentvolumeclaims: 20
-
replicationcontrollers: 20
-
secrets: 20
- services: 50
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/28624388/viewspace-2155234/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- kubernetes實踐之四十八:Service Controller與Endpoint ControllerController
- 准入控制器(Admission Controller):ResourceQuota,ImagePolicyWebhookControllerWebHook
- kubernetes實踐之十一:EFK
- kubernetes實踐之六十:Cabin-Manage Kubernetes
- kubernetes實踐之五十七:PodPreset
- kubernetes實踐之五十八:CronJob
- kubernetes實踐之五十二:Helm
- kubernetes實踐之五十九:NetworkPolicy
- kubernetes實踐之十九:API概述API
- kubernetes實踐之十七:架構架構
- kubernetes實踐之八:TLS bootstrappingTLSbootAPP
- kubernetes實踐之十:Kubernetes-dashboard+Heapster+InfluxDB+GrafanaUXGrafana
- Kubernetes安裝之七:配置master之controller-managerASTController
- Egg 中 Controller 最佳實踐Controller
- Eggjs 的 Controller 最佳實踐JSController
- kubernetes實踐之四十二:StatefulSet
- kubernetes實踐之六十四:CoreDNSDNS
- kubernetes實踐之五十六:雲原生
- kubernetes實踐之五:網路模型模型
- kubernetes實踐之十二:部署Traefik Ingress
- kubernetes實踐之九:kube-dnsDNS
- GitOps實踐之kubernetes安裝argocdGitGo
- kubernetes實踐之五十五:kubectl之配置kubeconfig
- Kubernetes Controller詳解Controller
- kubernetes實踐之十四:Service Account與Secret
- kubernetes實踐之六十五:Service Mesh
- kubernetes實踐之六十二:Secret 使用
- kubernetes實踐之六十三:使用技巧
- kubernetes生產實踐之redis-clusterRedis
- 重新整理 .net core 實踐篇——— endpoint[四十七]
- kubernetes實踐之七十二:Istio之策略與遙測
- kubernetes實踐之七十三:Istio之配置請求路由路由
- kubernetes實踐之七十:Istio之流量管理(上)
- kubernetes實踐之十六:RBAC 角色訪問控制
- kubernetes實踐之四十九:Scheduler原理分析
- kubernetes實踐之四十四:Ingress詳解
- kubernetes實踐之四十三: Service詳解
- kubernetes實踐之五:Node節點安裝