1. 程式人生 > >1-1 分配內存資源給容器和POD

1-1 分配內存資源給容器和POD

resource quest out mage create round rgs contain 啟動

這一小節講解如何分配內存請求和對一個容器做內存限制。一個容器被保證擁有足夠的內存可以處理請求,但是也不允許使用超過限制的內存。

開始之前

需要擁有一個k8s集群
需要安裝好一個kubectl 工具,並且能夠與集群通信。

如果沒有準備好,你可以使用minikube或者使用以下的練習場地。

https://www.katacoda.com/courses/kubernetes/playground

http://labs.play-with-k8s.com/

可以使用以下命令,檢測版本

kubectl version

集群中的每個節點,至少擁有300MB的內存。

本文中的一些步驟要求你在集群中有運行 metrics-server 的服務,如果你沒有運行,你可以跳過這些步驟。

如果你使用的是minikube ,你可以使用以下命令來啟用:

minikube addons enable metrics-server

檢查 metrics-server是否運行,或者其它提供 metrics api 資源 (metrics.k8s.io),你可以使用以下的命令

kubectl get apiservices

如果 metrics api 資源是可用的,會響應以下內容:

NAME
v1beta1.metrics.k8s.io

創建命名空間

創建命名空間來保證當前的測試環境和集群的其它環境的隔離的。

定義一個內存請求和內存限制

定義一個內存請求:
resources:requests

定義一個內存限制:
resources:limits

在這個練習中,你創建了一個POD包含一個容器,容器申請了100MB的內存,並且設置了200MB內存限制。

apiVersion: v1
kind: Pod
metadata:
name: memory-demo
namespace: mem-example
spec:
containers:
name: memory-demo-ctr
image: polinux/stress
resources:
limits:
memory: "200Mi"
requests:
memory: "100Mi"
command: ["stress"]

args: ["--vm", "1", "--vm-bytes", "150M", "--vm-hang", "1"]

args是 提供容器啟動的參數。

"--vm-bytes", "150M" 告訴容器分配多少內存

創建一個POD

kubectl create -f https://k8s.io/examples/pods/resource/memory-request-limit.yaml --namespace=mem-example

驗證POD是否運行

kubectl get pod memory-demo --namespace=mem-example

查看POD的詳細信息,並輸出到yaml

kubectl get pod memory-demo --output=yaml --namespace=mem-example

獲取POD的技術指標
kubectl top pod memory-demo --namespace=mem-example

顯示的內存大小是 162,900,000 bytes ,大約是150MB,大於分配的100MB內存,小於200MB的內存限制。

NAME CPU(cores) MEMORY(bytes)
memory-demo <something> 162856960

刪除POD

kubectl delete pod memory-demo --namespace=mem-example

1-1 分配內存資源給容器和POD