导读 如何配置命名空间的默认内存请求和限制。如果在具有默认内存限制的命名空间中创建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 //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 //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 //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未指定其自己的内存限制,则会为其指定默认限制,然后可以允许它在受配额限制的命名空间中运行。

原文来自:

本文地址://gulass.cn/kubernetes-memory-requests.html编辑:xiangping wu,审核员:逄增宝

Linux大全:

Linux系统大全:

红帽认证RHCE考试心得: