Kubernetes配置命名空间的默认内存请求和限制

作者: admin 分类: K8S 发布时间: 2018-09-16 15:05

 

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


Linux 命令大全

如果觉得我的文章对您有用,请随意打赏。您的支持将鼓励我继续创作!