分配给Pod的默认内存是多少

时间:2019-07-15 13:45:09

标签: kubernetes google-cloud-platform google-kubernetes-engine

我正在Google kubernetes引擎上设置一个说 test-pod 的广告连播。当我部署Pod并使用Google控制台查看工作负载时,默认情况下可以看到100m CPU已分配给Pod,但是看不到Pod消耗了多少内存。内存请求部分始终在此处显示0。我知道我们可以在部署YAML中限制内存限制和初始分配。但是我想知道当通过YAML未指定任何值时,pod会分配多少默认内存,以及它可以使用的最大限制是什么?

6 个答案:

答案 0 :(得分:3)

如果您的Pod上没有资源请求,则可以将其调度在任何地方,甚至是群集中最繁忙的节点,就好像您请求0个内存和0个CPU一样。如果没有资源限制,并且可以消耗其节点上的所有可用内存和CPU。

(如果不明显,那么现实的资源请求和限制是最佳实践!)

答案 1 :(得分:1)

使用metrics-server服务和kubectl top pod命令可以看到Kubernetes容器的CPU和内存使用情况:

$ kubectl top --help
...
Available Commands:
...
  pod         Display Resource (CPU/Memory/Storage) usage of pods
...

下面的Minikube示例:

minikube addons enable metrics-server

# wait 5 minutes for metrics-server to be up and running

$ kubectl top pod -n=kube-system
NAME                               CPU(cores)   MEMORY(bytes)   
coredns-fb8b8dccf-6t5k8            6m           10Mi            
coredns-fb8b8dccf-sjkvc            5m           10Mi            
etcd-minikube                      37m          60Mi            
kube-addon-manager-minikube        17m          20Mi            
kube-apiserver-minikube            55m          201Mi           
kube-controller-manager-minikube   30m          46Mi            
kube-proxy-bsddk                   1m           11Mi            
kube-scheduler-minikube            2m           12Mi            
metrics-server-77fddcc57b-x2jx6    1m           12Mi            
storage-provisioner                0m           15Mi            
tiller-deploy-66b7dd976-d8hbk      0m           13Mi            

This link有更多信息。

答案 2 :(得分:1)

  1. 您可以为单个吊舱设置限制

  2. 如果没有,则可以对整个名称空间设置限制

  3. 默认值,无限制

但是有一些滴答声:

这是一个非常不错的视图:

https://blog.balthazar-rouberol.com/allocating-unbounded-resources-to-a-kubernetes-pod

  

在Kubernetes集群中部署P​​od时,通常有2个   资源分配方面的选择:

     

在pod级别定义CPU /内存资源请求和限制

     

在名称空间级别定义默认的CPU /内存请求和限制   使用LimitRange

从Docker文档中(假设您正在使用docker runtime):

  

默认情况下,容器没有资源限制,可以用作   主机内核调度程序允许的大部分给定资源

https://docs.docker.com/v17.09/engine/admin/resource_constraints/

答案 3 :(得分:0)

在许多情况下,真正的问题不是节点太小,而是我们没有为Pod准确指定资源限制。

使用containerSpec的resources属性在每个容器的基础上设置资源限制,containerSpec是类型为ResourceRequirements的v1 api对象。每个对象都为资源类型指定“ 限制”和“ 请求”。

如果您没有为容器指定内存限制,则适用以下情况之一:

容器在其使用的内存量上没有上限。容器可以使用运行节点上的所有可用内存,从而可以调用OOM Killer。此外,如果发生OOM Kill,那么没有资源限制的容器将有更大的机会被杀死。

容器在具有默认内存限制的命名空间中运行,并且自动为容器分配了默认限制。群集管理员可以使用 LimitRange 指定内存限制的默认值。

当您设置限制而不是请求时,kubernetes会将请求默认为限制。如果您从调度程序的角度考虑它,那是有道理的。

设置正确的资源请求很重要,将资源请求设置得太低会导致节点过载。太高会使节点陷入空闲状态。

有用的文章:memory-limits

答案 4 :(得分:0)

Kubernetes不提供默认的默认资源限制。这意味着,除非您明确定义限制,否则容器将消耗无限的CPU和内存。

https://medium.com/@reuvenharrison/kubernetes-resource-limits-defaults-and-limitranges-f1eed8655474

答案 5 :(得分:0)

Kubernetes不提供默认的默认资源限制。这意味着除非您明确定义限制,否则您的容器将消耗无限的CPU和内存。

此处有更多详细信息:https://medium.com/@reuvenharrison/kubernetes-resource-limits-defaults-and-limitranges-f1eed8655474

相关问题