【问题标题】:GKE extended memory and Kubernetes memory allocatableGKE 扩展内存和 Kubernetes 内存可分配
【发布时间】:2018-10-02 13:18:56
【问题描述】:

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

请求的内存包括 kube-system 命名空间中的所有 pod,那么这些额外的内存去哪儿了?

【问题讨论】:

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


    【解决方案1】:

    引用documentation:

    节点可分配资源

    请注意,运行 Kubernetes 引擎和使该节点作为集群一部分运行所需的 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 版本而异。这些系统 pod 通常在每个节点上额外占用 400m CPU 和 400mi 内存(数值为近似值)。如果您需要准确统计每个节点上的可用资源,建议您直接检查集群。

    更新

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

    kube-reserved 旨在为 kubernetes 系统守护进程(如 kubelet、容器运行时、节点问题检测器等)捕获资源预留。它并不意味着为运行为的系统守护进程预留资源豆荚。 kube-reserved 通常是节点上 pod 密度的函数。此性能仪表板在多个 pod 密度级别公开 kubelet 和 docker 引擎的 cpu 和内存使用情况。这篇博文解释了如何解释仪表板以提供合适的 kube-reserved 预留。

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

    【讨论】:

      猜你喜欢
      • 2016-04-21
      • 1970-01-01
      • 2020-10-12
      • 2018-05-18
      • 1970-01-01
      • 1970-01-01
      • 2020-07-01
      • 2012-11-28
      • 1970-01-01
      相关资源
      最近更新 更多