Kubernetes中如何使用CPU請求和限制? - daniele

banq發表於2020-09-25

Kubernetes中如何使用CPU請求和限制?
 
CPU請求規定了下面引數:
  1. 所需的最低CPU
  2. 如果有可用的CPU,我可以使用多少?

示例:
  • 在具有1個CPU的單個節點中
  • 如果將100Mi分配給containerA,200Mi分配給containerB
  • 並且它們使用100%CPU

容器A將使用333Mi和另一個則使用666Mi
 
請求Request適合於:
  1. 設定基線(至少給我多少 CPU)
  2. 設定Pod之間的關係(此Pod A使用的CPU是另一個CPU的兩倍)

請求對設定硬限制沒有用,因此,這時您還需要CPU限制。
 
設定CPU限制時,您要定義一個時間段以及該時間段內可以擁有的CPU數量(也稱為配額)。示例:
-週期:100000微秒
-配額:10000微秒
我只能使用CPU的時間限制是10000/100000秒內。也簡稱為“ 100Mi”
 
如果您的容器有硬限制並想要更多的CPU,則它必須等待下一個週期。因為您的處理已被限制。那麼,您應該如何在Pod中使用CPU請求和限制?
 
對於請求,請按以下方式計算最小的CPU單位:

REQUEST = 節點數量 * 1000 / 每個節點的最大PODS數量

對於1個vCPU節點和最多10個Pod,即1 * 1000/10 = 100Mi請求。
分配最小的單元或倍數它到您的容器。
假如我不知道容器A需要多少CPU,但我知道它的CPU密集度是容器B的兩倍。
  • B的CPU請求:100Mi(1個單位)
  • A的CPU請求:200Mi(2個單位)

如果容器使用更多的CPU,則對於所有可用CPU,它們將保持1:2的比率
 
對於限制,
  • 您的應用可能已經具有“硬”限制。例如,Node.js是單執行緒的,最多使用1個核心
  • 您可能擁有:限制=節點CPU-(保留的CPU)

如果需要更具體,則可以採用概要分析。將限制設定為99%+ 50%

相關文章