1. 程式人生 > >配置Kubernetes名稱空間的預設記憶體請求和限制

配置Kubernetes名稱空間的預設記憶體請求和限制

如何配置名稱空間的預設記憶體請求和限制。如果在具有預設記憶體限制的名稱空間中建立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
建立Pod
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未指定其自己的記憶體限制,則會為其指定預設限制,然後可以允許它在受配額限制的名