代码之家  ›  专栏  ›  技术社区  ›  AndrewMcLagan

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

  •  6
  • AndrewMcLagan  · 技术社区  · 7 年前

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

    请求的内存包括 kube-system 命名空间,那么这个额外的内存将流向何处?

    1 回复  |  直到 7 年前
        1
  •  9
  •   GalloCedrone    7 年前

    引用自 documentation :

    节点可分配资源

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

    笔记 :随着较大的机器类型倾向于运行更多的容器(扩展为Kubernetes吊舱),对于较大的机器,Kubernetes引擎为集群进程保留的资源量会向上扩展。

    小心 :在1.7.6之前的Kubernetes引擎节点版本中,保留资源未计入节点的总可分配资源。 如果您的节点最近升级到了版本1.7.6,那么它们的可用资源可能会更少,因为Kubernetes引擎现在显示可分配的资源。这可能会导致集群的节点过度提交,因此您可能需要调整集群的大小。

    例如,执行一些可以双重检查的测试:

    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 pods使用的资源,其数量随Kubernetes版本的不同而变化。这些系统吊舱通常在每个节点上额外占用400m CPU和400mi内存(值为近似值)。如果需要对每个节点上的可用资源进行准确的统计,建议您直接检查集群。

    更新

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

    kube reserved旨在捕获kubernetes系统守护进程的资源保留,如kubelet、容器运行时、节点问题检测器等。 它不是要为系统守护进程保留资源 作为吊舱运行。kube reserved通常是节点上pod密度的函数。此性能仪表板显示kubelet和docker引擎在多个pod密度级别上的cpu和内存使用情况。这篇博文解释了如何将仪表板解释为提供合适的kube保留预订。

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