為容器指定cpu和記憶體資源(k8s官翻)
這篇文章將展示如何在k8s叢集的pod中為容器指定CPU和記憶體資源。
開始之前
你必須有一個k8s叢集,並且配置好kubectl
命令列工具。如果你還沒有一個叢集,你可以使用建立一個。
在容器中指定CPU和記憶體資源
當你建立一個Pod,你可以在這個Pod的容器中指定CPU和記憶體資源。你也可以設定CPU和記憶體的資源限額。要指定CPU和記憶體資源可以在配置檔案中填寫resources:requests
域。要設定CPU和記憶體的資源限額,填寫resources:limits
域。
只有當這個節點的可用CPU和記憶體量滿足Pod中所有容器的CPU和記憶體的請求量之和後,K8s才會把該Pod排程到此節點。並且如果一個Pod在一個節點執行,K8s 不允許容器的CPU和記憶體使用量超出你指定的限額。如果一個容器超出了它的記憶體限額,它將被終止。如果一個容器超出了它的CPU限額,它將出讓它的時間片。
在本練習中,建立了一個Pod,執行一個容器。Pod的配置檔案中指定了0.25 CPU和64Mi記憶體。並且設定了CPU的上限是1,記憶體的上限是128Mi。下面是該Pod的配置檔案內容:
apiVersion: v1 kind: Pod metadata: name: cpu-ram-demo spec: containers: - name: cpu-ram-demo-container image: gcr.io/google-samples/node-hello:1.0 resources: requests: memory: "64Mi" cpu: "250m" limits: memory: "128Mi" cpu: "1"
根據該
YAML
檔案建立一個Pod:
kubectl create -f
顯示該Pod的資訊:
kubectl describe pod cpu-ram-demo
輸出類似於這樣:
Name: cpu-ram-demo ... Containers: cpu-ram-demo-container: ... Limits: cpu: 1 memory: 128Mi Requests: cpu: 250m memory: 64Mi
CPU和記憶體的單位
CPU的測量單位是cpus
,允許分數值。你可以使用字首m
來表示mili
(千分之一)。例如100m
cpu就是100 milicpu
,等價於0.1CPU。
記憶體的測量單位是位元組。你可以使用純整數來表示記憶體,也可以使用一些字首:E, P, T, G, M, K, Ei, Pi, Ti, Gi, Mi, Ki. 例如, 下面近乎表示相同的值:
128974848, 129e6, 129M , 123Mi
如果你不確定該指定多少資源,你可以先載入這個應用而不指定任何資源,然後使用 來估算個近似值。
如果一個容器超出了記憶體資源限額,它將終止於記憶體溢位。你可以指定一個比你需要使用的高一點的值來提高可靠性。
你應該保證一個pod能使用你指定的那麼多的資源。參考來檢視資源請求和限額的區別。
假如你未指定限額和請求
如果你沒有指定記憶體限額,K8s將不會設定容器記憶體使用量的上限。容器可以使用它所在的節點的所有可用記憶體。相似的,如果你沒有設定CPU限額,K8s也不會設定CPU資源的上限,容器可以使用所在節點的所有可用CPU資源。
根據預設的限額範圍使用預設的限額。你可以使用kubectl describe limits
來檢視預設的限額。
你為什麼要使用限額,參閱 。
如果你不指定CPU和記憶體請求會發生什麼,參閱 。
原文連結:
作者:Mark_Zhang
連結:
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/151/viewspace-2820559/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- docker的資源控制(CPU、記憶體、IO)Docker記憶體
- 如何使用 Docker 來限制 CPU、記憶體和 IO等資源?Docker記憶體
- 微服務體系-docker容器cpu記憶體管理微服務Docker記憶體
- K8S(18)容器環境下資源限制與jvm記憶體回收K8SJVM記憶體
- 在Docker中,如何控制容器佔用系統資源(CPU,記憶體)的份額?Docker記憶體
- 利用Kubernetes名稱空間來管理記憶體和CPU資源(二)記憶體
- 利用Kubernetes名稱空間來管理記憶體和CPU資源(一)記憶體
- CPU快取和記憶體屏障快取記憶體
- CPU和記憶體如何互動的記憶體
- iOS 任務排程器:為 CPU 和記憶體減負iOS記憶體
- 如何使用阿里雲容器服務保障容器的記憶體資源質量阿里記憶體
- 記憶體CPU監控記憶體
- CPU快取記憶體快取記憶體
- 在K8s中調整JVM提高CPU和記憶體利用率 - AnuragK8SJVM記憶體
- Oracle 12c系列(四)|資源隔離之IO、記憶體、CPUOracle記憶體
- 資源記憶體佔用記憶體
- Docker之CPU和記憶體磁碟設定(八)Docker記憶體
- 面試官:為什麼需要Java記憶體模型?面試Java記憶體模型
- 談談CPU快取記憶體快取記憶體
- 多核cpu、cpu快取記憶體、快取一致性協議、快取行、記憶體快取記憶體協議
- Netty 中的記憶體分配淺析-資料容器Netty記憶體
- 深入理解Kubernetes資源限制:記憶體記憶體
- Redis記憶體淘汰策略配置翻譯Redis記憶體
- linux查詢作業系統資訊(CPU、記憶體、硬碟)Linux作業系統記憶體硬碟
- 效能調優(cpu/IO/JVM記憶體分析)JVM記憶體
- PowerShell 指令碼來監控 CPU、記憶體和磁碟使用情況:指令碼記憶體
- 如何用bash shell 指令碼監控 Linux記憶體、磁碟和 CPU?指令碼Linux記憶體
- Java記憶體區域和記憶體模型Java記憶體模型
- 直接記憶體和堆記憶體誰快記憶體
- 記憶體溢位和記憶體洩露記憶體溢位記憶體洩露
- k8s檢視指定pods裡面的容器K8S
- linux記憶體管理(一)實體記憶體的組織和記憶體分配Linux記憶體
- 【記憶體洩漏和記憶體溢位】JavaScript之深入淺出理解記憶體洩漏和記憶體溢位記憶體溢位JavaScript
- JVM記憶體分為3個記憶體空間JVM記憶體
- K8s 裡如何優雅地使用 /dev/shm 實現容器間共享記憶體K8Sdev記憶體
- CPU、記憶體、磁碟IO之間的關係記憶體
- cpu —>記憶體—>硬碟這種方式是不是更慢?記憶體硬碟
- 優化.NET 應用程式 CPU 和記憶體的11 個實踐優化記憶體