kubernetes實踐之四十七:ResourceQuota Controller

百聯達發表於2018-05-28
一: 簡介

資源配額管理(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中的每個容器都可以指定以下的?個或者多個值:

點選(此處)摺疊或開啟

  1. spec.containers[].resources.limits.cpu
  2. spec.containers[].resources.limits.memory
  3. spec.containers[].resources.requests.cpu
  4. 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中的限定值。

點選(此處)摺疊或開啟

  1. apiVersion: v1
  2. kind: ResourceQuota
  3. metadata:
  4.   namespace: lykops
  5.   name: lykops
  6.   labels:
  7.     project: lykops
  8.     app: resourcequota
  9.     version: v1
  10. spec:
  11.   hard:
  12.     pods: 50
  13.     requests.cpu: 0.5
  14.     requests.memory: 512Mi
  15.     limits.cpu: 5
  16.     limits.memory: 16Gi
  17.     configmaps: 20
  18.     persistentvolumeclaims: 20
  19.     replicationcontrollers: 20
  20.     secrets: 20
  21.     services: 50



來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/28624388/viewspace-2155234/,如需轉載,請註明出處,否則將追究法律責任。

相關文章