GKE扩展内存和Kubernetes内存可分配

时间:2018-04-22 10:49:38

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

在GKE上创建群集时,可以创建Custom Instance Types。将8GB内存添加到n1-standard-1 Kubernetes时,仅显示可分配6.37GB的内存。这是为什么?

请求的内存包括kube-system命名空间中的所有pod,那么这个额外的内存在哪里?

1 个答案:

答案 0 :(得分:4)

来自documentation的Quotinig:

  

节点可分配资源

     

注意需要一些节点资源来运行Kubernetes Engine和Kubernetes资源,以使该节点作为集群的一部分运行。因此,您可能会注意到节点的总资源(在机器类型文档中指定)与Kubernetes Engine中节点的可分配资源之间存在差异

     

注意:由于较大的机器类型倾向于运行更多容器(并且通过扩展,Kubernetes pod),因此Kubernetes Engine为群集流程预留的资源量会向更大的机器扩展。

     

警告:在1.7.6之前的Kubernetes Engine节点版本中,保留资源不计入节点的可分配资源总量。   如果您的节点最近已升级到1.7.6版,则它们可能看起来可用资源较少,因为Kubernetes Engine现在显示可分配资源。这可能会导致您的群集节点出现过度使用,因此您可能希望调整群集大小。

例如,执行某些测试,您可以进行双重检查:

Machine type            Memory(GB)  Allocatable(GB) CPU(cores)  Allocatable(cores)

g1-small                     1.7        1.2          0.5         0.47
n1-standard-1 (default)      3.75       2.7          1           0.94
n1-standard-2                7.5        5.7          2           1.93
n1-standard-4               15         12            4           3.92
n1-standard-8               30         26.6          8           7.91
n1-standard-16              60         54.7         16          15.89
  

注意:为可分配资源列出的值不考虑kube-system pod使用的资源,其数量因每个Kubernetes版本而异。这些系统盒通常在每个节点上占用额外的400m CPU和400mi内存(值是近似值)。如果您需要对每个节点上的可用资源进行精确计算,建议您直接检查群集。

更新

Kubernetes文档中还有关于为何使用这些资源的官方解释:

  

kube-reserved用于捕获kubernetes系统守护进程的资源预留,例如kubelet,容器运行时,节点问题检测器等。它不是为系统守护程序保留资源,它们作为运行方式运行豆荚。 kube-reserved通常是节点上pod密度的函数。此性能仪表板在多个pod密度级别公开了kubelet和docker引擎的cpu和内存使用情况。这篇博客文章解释了如何解释仪表板以提出合适的保加利亚预订保留。

如果您有兴趣了解更多信息,我建议您去this页面。