配置Kubernetes名稱空間的預設記憶體請求和限制
阿新 • • 發佈:2019-06-22
如何配置名稱空間的預設記憶體請求和限制。如果在具有預設記憶體限制的名稱空間中建立Container,並且Container未指定其自己的記憶體限制,則會為Container分配預設記憶體限制。Kubernetes在某些條件下分配預設記憶體請求。 |
要檢查版本,請輸入kubectl version。
群集中的每個節點必須至少具有2 GiB的記憶體。
建立名稱空間建立名稱空間,以便在此練習中建立的資源與群集的其餘部分隔離。
kubectl create namespace default-mem-example建立LimitRange和Pod
這是LimitRange物件的配置檔案。配置指定預設記憶體請求和預設記憶體限制。
apiVersion: v1 kind: LimitRange metadata: name: mem-limit-range spec: limits: - default: memory: 512Mi defaultRequest: memory: 256Mi type: Container
在default-mem-example名稱空間中建立LimitRange:
kubectl create -f https://k8s.io/examples/admin/resource/memory-defaults.yaml --namespace=default-mem-example
現在,如果在default-mem-example名稱空間中建立了Container,並且Container沒有為記憶體請求和記憶體限制指定自己的值,則會向Container提供256 MiB的預設記憶體請求,預設記憶體限制為512 MiB 。
這是具有一個Container的Pod的配置檔案。Container未指定記憶體請求和限制。
apiVersion: v1 kind: Pod metadata: name: default-mem-demo spec: containers: - name: default-mem-demo-ctr image: nginx
kubectl create -f https://k8s.io/examples/admin/resource/memory-defaults-pod.yaml --namespace=default-mem-example檢視Pod的詳細資訊
kubectl get pod default-mem-demo --output=yaml --namespace=default-mem-example
輸出顯示Pod的Container具有256 MiB的記憶體請求和512 MiB的記憶體限制。這些是LimitRange指定的預設值。
containers: - image: nginx imagePullPolicy: Always name: default-mem-demo-ctr resources: limits: memory: 512Mi requests: memory: 256Mi刪除你的Pod
kubectl delete pod default-mem-demo --namespace=default-mem-example
如果指定Container的限制但不指定其請求,該怎麼辦?
這是具有一個Container的Pod的配置檔案。Container指定記憶體限制,但不指定請求:
apiVersion: v1 kind: Pod metadata: name: default-mem-demo-2 spec: containers: - name: default-mem-demo-2-ctr image: nginx resources: limits: memory: "1Gi"建立Pod
kubectl create -f https://k8s.io/examples/admin/resource/memory-defaults-pod-2.yaml --namespace=default-mem-example檢視Pod的詳細資訊
kubectl get pod default-mem-demo-2 --output=yaml --namespace=default-mem-example
輸出顯示Container的記憶體請求設定為與其記憶體限制匹配。請注意,未向Container分配預設的記憶體請求值256Mi。
resources: limits: memory: 1Gi requests: memory: 1Gi預設記憶體限制和請求的動機
如果您的名稱空間具有資源配額,則為記憶體限制設定預設值會很有幫助。以下是資源配額對名稱空間施加的兩個限制:
在名稱空間中執行的每個Container都必須具有自己的記憶體限制。
名稱空間中所有Container使用的記憶體總量不得超過指定的限制。
如果Container未指定其自己的記憶體限制,則會為其指定預設限制,然後可以允許它在受配額限制的名